বিবিধ

মাইক্রোকন্ট্রোলারগুলিতে কোড অপ্টিমাইজেশন

লেখক: Laura McKinney
সৃষ্টির তারিখ: 4 এপ্রিল 2021
আপডেটের তারিখ: 16 মে 2024
Anonim
মাইক্রোকন্ট্রোলারের জন্য সি অপ্টিমাইজ করা - সেরা অনুশীলন - খেম রাজ, কমকাস্ট আরডিকে
ভিডিও: মাইক্রোকন্ট্রোলারের জন্য সি অপ্টিমাইজ করা - সেরা অনুশীলন - খেম রাজ, কমকাস্ট আরডিকে

কন্টেন্ট

এই ডিভাইসগুলিতে বিস্তৃত অন্তর্দৃষ্টি অর্জন করে লেখক dsPic মাইক্রো-কন্ট্রোলারদের সাথে তার চূড়ান্ত বছরের ইঞ্জিনিয়ারিং প্রকল্পটি সম্পন্ন করেছেন।

একটি মাইক্রোকন্ট্রোলারের সি-ভাষা কোডের জন্য কয়েকটি উন্নত অ্যাপ্লিকেশনগুলিতে অপ্টিমাইজেশন প্রয়োজন হতে পারে। এই কোড অপটিমাইজেশন দুটি গুরুত্বপূর্ণ জিনিস হ্রাস করতে অনুশীলন করা হয়:

  1. কোড আকার: মাইক্রোকন্ট্রোলাররা তাদের র‌্যামের সীমিত আকারের কারণে সীমিত ডেটা এবং নির্দেশাবলী সংরক্ষণ করতে পারে। সুতরাং কোডটি অপ্টিমাইজ করা দরকার, যাতে উপলভ্য নির্দেশাবলী এবং ডেটা মেমরিটি সবচেয়ে কার্যকর উপায়ে ব্যবহার করা যায়।
  2. কোড এক্সিকিউশন টাইমস: মাইক্রোকন্ট্রোলারগুলি ক্রমানুসারে ডিভাইস যা একবারে একটি নির্দেশ কার্যকর করে। প্রতিটি অ্যাসেম্বলি নির্দেশাবলী নিজেই চালিত করতে নির্দিষ্ট সংখ্যক ঘড়ি চক্র গ্রহণ করে। সুতরাং কোডটি কমপক্ষে সংখ্যক ঘড়ির চক্র বা সমাবেশ নির্দেশাবলীতে প্রয়োজনীয় কাজ সম্পাদন করে তা নিশ্চিত করার জন্য অবশ্যই কোডটি অপ্টিমাইজ করতে হবে। কোনও কোড যত কম ঘড়ির চক্র ব্যবহার করে, তত দ্রুত তা চালায়। এর অর্থ হ'ল অ্যাপ্লিকেশনগুলি দ্রুত চলতে পারে কারণ প্রক্রিয়াকরণের সময়টি হ্রাস করা হয়।

এই নিবন্ধটিতে টিপস এবং কৌশলগুলি উপস্থাপন করা হয়েছে যা কোনও মাইক্রো-নিয়ামক কোডের আকার এবং সম্পাদনের সময় হ্রাস করতে নিযুক্ত করা যেতে পারে।


মাইক্রোচিপের এমপ্ল্যাবএক্স ডেভলপমেন্ট আইডিই উপযুক্ত যেখানে উদাহরণগুলি প্রদর্শন করতে ব্যবহৃত হবে।

পরীক্ষামূলকভাবে কোড কার্যকর করার সময় কীভাবে পরিমাপ করা যায়

আপনার কোডটি রিয়েল-টাইমে বাস্তবায়িত হতে আসলে কত সময় নেয় তার ধারণা পেতে আপনাকে পরীক্ষামূলকভাবে এটি পরিমাপ করতে হবে। একটি লজিক বিশ্লেষক কোড প্রয়োগের সময় পরিমাপ করার জন্য স্বাচ্ছন্দ্যে ব্যবহার করতে পারেন এবং আগ্রহীরা যারা ইমেলের মাধ্যমে আমার কাছ থেকে এই প্রক্রিয়াটি সম্পর্কে জিজ্ঞাসা করতে পারেন। এটার পাশে:

  • কিছু সংকলকগুলির মধ্যে একটি কোড গ্রহণ করবে এমন ঘড়ি চক্র গণনা করার ক্ষমতা রয়েছে।
  • কিছু ডিবাগার উদাহরণস্বরূপ মাইক্রোচিপ থেকে আইসিডি 3 সরাসরি স্টপওয়াচের মাধ্যমে নির্বাহের সময় পরিমাপ করতে পারে।

1. আপনার মাইক্রোকন্ট্রোলারের প্রসেসিং শক্তি এবং মেমরির আকারটি জানুন

এটি সর্বদা ঘড়ির ফ্রিকোয়েন্সি (মেগাহার্টজ) নয় যা কোনও মাইক্রো-কন্ট্রোলারের প্রসেসিং গতির সত্য চিত্র দেয়, আরও বাস্তবসম্মত পরিমাপ হ'ল এমআইপিএস (প্রতি সেকেন্ডে মেগা নির্দেশিকা) বা এমসিইউ একটি সেকেন্ডে কার্যকর করতে পারে এমন নির্দেশিকাগুলি।

এমসিইউগুলি সাধারণত হাই-এন্ড ক্যাটাগরির 60-70 এমআইপিএস থেকে 20 এমআইপিএস 8-বিট এভিআর পর্যন্ত হয়। একটি উচ্চতর এমআইপিএস মাইক্রো-কন্ট্রোলার কম ব্যয় হওয়া ডিভাইসটি আরও ব্যয়বহুল হওয়ার সম্ভাবনা রয়েছে তাই এখানে আপনার ব্যয় এবং প্রক্রিয়াজাতকরণের গতির মধ্যে একটি বাণিজ্য বন্ধ রয়েছে।


মাইক্রো-কন্ট্রোলারগুলির ডেটা এবং প্রোগ্রাম কোড সংরক্ষণের জন্য পৃথক মেমরি থাকে। এগুলির উভয়ের আকার ডেটাশিট থেকে পাওয়া যাবে। আপনার কোডটি যথেষ্ট পরিমাণে বড় হলে আপনার বড় মেমরির আকারের একটি এমসিইউ প্রয়োজন হতে পারে।

কোডের আকারের অনুকূলকরণের জন্য ভেরিয়েবলগুলির পছন্দ

মাইক্রো-নিয়ন্ত্রকদের সীমিত ডেটা মেমরি থাকে, সাধারণত 1 থেকে 4 কেবিটস পর্যন্ত। এক্ষেত্রে সঞ্চিত তারিখের প্রত্যাশিত পরিসর অনুযায়ী সর্বাধিক উপযুক্ত পরিবর্তনশীল প্রকারটি চয়ন করা বুদ্ধিমানের কাজ। নীচের টেবিলটি এই পরিবর্তনগুলি সংক্ষিপ্তসার করে:

সি-ভাষায় ব্যবহৃত ভেরিয়েবলের সংক্ষিপ্তসার।

পরিবর্তনশীল প্রকারবাইট আকারেব্যাপ্তি

বুল

1

কেবল 0 বা 1

চর

1


-128 থেকে 127

int

2

-32,768 থেকে 32,767 এ

স্বাক্ষরবিহীন

2

0 থেকে 65,535 এ

দীর্ঘ

4

-2,147,483,648 থেকে 2,147,483,647

ভাসা

4

যথাযথ 6 দশমিক স্থান পর্যন্ত

দ্বিগুণ

8

15 দশমিক স্থানে যথাযথ

দীর্ঘ ডাবল

10

যথাযথ 19 দশমিক স্থান পর্যন্ত

উদাহরণ:

  • যদি দুটি ভেরিয়েবল এক্স এবং ওয়াই যোগ করতে হয় এবং ফলাফলটি জেডে সংরক্ষণ করা হয় তবে জেডের মান 65,535 এর বেশি হওয়ার পরে প্রত্যাশিত হয় তবে জেড দীর্ঘ হিসাবে এবং এক্স এবং ওয়াই স্বাক্ষরযুক্ত হিসাবে ঘোষিত হতে পারে int, X এবং Y এর মানগুলিও নেতিবাচক হওয়ার আশা করা যায় না। এটি ডেটা মেমোরিতে 04 বাইট সংরক্ষণ করবে যা অন্যথায় সমস্ত ভেরিয়েবল দীর্ঘ হিসাবে ঘোষিত করা হলে ব্যবহৃত হত।
  • দুটি ভেরিয়েবল এক্স এবং ওয়াই, যার মানগুলি পুরো সংখ্যায় বিভক্ত হওয়ার আশা করা হয়, তবে বিভাগের ফলাফল একটি দশমিক ফল পেতে পারে, তারপরে এক্স এবং ওয়াইটি আন্তঃ ঘোষিত হতে পারে এবং ফলাফলটি ভাসমান বা ডাবল ঘোষিত হতে পারে তার উপর নির্ভর করে যথার্থতা প্রয়োজন।

বিপুল সংখ্যক উপাদানযুক্ত অ্যারে ঘোষণা করার সময় ডেটা টাইপের পছন্দটি গুরুত্বপূর্ণ be

৩. কোড এক্সিকিউশন সময় অনুকূলকরণের জন্য ভেরিয়েবলের পছন্দ ables

  • এটি একটি প্রতিষ্ঠিত সত্য যে ভাসমান-পয়েন্ট গণনাগুলি নির্দিষ্ট পয়েন্ট গণনার চেয়ে বেশি সময় নেয়। যেখানে দশমিক মান প্রয়োজন হয় না সেখানে ভাসমান-পয়েন্ট ভেরিয়েবল ব্যবহার করবেন না। যেখানেই সম্ভব স্বাক্ষরযুক্ত পূর্ণসংখ্যার সাথে কাজ করুন।
  • স্থানীয় ভেরিয়েবলগুলি বিশ্বব্যাপী ভেরিয়েবলের চেয়ে বেশি পছন্দ করা হয়। যদি কোনও ফাংশনে কোনও ভেরিয়েবল ব্যবহার করা হয় তবে তা অবশ্যই সেই ফাংশনেই ঘোষণা করতে হবে কারণ গ্লোবাল ভেরিয়েবল অ্যাক্সেস করা স্থানীয় ভেরিয়েবলের চেয়ে ধীর।
  • একটি 8-বিট এমসিইউ অ্যাক্সেসের জন্য দ্রুত একটি একক বাইট-আকারের ভেরিয়েবল খুঁজে পাবে এবং 16-বিট এমসিইউ উত্পন্ন ঠিকানাটির দৈর্ঘ্যের কারণে অ্যাক্সেস করতে 2-বাইট ভেরিয়েবল সহজেই খুঁজে পাবে।

৪. গাণিতিক অপারেশনগুলি অনুকূল করা

গাণিতিক ক্রিয়াকলাপগুলি নিম্নলিখিত উপায়ে অনুকূলিত করা যায়।

  1. কোনও সাইন বা অন্য কোনও ত্রিকোণমিত্রিক ফাংশন বা অন্য কোনও ক্রিয়াকলাপের মূল্যায়নের পরিবর্তে প্রাক-গণনা করা মানগুলির সন্ধানের টেবিলগুলি ব্যবহার করুন যার কোডের ফলাফল আগেই জানা যেতে পারে।
  2. যদি একটি সাইন লুক-আপ টেবিলটি ইতিমধ্যে মেমরিতে সঞ্চিত থাকে তবে কোসাইন 90 ডিগ্রির সমান অ্যারে পয়েন্টারটিকে অগ্রসর করে মূল্যায়ন করা যেতে পারে।
  3. চারটি গাণিতিক ক্রিয়াকলাপগুলির মধ্যে বিভাগ এবং গুণনটি সর্বাধিক প্রসেসিং সময় নেয়, বাস্তবে এটি ভাসমান-পয়েন্টের মানগুলির ক্ষেত্রে কয়েকশ মাইক্রো সেকেন্ড বা তার মধ্যে হতে পারে।
  4. বিভাজন এবং গুণনের পরিবর্তে বিট শিফট নির্দেশাবলী ব্যবহার করুন। একটি ডান শিফট নির্দেশ 3 2 দ্বারা বিভাজন পরিবেশন করে3 যেখানে বাম শিফট নির্দেশ 1 হিসাবে 2 দ্বারা গুণিত হবে1.

5. নিবিড় গণনার জন্য একটি ডিএসপি সক্ষম মাইক্রোকন্ট্রোলার ব্যবহার করুন

কিছু মাইক্রো-কন্ট্রোলারের একটি ডিএসপি প্রসেসিং ইউনিট থাকে তারপরে প্রচলিত এএলইউ তাদের আর্কিটেকচারে তৈরি। এই ডিএসপি ইঞ্জিনটি এএলইউর পরে ন্যূনতম ঘড়ির চক্রের (বেশিরভাগ ক্ষেত্রে একটি) বহুগুণ দ্রুত খুব দ্রুত গাণিতিক গণনা সম্পাদন করতে প্রস্তুত।

কোনও ডিএসপি প্রসেসর দ্রুত সম্পাদন করতে পারে এমন নির্দেশাবলীর পরে একটি ALU হ'ল:

  • বিট শিফট এবং আবর্তিত নির্দেশাবলী।
  • গুণ, বিভাগ এবং অন্যান্য গাণিতিক ক্রিয়াকলাপ।
  • সাইনস এবং অন্যান্য ত্রিকোণমিতিক ফাংশন মূল্যায়ন করা।
  • সমস্ত ডিএসপি অপারেশন যেমন এফএফটি, ডিএফটি, কনভোলশন এবং এফআইআর ফিল্টারিং।

একটি মাইক্রোকন্ট্রোলারের ডিএসপি ইঞ্জিন ব্যবহার করার জন্য এটি প্রয়োজন:

  • প্রকল্পে আলাদা ডিএসপি লাইব্রেরি অন্তর্ভুক্ত করা হয়েছে।
  • ফাংশনগুলির নামগুলি সি-ভাষার স্ট্যান্ডার্ড গণিত লাইব্রেরির চেয়ে আলাদা। এই গ্রন্থাগারগুলির ডকুমেন্টেশন এবং ফাংশন সম্পর্কিত নির্মাতাদের ওয়েবসাইট থেকে নেওয়া যেতে পারে।
  • ডিএসপি ইঞ্জিন একটি ভিন্ন ভেরিয়েবল টাইপ 'ভগ্নাংশ' ব্যবহার করে। ডিএসপি লাইব্রেরি ফাংশনগুলির সাথে এগিয়ে যাওয়ার আগে কীভাবে ভগ্নাংশ প্রকারের ভেরিয়েবলগুলি ব্যবহার করবেন তা শিখুন।

নোট করুন যে স্ট্যান্ডার্ড ম্যাথ লাইব্রেরি ফাংশনগুলি ডিএসপি ইঞ্জিনকে ডেকে আনবে না কারণ তারা ALU সমাবেশের নির্দেশাবলীতে অনুবাদ করে।

Inter. বাধা দিয়ে কাজ করুন

নির্দিষ্ট ফাংশন সম্পাদনের জন্য বাধা ব্যবহার করুন যেমন:

  • এডিসির মানগুলি পড়া।
  • ইউআআরটি থেকে পাঠানো এবং গ্রহণ করা।
  • পিডাব্লুএম ডিউটি ​​চক্র নিবন্ধগুলি আপডেট করা হচ্ছে।
  • CAN বা I2C যোগাযোগ করতে পারে।

ফাংশন কল বা ইনলাইন কোডের মাধ্যমে প্রধান শরীরে সঞ্চালনের তুলনায় বাধাগুলি এই ফাংশনগুলি দ্রুত সরবরাহ করবে।

বাধা কেবলমাত্র যখন প্রয়োজন হবে তখনই ট্রিগার করবে, যখন মূল শৃঙ্খলে কোড করা থাকলে কোডটি (1) লুপের প্রতিটি পুনরাবৃত্তিতে কার্যকর হবে।

7. সেরা উপলব্ধ সংকলক ব্যবহার করুন

সংকলকগণ সঠিকভাবে কনফিগার করা থাকলে কোডটি সি-ভাষা থেকে অ্যাসেম্বলি ভাষায় অনুবাদ করার সময় উপরোক্ত আলোচিত কয়েকটি অপ্টিমাইজেশন স্বয়ংক্রিয়ভাবে প্রয়োগ করতে পারে। আপনার সংকলকটিতে অপ্টিমাইজ করার বিকল্পগুলির সন্ধান করুন এবং যদি সম্ভব হয় তবে সংকলকগুলির পেশাদার সংস্করণগুলিতে আপগ্রেড করুন কারণ তারা আরও শক্তিশালী কোড অপ্টিমাইজার।

8. শর্তাধীন বিবৃতি বুদ্ধিমান ব্যবহার করুন

  • যদি-অন্য বিবৃতিগুলির একটি সিরিজ ব্যবহার করা হয় তখন সবচেয়ে সম্ভাব্য শর্তটি প্রথমে রাখে। এইভাবে এমসিইউকে সত্যিকারের অবস্থাটি খুঁজে পাওয়ার পরে সমস্ত শর্তগুলির মধ্যে স্ক্যান করতে হবে না।
  • একটি স্যুইচ-কেস স্টেটমেন্টটি সাধারণত একটি যদি-অন্যথায় দ্রুত হয়।
  • ধারাবাহিক স্টেটমেন্টের জায়গায় নেস্টেড if-অন্য স্টেটমেন্ট ব্যবহার করুন। সবচেয়ে বেশি স্টেটমেন্ট থাকা একটি যদি-অন্য ব্লককে নিকৃষ্টতম অবস্থার (শেষ) অবস্থার জন্য অনুকূল করতে ছোট ছোট সাব-শাখায় ভাগ করা যায়।

9. ইনলাইন ফাংশন ব্যবহার করুন

কোডগুলিতে কেবল একবার ব্যবহার করতে হবে এমন ফাংশনগুলি স্থির হিসাবে ঘোষণা করা যেতে পারে। এটি কম্পাইলারটি একটি ইনলাইন ফাংশনে সেই ফাংশনটিকে অনুকূল করে তুলবে এবং তাই ফাংশন কলের জন্য কোনও সমাবেশ কোড অনুবাদ করা হবে না।

  • কোনও ফাংশনটি 'স্ট্যাটিক' এর সাথে কীওয়ার্ডটি ব্যবহার করে ইনলাইন ঘোষিত হতে পারে।

10. ডিক্রেটেড লুপগুলি ব্যবহার করুন

একটি বর্ধিত লুপের তুলনায় একটি হ্রাসযুক্ত লুপ কম সমাবেশ কোড উত্পন্ন করবে।

এটি কারণ যে ইনক্রিমেন্ট লুপে লুপ সূচক সর্বাধিক মানতে পৌঁছেছে কিনা তা পরীক্ষা করতে প্রতিটি লুপের সর্বোচ্চ মানের সাথে লুপ সূচককে তুলনা করার জন্য একটি তুলনামূলক নির্দেশিকা প্রয়োজন। একটি হ্রাস লুপের বিপরীতে, এই তুলনা আর প্রয়োজন হয় না কারণ লুপ সূচকের হ্রাস প্রাপ্ত ফলাফলটি যদি শূন্যে পৌঁছে যায় তবে এসআরইজে শূন্য পতাকাটি সেট করবে।

প্রদত্ত যে লুপটি একশবার পুনরাবৃত্তি করতে হবে, লুপ থেকে একটি নির্দেশ হ্রাস করা এটি একশ বার কার্যকর করা এড়াতে পারে সুতরাং লুপটি বহুবার পুনরাবৃত্তি করতে গেলে প্রভাবটি আরও তাত্পর্যপূর্ণ হওয়ার সম্ভাবনা থাকে।

মোড়ক উম্মচন

এই টিপস সহায়ক হতে পারে তবে তাদের প্রকৃত প্রয়োগ এবং ক্ষমতা প্রোগ্রামারটির দক্ষতা এবং তার কোডে তার যে কমান্ড রয়েছে তার উপর নির্ভর করে। মনে রাখবেন, প্রোগ্রামটির আকার সর্বদা মৃত্যুদন্ডের সময়গুলি নির্ধারণ করে না, কিছু নির্দেশাবলী আরও বেশি ঘড়ির চক্র গ্রাস করতে পারে তবে অন্যটি আবার প্রোগ্রামের দক্ষতা অবশ্যই তাদের ভূমিকা পালন করবে।

এই নিবন্ধটি সঠিক এবং লেখকের জ্ঞানের সেরা and বিষয়বস্তু কেবল তথ্য বা বিনোদনমূলক উদ্দেশ্যে এবং ব্যবসায়িক, আর্থিক, আইনী বা প্রযুক্তিগত বিষয়গুলিতে ব্যক্তিগত পরামর্শ বা পেশাদার পরামর্শের বিকল্প হয় না।

আজ জনপ্রিয়

মজাদার

অ্যাপ্লিকেশন উইসইইইজি তৈরি করতে মোবাইল অ্যাপ বিল্ডারদের তালিকা
ফোন

অ্যাপ্লিকেশন উইসইইইজি তৈরি করতে মোবাইল অ্যাপ বিল্ডারদের তালিকা

বিল্ডবক্স আপনাকে নো-কোড মোবাইল গেম তৈরি করতে দেয়। এই বিল্ডার সরঞ্জামটি আপনাকে কীভাবে কোডিং করবেন তা জানার প্রয়োজন ছাড়াই 3 ডি এবং 2 ডি মোবাইল গেমগুলি ডিজাইন, বিল্ডিং এবং প্রকাশের শক্তি দেয়। এই সরঞ্...
লুবুন্টু উইন্ডোজ এক্সপি প্রতিস্থাপনের জন্য একটি ভাল বিকল্প কেন
কম্পিউটার

লুবুন্টু উইন্ডোজ এক্সপি প্রতিস্থাপনের জন্য একটি ভাল বিকল্প কেন

রন আইবিএম এবং অন্যান্য উচ্চ প্রযুক্তি সংস্থার একজন অবসরপ্রাপ্ত প্রকৌশলী এবং পরিচালক manager তিনি হার্ডওয়্যার এবং সফটওয়্যার উভয় ডিজাইনেই বিশেষীকরণ করেছেন।উইন্ডোজ এক্সপি অনাথ হয়ে গেছে।না, এর পিতা-মা...