আধুনিক সিপিইউগুলির সাথে চক্র গণনা (যেমন এআরএম)


14

অনেক অ্যাপ্লিকেশনগুলিতে, একটি সিপিইউ যার নির্দেশনা কার্যকরকরণের প্রত্যাশিত ইনপুট স্টিমুলিগুলির সাথে জ্ঞাত সময় সম্পর্কিত সম্পর্ক রয়েছে তা যদি সম্পর্কটি অজানা থাকে তবে এমন কাজগুলি পরিচালনা করতে পারে যেগুলির জন্য আরও দ্রুত সিপিইউ প্রয়োজন। উদাহরণস্বরূপ, একটি প্রকল্পে আমি ভিডিও তৈরির জন্য একটি পিএসওসি ব্যবহার করেছিলাম, আমি প্রতি 16 সিপিইউ ঘড়িতে ভিডিও ডেটার বাইট আউটপুট দেওয়ার কোড ব্যবহার করি। যেহেতু এসআইপিআই ডিভাইসটি প্রস্তুত কিনা এবং ব্রাঙ্কিং যদি আইআইআরসি ১৩ টি ঘড়ি না নেয় এবং শাখা-প্রশাখা নেওয়া হয় এবং আউটপুট ডেটাতে একটি লোড এবং স্টোর 11 লাগবে, তাই বাইটগুলির মধ্যে প্রস্তুতির জন্য ডিভাইসটি পরীক্ষা করার কোনও উপায় ছিল না; পরিবর্তে, আমি কেবল প্রসেসরটিকে প্রথমে প্রতিটি বাইটের জন্য যথাযথভাবে 16 চক্রের কোডের কোড কার্যকর করার ব্যবস্থা করেছিলাম (আমি বিশ্বাস করি যে আমি প্রকৃত সূচকযুক্ত লোড, একটি ডামি সূচকযুক্ত লোড এবং একটি স্টোর ব্যবহার করেছি)) প্রতিটি লাইনের প্রথম এসপিআই রচনাটি ভিডিও শুরুর আগে ঘটেছিল, এবং পরবর্তী প্রতিটি লেখার জন্য একটি 16-চক্রের উইন্ডো ছিল যেখানে বাফার ওভাররন বা আন্ডারআন ছাড়াই লেখাটি ঘটতে পারে। ব্রাঞ্চিং লুপটি একটি অনিশ্চয়তার 13 টি চক্র উইন্ডো উত্পন্ন করেছিল, তবে অনুমানযোগ্য 16-চক্রের সম্পাদনের অর্থ ছিল যে পরবর্তী সমস্ত বাইটের জন্য অনিশ্চয়তা একই 13 সাইকেল উইন্ডোটি ফিট করবে (যা পরিবর্তনটি যখন গ্রহণযোগ্যভাবে গ্রহণযোগ্য হতে পারে তখন 16-চক্র উইন্ডোর মধ্যে ফিট ছিল) ঘটতে)।

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

ধরে নিই নীচের লুপটি শব্দের সীমানায় শুরু হয়, নির্দিষ্টকরণের ভিত্তিতে কীভাবে এটি নির্ধারণ করা যায় যে এটি কতক্ষণ সময় নেবে (ধরুন জিরো-ওয়েট-স্টেট মেমরি সহ কর্টেক্স-এম 3; উদাহরণস্বরূপ সিস্টেম সম্পর্কে আর কিছুই বিবেচনা করা উচিত নয়)।

myloop:
  Mov r0, r0; আরও নির্দেশাবলী পূর্বনির্দিষ্ট করার অনুমতি দেওয়ার জন্য সংক্ষিপ্ত সাধারণ নির্দেশাবলী
  Mov r0, r0; আরও নির্দেশাবলী পূর্বনির্দিষ্ট করার অনুমতি দেওয়ার জন্য সংক্ষিপ্ত সাধারণ নির্দেশাবলী
  Mov r0, r0; আরও নির্দেশাবলী পূর্বনির্দিষ্ট করার অনুমতি দেওয়ার জন্য সংক্ষিপ্ত সাধারণ নির্দেশাবলী
  Mov r0, r0; আরও নির্দেশাবলী পূর্বনির্দিষ্ট করার অনুমতি দেওয়ার জন্য সংক্ষিপ্ত সাধারণ নির্দেশাবলী
  Mov r0, r0; আরও নির্দেশাবলী পূর্বনির্দিষ্ট করার অনুমতি দেওয়ার জন্য সংক্ষিপ্ত সাধারণ নির্দেশাবলী
  Mov r0, r0; আরও নির্দেশাবলী পূর্বনির্দিষ্ট করার অনুমতি দেওয়ার জন্য সংক্ষিপ্ত সাধারণ নির্দেশাবলী
  আর 2, আর 1 যোগ করুন, # 0x12000000; 2-শব্দ নির্দেশ
  ; সম্ভবত বিভিন্ন অপারেশন সহ নিম্নলিখিতটি পুনরাবৃত্তি করুন
  ; একটি বহন না হওয়া অবধি মান যোগ করা চলবে
  itcc
  addscc r2, r2, # 0x12000000; 2-শব্দের নির্দেশিকা, এবং এটিটিসিটির জন্য অতিরিক্ত "শব্দ"
  itcc
  addscc r2, r2, # 0x12000000; 2-শব্দের নির্দেশিকা, এবং এটিটিসিটির জন্য অতিরিক্ত "শব্দ"
  itcc
  addscc r2, r2, # 0x12000000; 2-শব্দের নির্দেশিকা, এবং এটিটিসিটির জন্য অতিরিক্ত "শব্দ"
  itcc
  addscc r2, r2, # 0x12000000; 2-শব্দের নির্দেশিকা, এবং এটিটিসিটির জন্য অতিরিক্ত "শব্দ"
; ... ইত্যাদি আরও শর্তযুক্ত দ্বি-শব্দ নির্দেশাবলী সহ
  সাব আর 8, আর 8, # 1
  বিপিএল মাইলুপ

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

এটি দুর্দান্ত লাগবে যদি এআরএম নির্দিষ্ট শর্তাদি নির্দিষ্ট করতে পারে যার অধীনে "এটি" নির্দেশের সময় নির্ধারিত হবে (যেমন যদি অপেক্ষার রাজ্য বা কোড-বাসের বিতর্ক না থাকে এবং পূর্ববর্তী দুটি নির্দেশাবলী 16-বিট নিবন্ধের নির্দেশাবলী ইত্যাদি) তবে আমি এরকম কোনও অনুমান দেখিনি।

নমুনা প্রয়োগ

ধরুন যে কেউ 480P এ উপাদান ভিডিও আউটপুট উত্পন্ন করতে একটি আটারি 2600 এর জন্য একটি ডিনবোর্ড ডিজাইন করার চেষ্টা করছে। 2600 একটি 3.579MHz পিক্সেল ঘড়ি, এবং একটি 1.19MHz সিপিইউ ঘড়ি (ডট ক্লক / 3) রয়েছে। 480P উপাদান ভিডিওর জন্য, প্রতিটি লাইন দু'বার আউটপুট হতে হবে, যা 7.158MHz ডট ক্লক আউটপুটকে বোঝায়। যেহেতু আটারির ভিডিও চিপ (টিআইএ) 3 টি-বিট লুমা সিগন্যাল হিসাবে প্রায় 18ns রেজোলিউশন হিসাবে 128 টি রঙের একটি আউটপুট দেয়, কেবল আউটপুটগুলি দেখলে রঙটি সঠিকভাবে নির্ধারণ করা কঠিন। কালার রেজিস্টারগুলিতে লেখাগুলি লিখতে হবে, লিখিত মানগুলি পর্যবেক্ষণ করা হবে এবং প্রতিটি রেজিস্টারকে টিআইএ লুমিন্যান্সের মানগুলিতে রেজিস্টার সংখ্যার সাথে খাওয়ানোই আরও ভাল উপায় হবে।

এটি একটি এফপিজিএ দিয়েই করা যেতে পারে তবে প্রয়োজনীয় বাফারিং পরিচালনা করতে যথেষ্ট র‌্যামযুক্ত এফপিজিএর তুলনায় কিছু চমত্কার দ্রুত এআরএম ডিভাইসগুলি খুব কম সস্তা হতে পারে (হ্যাঁ, আমি জানি যে খণ্ডগুলির জন্য এ জাতীয় জিনিস ব্যয় করা সম্ভব নয়)। একটি বাস্তব ফ্যাক্টর)। এআরএমকে ইনকামিং ক্লক সিগন্যালটি দেখার প্রয়োজন থাকলেও প্রয়োজনীয় সিপিইউর গতি উল্লেখযোগ্যভাবে বাড়বে। অনুমানযোগ্য চক্র গণনাগুলি জিনিসকে আরও পরিষ্কার করে তুলতে পারে।

অপেক্ষাকৃত সরল নকশার পদ্ধতির জন্য সিপিএলডি সিপিইউ এবং টিআইএ দেখতে হবে এবং একটি 13-বিট আরজিবি + সিঙ্ক সিগন্যাল তৈরি করা হবে এবং তারপরে এআরএম ডিএমএ একটি বন্দর থেকে 16-বিট মান গ্রহণ করবে এবং যথাযথ সময় সহ অন্যটিতে লিখবে। এটি একটি আকর্ষণীয় ডিজাইনের চ্যালেঞ্জ হবে যদিও কোনও সস্তা এআরএম সবকিছু করতে পারে কিনা তা দেখার জন্য। সিপিইউ চক্র গণনার উপর এর প্রভাবগুলির পূর্বাভাস দেওয়া যেতে পারে যদি ডিএমএ সর্ব-এক-এক পদ্ধতির কার্যকর দিক হতে পারে (বিশেষত যদি মেমরি বাসটি অন্যথায় নিষ্ক্রিয় ছিল তখন ডিএমএ চক্রগুলি ঘটতে পারে), তবে প্রক্রিয়াটির এক পর্যায়ে এআরএমকে তার টেবিল দেখা এবং বাস-দেখার কার্য সম্পাদন করতে হবে। নোট করুন যে অনেকগুলি ভিডিও আর্কিটেকচারের বিপরীতে যেখানে ফাঁকা বিরতিতে রঙের রেজিস্টারগুলি লেখা হয়, আটারি 2600 একটি ফ্রেমের প্রদর্শিত অংশের সময় প্রায়শই রঙিন রেজিস্টারে চিঠি লেখেন,

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

উত্তর:


7

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

তবে বিশদটি বুঝতে এটি বেশ কঠিন হতে পারে।

আর একটি বিকল্প হ'ল এই শক্ত জিনিসগুলির হার্ডওয়ার বাস্তবায়ন সহ এফপিজিএতে নরম কোর।


1
আমি ডিএমএ ধারণা পছন্দ করি। আমি মনে করি না কর্টেক্স এম 3 কোরের কোনও ডিএমএ রয়েছে, যদিও - এটি পৃথক নির্মাতাদের চিপগুলির একটি ফাংশন, এবং তারা সকলেই এটিকে আলাদাভাবে বাস্তবায়ন করে বলে মনে হয়। আমি আসলে (এসটিএম 32 এল 152) এর সাথে কমপক্ষে বাস্তবায়িত হয়েছি এমন একটি প্রয়োগের সাথে আমি কৃপণ মনে করি, এটি হ'ল ডিএমএ ডেটা আউটপুট এলে পিন স্ট্রোব রাখার কোনও উপায় আমি খুঁজে পাই না। এটিও পরিষ্কার নয় যে কী কারণগুলি ডিএমএ সময়োপযোগীকে প্রভাবিত করতে পারে।
সুপারক্যাট

1
যাই হোক না কেন, প্রথম প্রয়োগগুলির মধ্যে একটি সম্পর্কে আমি সুনির্দিষ্ট চক্র-ব্যাংয়ের জন্য ভাবছিলাম, আমি মূল প্রশ্নে আরও তথ্য পোস্ট করেছি। আপনি কি মনে করেন আমি কৌতূহলী। আরেকটি পরিস্থিতি যেখানে আমি চক্র-বিংয়ের বিষয়ে চিন্তাভাবনা করছিলাম সেটি হ'ল একটি রঙের এলসিডিতে প্রদর্শন ডেটা ব্লাস্ট করবে। 8-বিট রঙ ব্যবহার করে ডেটা র‍্যামে বাফার হবে তবে ডিসপ্লেটিতে 16-বিট রঙের প্রয়োজন। ডেটা আউটপুট আউট করার জন্য আমি যে দ্রুততম উপায়টি ভেবেছিলাম তা হ'ল রাইটিং স্ট্রোবগুলি তৈরি করার জন্য হার্ডওয়্যার ব্যবহার করা হত, সুতরাং সিপিইউতে কেবল ডেটা আউট করতে হত। 8-> 16
বিটকে

1
... এবং তারপরে এটি স্থানান্তর করার জন্য ডিএমএর ব্যবস্থা করুন, বা সর্বোত্তম পন্থাটি কী হবে?
সুপারক্যাট

4

সময়সীমার তথ্য উপলভ্য, তবে আপনি যেমন উল্লেখ করেছেন, মাঝে মাঝে অস্পষ্ট হতে পারে। কর্টেক্স-এম 3 এর কারিগরি রেফারেন্স ম্যানুয়ালের সেকশন 18.2 এবং টেবিল 18.1 তে প্রচুর সময়সীমার তথ্য রয়েছে , উদাহরণস্বরূপ, ( পিডিএফ এখানে ), এবং এখানে একটি উদ্ধৃতি:

18.2 এর অংশ

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

[1] শাখাগুলি নির্দেশের জন্য একটি চক্র নেয় এবং তারপরে লক্ষ্য নির্দেশের জন্য পাইপলাইন পুনরায় লোড করে। অ-গৃহীত শাখাগুলি মোট 1 চক্র। তাত্ক্ষণিকভাবে নেওয়া শাখাগুলি সাধারণত পাইপলাইন পুনরায় লোডের চক্র হয় (মোট 2 টি চক্র)। নিবন্ধক অপারেন্ড সহ নেওয়া শাখাগুলি সাধারণত পাইপলাইন পুনরায় লোডের মোট চক্র (মোট 3 টি চক্র)। পাইপলাইন পুনরায় লোড দীর্ঘতর [কত দিন?] স্বাক্ষরবিহীন স্মৃতিতে অ্যাকসেস ছাড়াও স্বাক্ষরবিহীন -২-বিট নির্দেশকে শাখা করার সময়। একটি ব্রাঞ্চ ইঙ্গিতটি কোড বাসে প্রেরণ করা হয় যা ধীরে ধীরে সিস্টেম [কত ধীর?] প্রি-লোড করার অনুমতি দেয় । এই করতে পারেন [এই ঐচ্ছিক?] কমাতে ধীর মেমরির জন্য শাখা লক্ষ্য শাস্তি দ্বারা [কত?], কিন্তু এখানে কম না দেখানো।

[2] সাধারণত, লোড-স্টোর নির্দেশাবলী প্রথম অ্যাক্সেসের জন্য দুটি চক্র এবং প্রতিটি অতিরিক্ত অ্যাক্সেসের জন্য একটি চক্র গ্রহণ করে। অবিলম্বে অফসেট সহ স্টোরগুলি একটি চক্র নেয় take

[3] উত্স / স্মুল / উমলল / এসএমএলএল সূত্রের মানগুলির আকার [কী আকার?] এর উপর নির্ভর করে প্রারম্ভিক সমাপ্তি ব্যবহার করে । এগুলি বাধাপ্রাপ্ত (পরিত্যক্ত / পুনরায় চালু) হয়, একটি চক্রের সবচেয়ে খারাপ ক্ষেত্রে বিলম্ব হয়। এমএলএল সংস্করণগুলি চার থেকে সাত চক্র এবং এমএলএল সংস্করণগুলি তিন থেকে পাঁচটি চক্র নেয় । এমএলএলএল এর জন্য, স্বাক্ষরিত সংস্করণটি স্বাক্ষরযুক্ত স্বাক্ষরের চেয়ে এক চক্র দীর্ঘ।

[4] আইটি নির্দেশাবলী ভাঁজ করা যেতে পারে । [কখন? মন্তব্য দেখুন।]

[5] ডিআইভির সময়গুলি লভ্যাংশ এবং বিভাজকের উপর নির্ভর করে । [এমএইউএল হিসাবে একই সমস্যা] একটি চক্রের সবচেয়ে খারাপ ক্ষেত্রে বিলম্ব হওয়ার সাথে ডিআইভি বাধা দেওয়া (পরিত্যক্ত / পুনরায় চালু করা)। যখন লভ্যাংশ এবং বিভাজক আকারে একই রকম হয় (কত মিল??), বিভাজন দ্রুত সমাপ্ত হয়। নূন্যতম সময় হ'ল ডিভাইডারের চেয়ে বড় ডিভাইডারের ক্ষেত্রে এবং শূন্যের বিভাজকের ক্ষেত্রে। শূন্যের একটি বিভাজক শূন্য ফেরায় (কোনও ফল্ট নয়), যদিও এই কেসটি ধরার জন্য একটি ডিবাগ ট্র্যাপ পাওয়া যায়। [এমএলএর জন্য দেওয়া হয়েছিল এমন কোন ব্যাপ্তিগুলি?]

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

[]] আইএসবি একটি চক্র নেয় (শাখা হিসাবে কাজ করে)। লিখিত বাফার বা এলএসইউতে ডেটা মুলতুবি না থাকলে ডিএমবি এবং ডিএসবি একটি চক্র নেয়। কোনও বাধা দেওয়ার সময় যদি কোনও বাধা আসে তবে তা পরিত্যক্ত / পুনরায় চালু করা হয়।

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

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

এই প্রয়োজনীয়তাগুলি সম্ভবত আপনার প্রশ্নের উত্তর দেয়, "না, এগুলি ভাল ধারণা নয়, যদি না সমস্যাগুলির সম্মুখীন হওয়া মূল্য ব্যয় না করে" - তবে আপনি এটি ইতিমধ্যে জানতেন।


1
আমি নিম্নলিখিতগুলি অস্পষ্ট বলে বিবেচনা করব: "পাইপলাইন পুনরায় লোডটি দীর্ঘায়িত হয় যখন স্বাক্ষরবিহীন অ্যাক্সেসের অ্যাকসেস ছাড়াও স্বাক্ষরবিহীন 32-বিট নির্দেশনাগুলিতে শাখা করা হয়" এটি নির্দিষ্টভাবে একটি চক্র যুক্ত করে কিনা তা বলে না এবং "আইটি নির্দেশাবলী ভাঁজ করা যায়" না তারা কোন অবস্থাতে থাকবে বা কী হবে না তা নির্দিষ্ট করে না।
সুপারক্যাট

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

1
আমার অনুমান হবে যে আইটি সম্ভবত (সত্যবাদী) এর মতো কিছু নোট করতে পারে, "ওয়েট স্টেটস বা কোড-বাসের বিতর্ক না থাকলে আইটি ভাঁজ দেওয়ার নিশ্চয়তা থাকে যদি (1) পূর্ববর্তী নির্দেশটি 16-বিট নির্দেশ ছিল যা অ্যাক্সেস করেনি মেমরি বা প্রোগ্রামের কাউন্টার; এবং (২) হয় পরবর্তী নির্দেশনাটি একটি 16-বিট নির্দেশনা, বা পূর্ববর্তী নির্দেশনাটি "স্বাক্ষরিত" শাখার লক্ষ্য ছিল না IT আইটি ফোল্ডিং অন্যান্য অনির্দিষ্ট পরিস্থিতিতেও ঘটতে পারে। " এই জাতীয় অনুমানের ফলে কোডটি নির্দেশিত অনুযায়ী ব্যবস্থা করা হয়েছে তা নিশ্চিত করে ভবিষ্যদ্বাণীমূলক আইটি-নির্দেশিকার সময়কাল সহ প্রোগ্রাম লেখার সুযোগ পাবে।
সুপারক্যাট

1
বাহ - আমি স্বীকার করি যে আমি টেবিলের নীচে ক্যাভেটগুলির সাথে লড়াই করার পরিবর্তে কেবলমাত্র সর্বাধিক খারাপতম-চক্র গণনা পেরিয়েছি। আমার আপডেট হওয়া উত্তরটি কিছু অন্যান্য অস্পষ্টতা তুলে ধরে।
কেভিন ভার্মির

1
এমন অনেকগুলি পরিস্থিতি রয়েছে যেখানে একজনের নিকৃষ্টতম সংখ্যার ক্ষেত্রে আগ্রহ থাকে এবং এমন একটি ন্যায্য সংখ্যা যেখানে সর্বাধিক ক্ষেত্রে বিবেচনায় আগ্রহী (যেমন যদি কোনও এসপিআই বন্দর প্রতি 16 বক্র চক্রের একটি বাইট আউটপুট নিতে পারে তবে প্রতিটি বাইট জেনারেট করতে 14 চক্র লাগে) সেরা-কেস, এবং প্রস্তুতির জন্য চেক করতে 5 টি চক্র লাগবে, তত্পরতার জন্য প্রতি বাইট চেক করলে প্রতি 19 বাইচক্র একবারে বাইট সীমাবদ্ধ হয়ে যায়; দুটি যুক্ত এনওপি দিয়ে অন্ধভাবে লেখালেখি প্রতি 16 টি চক্রকে এক বাইটের গতি দিতে পারে সেরা-কেস )। যেসব ক্ষেত্রে সুনির্দিষ্ট সময় প্রয়োজন হয় তেমন সাধারণ হয় না, তবে তারা উত্থাপন করতে পারে।
সুপারক্যাট

3

এই সমস্যার সমাধান করার একটি উপায় হ'ল প্যারালাক্স প্রপেলার এবং এক্সএমওএস চিপগুলির মতো ডিটারিনিস্টিক বা অনুমানযোগ্য সময়যুক্ত ডিভাইসগুলি ব্যবহার করা:

http://www.parallaxsemiconductor.com/multicoreconcept

http://www.xmos.com/

চক্র গণনা প্রপেলারের সাথে খুব ভাল কাজ করে (এসেম্বলির ভাষাটি ব্যবহার করতে হবে), এক্সএমওএস ডিভাইসগুলির একটি খুব শক্তিশালী সফ্টওয়্যার ইউটিলিটি রয়েছে, এক্সএমওএস টাইমিং অ্যানালাইজার, যা এক্সসি প্রোগ্রামিং ভাষায় লিখিত অ্যাপ্লিকেশনগুলির সাথে কাজ করে:

https://www.xmos.com/download/public/XMOS-Timing-Analyzer-Whitepaper%281%29.pdf


1
আমি ভাবতে শুরু করেছি XMOS তে লিওনের শেয়ার রয়েছে ... ;-)
ফেডেরিকো রুসো

1
আমি কেবল তাদের চিপস এবং সেখানে কাজ করা লোকদের পছন্দ করি। প্যারালাক্স ভাল পণ্যগুলির পাশাপাশি একটি দুর্দান্ত সংস্থা।
লিওন হেলার

1
হ্যাঁ, কোনও অপরাধ নেই। এটি কেবল আমাকে আঘাত করে যে এক্সএমওএসের উল্লেখ করা সমস্ত উত্তর (এক ব্যতীত) আপনার কাছ থেকে এসেছে। কোনও কিছুর প্রতি উত্সাহী হওয়াতে কোনও ভুল নেই।
ফেডেরিকো রুসো

@ ফেডেরিকো, @ লিওন - এটি এক্সএমওএস সম্পর্কে আমাকে কিছুটা চিন্তিত করেছে: বিশ্বে মাত্র 1 জন ব্যবহারকারী কেন (অন্তত এটির মতো দেখাচ্ছে)? যদি এটি এত দুর্দান্ত হয় তবে কেন এটি শহরের কথা নয়? আমি কখনই কাউকে এ সম্পর্কে কথা বলতে শুনিনি, এটি কম ব্যবহার করুন।
স্টিভেন্ভ

এক্সএমওএস ফোরামগুলি চেষ্টা করুন: xcore.com
লিওন হেলার

2

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

এর ভাল উদাহরণ হ'ল বেশিরভাগ মাইক্রোচিপ পিআইসি। 10, 12, 16 এবং 18 সিরিজের খুব ভাল নথিবদ্ধ এবং অনুমানযোগ্য নির্দেশের সময় রয়েছে। এই চিপগুলি যে ধরণের ছোট কন্ট্রোল অ্যাপ্লিকেশনগুলির জন্য উদ্দেশ্যে করা হয় এটির ক্ষেত্রে এটি দরকারী বৈশিষ্ট্য হতে পারে।

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

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

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


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

0

হ্যাঁ, আপনি এটি এখনও করতে পারেন, এমনকি একটি আর্মেও। একটি এআরএম এর সাথে সর্বাধিক সমস্যাটি হ'ল এআরএম চিপস না করে কোরগুলি বিক্রি করে এবং মূল সময়টি জানা যায়, তবে এটির কাছ থেকে চিপ বিক্রেতাকে কীভাবে বেঁধে রাখে এবং কখনও কখনও চিপ পরিবার থেকে অন্য বিক্রেতার মধ্যেও আলাদা করা যায়। সুতরাং কোনও নির্দিষ্ট বিক্রেতার কাছ থেকে একটি নির্দিষ্ট চিপ বেশ নির্মাতিক হতে পারে (যদি আপনি উদাহরণস্বরূপ ক্যাশে ব্যবহার না করেন) তবে পোর্ট করা শক্ত হয়ে যায়। এখানে 5 টি ঘড়ি এবং সেখানে টাইমার ব্যবহার করে 11 টি ঘড়ির সাথে কাজ করার সময় টাইমারকে নমুনা নিতে আপনার নির্দেশনার সংখ্যা এবং আপনার সময়সীমা শেষ হয়ে গেছে কিনা তা নির্ধারণ করার জন্য সমস্যাযুক্ত। আপনার অতীত প্রোগ্রামিংয়ের অভিজ্ঞতার শব্দগুলি থেকে, আমি আপনাকে বরাবরই একটি অ্যাসিলোস্কোপ দিয়ে ডিবাগ করতে বাজি রাখতে ইচ্ছুক, যাতে আপনি ক্লিপ রেটে চিপের উপর একটি শক্ত লুপ চেষ্টা করতে পারেন, স্পি বা আই 2 সি বা যেকোন তরঙ্গরূপটি দেখতে পারেন, যুক্ত করুন বা nops সরান, লুপ এবং মূলত টিউনের মাধ্যমে বারের সংখ্যাটি পরিবর্তন করুন। যে কোনও প্ল্যাটফর্মের মতো, বাধা ব্যবহার না করা নির্দেশনা কার্যকরকরণের নির্বিচার প্রকৃতিকে ব্যাপকভাবে সহায়তা করে।

না, এটি পিআইসির মতো সহজ নয়, তবে এখনও যথেষ্ট কার্যক্ষম, যদি প্রসেসরের ঘড়ির হারে বিলম্ব / সময় উপস্থিত হয় তবে sp বেশ কয়েকটি এআরএম ভিত্তিক বিক্রেতারা আপনাকে ঘড়ির হারকে গুণতে এবং 8 মেগাহার্জ রেফারেন্সের তুলনায় 60 মেগাহার্জ বলার অনুমতি দেয়, সুতরাং আপনার যদি প্রতি 4 নির্দেশাবলীর পরিবর্তে কিছু 2mhz ইন্টারফেসের প্রয়োজন হয় তবে আপনি ঘড়িটি বাড়িয়ে তুলতে পারেন (যদি আপনার কাছে থাকে তবে পাওয়ার বাজেট) এবং তারপরে একটি টাইমার ব্যবহার করুন এবং নিজেকে অন্যান্য কাজ করতে প্রচুর ঘড়ি দিন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.