সিপিইউ কীভাবে 'জানে' আদেশ এবং নির্দেশাবলীর অর্থ কী?


73

কোনও প্রসেসর কীভাবে বিভিন্ন কমান্ডের অর্থ 'জানে'?

আমি এমভিভি, পুশ, কল ইত্যাদির মতো অ্যাসেম্বলি স্তরের কমান্ডগুলি নিয়ে ভাবছি ...


এটি অত্যন্ত তথ্যবহুল, তবে আমি যা সন্ধান করছি তা হ'ল এটি কোনটি যা একটি সিপিইউকে কমান্ডগুলি গ্রহণ এবং প্রেরণে অনুমতি দেয়?

আমি এই মন্তব্য বুঝতে পারি না। কোনও সিপিইউ ঠিকানা দ্বারা তাদের জিজ্ঞাসা করে মেমরি থেকে নির্দেশাবলী "পায়"। কেবলমাত্র একটি সিপিইউ "প্রেরণ" (কমপক্ষে সরল দৃষ্টিতে) তথ্য সরবরাহ করার জন্য মেমরির আদেশ এবং I / O ডিভাইসগুলি পরিচালনা করার জন্য I / O বাসগুলিতে আদেশ দেয়।
ড্যানিয়েল আর হিক্স

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

পাঠকরা এই প্রশ্নে আগ্রহী হতে পারেন কোনও কম্পিউটার কীভাবে কাজ করে? কম্পিউটার সায়েন্স উপর ।
রাফেল

উত্তর:


88

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

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

সংকলন থেকে সম্পাদন পর্যন্ত সাধারণ প্রবাহ নিম্নরূপ। সমাবেশ নির্দেশাবলী একত্রিত হয় (তাদের বাইনারি সমতুল্য 0s এবং 1s, বা এখন থেকে লজিক সংকেতগুলিতে রূপান্তরিত)। এই যুক্তি সংকেতগুলি সিপিইউ দ্বারা পরিবর্তিতভাবে ব্যাখ্যা করা হয় এবং আরও নিম্ন-স্তরের যুক্তি সংকেতে রূপান্তরিত হয় যা নির্দিষ্ট নির্দেশ কার্যকর করতে সিপিইউর প্রবাহকে নির্দেশ করে। প্রসেসরের আর্কিটেকচার এবং ডিজাইনের উপর নির্ভর করে এটি এক বা একাধিক ক্লক চক্র নিতে পারে (বেশিরভাগ প্রসেসরের রেফারেন্স ম্যানুয়াল আপনাকে উদাহরণস্বরূপ যেমন একটি নির্দিষ্ট নির্দেশনা কার্যকর করতে কত ঘড়ি চক্র লাগে তা বলে দেয় )।

এগুলি সবই হার্ড-প্রোগ্রামযুক্ত মাইক্রোকোড (শারীরিকভাবে প্রসেসরের অভ্যন্তরে কোনও ধরণের রমের মধ্যে তৈরি করা হয়েছিল, উত্পাদনকালীন সেট করা), যা প্রকৃত নিম্ন-স্তরের লজিক গেটগুলির মাধ্যমে প্রবাহকে নির্দেশ করে । এটি বিমূর্ত সমাবেশ নির্দেশাবলী এবং প্রসেসরের শারীরিক বৈদ্যুতিক যুক্তির মধ্যে একটি ইন্টারফেস সরবরাহ করে।


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


2
ঠিক আছে, আমি এটি পেয়েছি, আমি মনে করি :) সুতরাং কমান্ডটি "স্যুইচগুলি" টগল বিটস করে যা প্রসেসরটিকে প্রাপ্ত ডেটার সাথে কিছু কাজ করতে সক্ষম করে?
সাইমন ভারবেকে

4
@ সিমন ভারবেকে, ঠিক সঠিক প্রসেসরে বৈদ্যুতিক সিগন্যালের প্রবাহকে নির্দেশ করতে তারা কেবল সুইচগুলি টগল করে (এটি আরও কমান্ড পুনরায় লোড করার জন্য এটিও নির্দেশ করতে পারে!)। সুইচ সাদৃশ্যটি ভাল, যেহেতু সবকিছুই ডিজিটাল (হয় যুক্তি 1/0, বা সত্য / মিথ্যা)। ঠিক তাই আপনি জানেন, লজিক স্তরটি একটি আসল ভোল্টেজ। 0 বা 1 কী কী তা নির্দিষ্ট করা ইঞ্জিনিয়ারের উপর নির্ভর করে (উদাহরণস্বরূপ, একটি যুক্তি 1 আরও 2 ভোল্ট হিসাবে নির্দিষ্ট করা যেতে পারে)।
ব্রেকথ্রু

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

3
না, আমি x86 আর্কিটেকচারের দীর্ঘায়ু এবং সময় এবং সময়ের পুনরায় সম্প্রসারণের কারণে বলছিলাম, অপকডগুলিতে মাইক্রো-অপারেশনে পৃথক বিটের ম্যাপিং এমআইপিএস বা এআরএমের মতো পরিষ্কার-পরিচ্ছন্ন নয় it ডিগ্রীতে ( উদাহরণস্বরূপ, ইন্টেল অপকডগুলি এর মতো কিছুই নয়) d.umn.edu/~gshute/spimsal/talref.html দেখুন )। আমি মনে করি না যে "আরআইএসসি" এর খুব বেশি ধারণা ছিল যখন 1978 সালে ইন্টেল x86 সিপিইউ চালু করেছিল।
লরেন্স

5
এটি লক্ষ্য করা উচিত নয় যে কেবলমাত্র কয়েকটি সিপিইউ মাইক্রোকোড। কিছু (বেশিরভাগ ছোট ডিভাইস) অ্যাসেম্বলি অপকডগুলি সরাসরি পরিচালনা করে। এটি নির্ভর করে আর্কিটেকচারের উপর।
ভুয়া নাম

37

প্রসেসর কমান্ডগুলি আসলে 'জানে না'। কমান্ডগুলি কেবল বাইনারি প্যাটার্ন যা প্রসেসরকে কারণ হিসাবে আমরা আদেশগুলির অর্থ ব্যাখ্যা করি cause

উদাহরণস্বরূপ, একটি ADD-R1-in-R2 অপারেশন 1 এবং 2 এর মানগুলিকে ALU (পাটিগণিত এবং যুক্তিযুক্ত ইউনিট) পৌঁছানোর কারণী করবে, ALU অন্যান্য বিভিন্ন স্টাফের পরিবর্তে অ্যাডারের আউটপুট ব্যবহার করবে এবং এর কারণ ঘটবে ALU এর আউটপুট 2 টি রেজিস্টারে মান প্রতিস্থাপন করে these এই সমস্ত জিনিস ( মাল্টিপ্লেক্সার , অ্যাডারে , কাউন্টার , ...) অর্জন করার জন্য সহজ লজিক সার্কিট রয়েছে , যদিও প্রকৃত প্রসেসরগুলি খুব জটিল অপ্টিমাইজেশন ব্যবহার করে।

এটি আপনি যেমন ব্রেক জিজ্ঞাসা করছেন যখন একটি গাড়ি ধীর গতিতে জানেন কিভাবে জিজ্ঞাসা করা হয় এর মত ধরণের। গাড়িটি জানে না, ব্রেক প্যাডেল হ'ল চাকার বিরুদ্ধে শক্ত প্যাডগুলি কীভাবে চাপানো হয় তা পরোক্ষভাবে নিয়ন্ত্রণ করতে হয়।


5
গাড়ি ব্রেক প্যাডেল সহ দুর্দান্ত উপমা।
rjmunro

10

উদাহরণস্বরূপ, সেই নির্দেশটি নিন যা কোনও x86 / IA-32 প্রসেসরকে তাত্ক্ষণিক 8-বিট মানটিকে একটি রেজিস্টারে স্থানান্তর করতে বলে। এই নির্দেশের বাইনারি কোডটি 10110 এর পরে একটি 3-বিট সনাক্তকারী যার জন্য ব্যবহারের জন্য নিবন্ধভুক্ত। AL রেজিস্টারের সনাক্তকারী 000, সুতরাং নিম্নলিখিত মেশিন কোড 01100001 ডেটা সহ AL রেজিস্টার লোড করে।

10110000 01100001

এই বাইনারি কম্পিউটার কোডটি নিম্নরূপে হেক্সাডেসিমালে প্রকাশ করে আরও মানব-পঠনযোগ্য করা যায়

B0 61

এখানে, বি 0 এর অর্থ 'নীচের মানের একটি অনুলিপি AL এ স্থানান্তরিত করুন' এবং 61 হ'ল 0x00001 মানের একটি হেক্সাডেসিমাল উপস্থাপনা, যা দশমিক 97৯। ইন্টেল অ্যাসেম্বলি ল্যাঙ্গুয়েজ যেমন নির্দেশাবলীর জন্য স্মৃতিভিত্তিক এমওভি (চলনটির একটি সংক্ষেপণ) সরবরাহ করে, তাই উপরের মেশিন কোডটি অ্যাসেম্বলি ভাষায় নিম্নলিখিতভাবে লেখা যেতে পারে, সেমিকোলনের পরে প্রয়োজনে একটি ব্যাখ্যামূলক মন্তব্য দিয়ে সম্পূর্ণ করুন। এটি পড়া এবং মনে রাখা অনেক সহজ।

http://en.wikipedia.org/wiki/Assembler_language

অন্য কথায়, আপনি যখন আপনার সমাবেশ প্রোগ্রামটি 'একত্রিত' করেন, তখন আপনার নির্দেশাবলী

MOV AL, 61h

সংখ্যায় রূপান্তরিত হয়, যা সিপিইউ একটি বিশেষ অর্থ যুক্ত করে এবং তারপরে সেই অনুযায়ী কাজ করে।


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

6

প্রস্তাবিত পড়া:

সিএস 152 এর পাঠ্যক্রমের নোটগুলিও দেখুন : কম্পিউটার আর্কিটেকচার অ্যান্ড ইঞ্জিনিয়ারিং ইউসি বার্কলে, একটি কোর্সে শিক্ষার্থীরা সিপিইউ প্রয়োগ করে।

আপনি যদি "হোম-বিল্ট সিপিইউ" এর জন্য গুগল করেন তবে আপনি অনেকগুলি গুডিজ পাবেন।


4

চূড়ান্ততম সর্বনিম্ন স্তরে, সমস্ত সিপিইউ যুক্ত করতে পারে। সংযোজন থেকে, এটি বিয়োগ করতে পারে, গুণ করতে এবং ভাগ করতে পারে (এগুলি দেখতে অন্যরকমভাবে যুক্ত হয়)। সিপিইউ মেমরির ঠিকানাগুলিতে সংযোজনগুলি প্রয়োগ করে মেমরির চারপাশে ডেটা সরাতে এটি ব্যবহার করে।

এটি সম্ভব সর্বনিম্ন পর্যায়ে থাকলেও মনে রাখবেন। সিপিইউ আসলে মাইক্রোকোড আকারে নির্দিষ্ট কমান্ডগুলি "বোঝে" করে। ব্রেকথ্রু এর উত্তর দেখুন, এটি খুব ভাল লেখা আছে।


7
লজিকাল অপারেশনগুলি যেমন AND, OR, এবং NOT এর পাশাপাশি বিটশিফ্টিং যুক্ত করার চেয়ে বেশি মৌলিক। যুক্ত করা আসলে এই ক্রিয়াকলাপগুলির শর্তে প্রকাশ করা যেতে পারে। প্রকৃতপক্ষে আলাদা আলাদা আইসি রয়েছে (টেক্সাস ইনস্ট্রুমেন্টস এলএস সিরিজ) যা এই ক্রিয়াকলাপগুলি সম্পাদন ছাড়া কিছুই করে না এবং সেগুলির মধ্যে একটি সিপিইউ তৈরি করা সম্ভব। গুগল "পং স্কিম্যাটিক" দেখতে কোনও সিপিইউ ছাড়াই কীভাবে একটি গেম তৈরি করা হয় তা দেখার জন্য।
লরেন্স

আমি আরও একটি সফ্টওয়্যার দৃষ্টিকোণ থেকে বোঝাতে চাইছিলাম: হ্যাঁ হার্ডওয়ার / লজিক অনুসারে আপনার কাছে ন্যানড এবং এনওআর গেটগুলির একটি উন্মাদ পরিমাণ রয়েছে। ভাল যুক্তি.
n0pe

2

আমি প্রোগ্রামার্স.স্ট্যাকেক্সেক্সঞ্জ.কম এ একটি সম্পর্কিত উত্তর দিয়েছি, দেখুন কম্পিউটারগুলি কীভাবে কাজ করে? কম্পিউটারগুলি কীভাবে চলমান ইলেক্ট্রনগুলিতে নির্দেশনা ব্যাখ্যা করতে চলেছে সে সম্পর্কে আমি গ্রাউন্ড থেকে সমস্ত কিছুতে সংক্ষেপে হেঁটেছি।

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