অনেক অ্যাপ্লিকেশনগুলিতে, একটি সিপিইউ যার নির্দেশনা কার্যকরকরণের প্রত্যাশিত ইনপুট স্টিমুলিগুলির সাথে জ্ঞাত সময় সম্পর্কিত সম্পর্ক রয়েছে তা যদি সম্পর্কটি অজানা থাকে তবে এমন কাজগুলি পরিচালনা করতে পারে যেগুলির জন্য আরও দ্রুত সিপিইউ প্রয়োজন। উদাহরণস্বরূপ, একটি প্রকল্পে আমি ভিডিও তৈরির জন্য একটি পিএসওসি ব্যবহার করেছিলাম, আমি প্রতি 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 একটি ফ্রেমের প্রদর্শিত অংশের সময় প্রায়শই রঙিন রেজিস্টারে চিঠি লেখেন,
সম্ভবত সবচেয়ে ভাল উপায় হ'ল রঙ লেখার শনাক্তকরণ এবং রঙ নিচের বিটগুলিকে যথাযথ মানগুলিতে বাধ্য করার জন্য একটি দম্পতি পৃথক-যুক্তিযুক্ত চিপ ব্যবহার করা হবে এবং তারপরে আগত সিপিইউ বাস এবং টিআইএ আউটপুট ডেটার নমুনার জন্য দুটি ডিএমএ চ্যানেল ব্যবহার করুন এবং আউটপুট ডেটা উত্পন্ন করতে তৃতীয় ডিএমএ চ্যানেল। এরপরে সিপিইউ প্রতিটি স্ক্যান লাইনের জন্য উভয় উত্স থেকে সমস্ত ডেটা প্রক্রিয়া করতে, প্রয়োজনীয় অনুবাদ সম্পাদন করতে এবং আউটপুটের জন্য এটি বাফার করতে পারে। অ্যাডাপ্টারের দায়িত্বগুলির একমাত্র দিকটি যা "রিয়েল টাইমে" ঘটে থাকে তা হ'ল সিএলইউএক্সএক্সএক্সে লেখা ডেটা ওভাররাইড হবে এবং এটি দুটি সাধারণ লজিক চিপ ব্যবহারের যত্ন নেওয়া যেতে পারে।