মাইক্রোপ্রোগ্রামিং বনাম মেশিন ল্যাঙ্গুয়েজ প্রোগ্রামিং


10

আমি মাইক্রোপ্রোগ্রামিং স্তর বনাম মেশিন ভাষা স্তরের মধ্যে কিছুটা বিভ্রান্ত। উদাহরণ স্বরূপ:

  1. কার্যকর করার সময় উভয় প্রকারের প্রোগ্রাম কোথায় থাকে?
  2. হয় কি এসেম্বলি ভাষার ট্রু-আপ নির্দেশিকাগুলির সাথে 1: 1 ম্যাপিং রয়েছে?
  3. প্রসেসরের আর্কিটেকচার দ্বারা হয় ফর্ম্যাটটি সংজ্ঞায়িত হয়?

4
আপনি যদি এখনও এটি না পড়ে থাকেন তবে [উইকিপিডিয়া] [1] নিবন্ধটি পরীক্ষা করে দেখুন; এটা বেশ দুর্দান্ত। [1]: en.wikedia.org/wiki/Microcode
শন জে গফ

5
মাইক্রোকোড সম্ভবত আপনি যা বলছেন তা নয় not আপনি নিজের সিপিইউ ডিজাইন না করলে আপনি সম্ভবত মাইক্রোকোডে আগ্রহী হবেন না। আপনি হয়ত 'মাইক্রোকোডে' মাইক্রোকনড্রোলার দিয়ে 'মাইক্রো' বিভ্রান্ত করছেন, তবে তারা একই জিনিস নয়।
ডেভর

1
না, আমি মাইক্রোকোড নিয়ে চলেছি। আমি সিপিইউ ইন্টার্নাল অধ্যয়ন করছি এবং মাইক্রোকোডের মতো সর্বনিম্ন স্তরগুলি বোঝার চেষ্টা করছি।

উত্তর:


7

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

কার্যকর করার সময় উভয় প্রকারের প্রোগ্রাম কোথায় থাকে?

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

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

হয় কি এসেম্বলি ভাষার ট্রু-আপ নির্দেশিকাগুলির সাথে 1: 1 ম্যাপিং রয়েছে?

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

তবে সাধারণভাবে "খাঁটি" সমাবেশের ভাষাটি প্রসেসরের ম্যানুয়ালটিতে নির্দেশ সেট টেবিলটি ব্যবহার করে সরাসরি মেশিন কোডে রূপান্তর করা যায়।

"সত্য-অপশন নির্দেশিকা" দ্বারা আপনি কী বোঝাতে চাইছেন তা আমি নিশ্চিত নই। সম্ভবত আপনি রেফারেন্স ব্যাখ্যা করতে পারেন।

প্রসেসরের আর্কিটেকচার দ্বারা হয় ফর্ম্যাটটি সংজ্ঞায়িত হয়?

উভয় মেশিন কোড এবং মাইক্রোকোডের বিন্যাস প্রসেসরের আর্কিটেকচার দ্বারা সংজ্ঞায়িত করা হয়।


'ট্রু-অপ' দ্বারা, আমার অর্থ এমন নির্দেশাবলী যা সিন্থেটিক বা সিউডো অ্যাসেম্বলি ভাষার নির্দেশাবলী নয় instructions ২ য় প্রশ্নের জন্য, আমি বলতে চাইছিলাম মাইক্রোকোড নির্দেশাবলী ম্যাসেজ করে কিনা ভাষা ভাষায় ট্রু-অপশন নির্দেশাবলী assembly

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

8

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

বলুন আপনি একটি ম্যারি ইন্সট্রাকশন সেট নিয়ে কাজ করছেন এবং আপনি একটি অ্যাড এক্স, ওয়াই ফাংশন চান তবে আর্কিটেকচারটি কেবলমাত্র একটি অ্যাড এক্সকে অনুমোদন করে (যা এখন রেজিস্টারে এক্স-তে কেবল যুক্ত করে) তাই আপনি একটি মাইক্রোকোড নির্দেশ যুক্ত করেন:

LOAD x //Load x into the register
ADD y //Add y to the value in the register

এখন যখন আপনার মেশিন ভাষার কোড বলেছেন:

ADD x,y

এটি আপনি রমে যুক্ত হওয়া এডিডি ফাংশনটি দেখায় (আপনার মাইক্রোকোড) এবং এটি কার্যকর করে। এটি দুর্দান্ত কারণ এটি আপনার নির্দেশের সেটটি বাড়িয়ে তোলে যা আরও বেশি পঠনযোগ্য মেশিন কোডের মঞ্জুরি দেয় এবং যেহেতু আপনার মাইক্রোকডটি রমে সঞ্চিত থাকে তাই এটি রম থেকে লোড এবং এডিডি কল করার চেয়েও একটু দ্রুত।

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


আপনি কিভাবে মাইক্রোকোড লিখে এবং চালিত করলেন?
এরিক কাপলুন

@ এরিক অলিক আপনি কেবল স্ক্র্যাচ থেকে নিজের কম্পিউটার তৈরি করে তা করতে পারেন।
ব্যবহারকারী 253751

5

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

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

# 2 রাজ্যে, বাহ্যিক ডেটা বাসের অভ্যন্তরীণ প্রাথমিক ডেটা বাসে খাওয়ানো উচিত এবং সেই বাস থেকে পড়া নির্দেশিকা রেজিস্টারটি লোড করা উচিত। প্রোগ্রামের কাউন্টারটি আগের মতো ঠিকানা বাসের উভয় অংশে আউটপুট হওয়া উচিত, এবং অন্য একটি র‌্যাম-রিড জারি করা উচিত। নির্দেশিকা নিবন্ধের বিট 5-7 বিটগুলি রাজ্য নিয়ন্ত্রকের 0-2 বিটের মধ্যে লোড করা উচিত, নির্দেশিকার রেজিস্টারের 1-7 বিট সমস্ত সেট না করা এবং রাজ্য রেজিস্ট্রারের অন্যান্য বিটগুলি নির্ধারণ না করা হলে রাজ্য নিবন্ধের বিট 3 সেট করা উচিত পরিষ্কার হওয়া উচিত, পরবর্তী ফলাফলটি হবে যে পরবর্তী রাজ্যটি হবে # 7- # 15।

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

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