উচ্চ স্তরের কারণ
আপনি যখন এটির বিষয়ে চিন্তা করেন, একটি মাইক্রোপ্রসেসর একটি আশ্চর্যজনক কাজ করে: এটি আপনাকে একটি মেশিন নিতে দেয় (যেমন একটি ওয়াশিং মেশিন বা একটি লিফট), এবং কাস্টম-ডিজাইন করা মেকানিজম বা সার্কিটের পুরো অংশটিকে একটি সস্তা, ভর উত্পাদিত সিলিকন দিয়ে প্রতিস্থাপন করে চিপ। আপনি যন্ত্রাংশে প্রচুর অর্থ এবং ডিজাইনে প্রচুর সময় সাশ্রয় করেন।
তবে অগণিত কাস্টম ডিজাইনের পরিবর্তে একটি স্ট্যান্ডার্ড চিপ, থাকুন ? একক, নিখুঁত মাইক্রোপ্রসেসর হতে পারে না যা প্রতিটি অ্যাপ্লিকেশনের জন্য উপযুক্ত। কিছু অ্যাপ্লিকেশনগুলিকে বিদ্যুতের ব্যবহার হ্রাস করতে হবে তবে দ্রুত হওয়া দরকার না; অন্যদের দ্রুত হওয়া দরকার তবে প্রোগ্রাম করা সহজ হওয়ার দরকার নেই, অন্যদের স্বল্প ব্যয় হওয়া দরকার etc.
সুতরাং, আমাদের মাইক্রোপ্রসেসরের অনেকগুলি "স্বাদ" রয়েছে যার প্রত্যেকটির নিজস্ব শক্তি এবং দুর্বলতা রয়েছে। এটি সবার জন্য একটি সামঞ্জস্যপূর্ণ নির্দেশিকা সেট ব্যবহার করা বাঞ্ছনীয়, কারণ এটি কোডটি পুনরায় ব্যবহারের অনুমতি দেয় এবং সঠিক দক্ষতা সম্পন্ন লোকদের সন্ধান করা সহজ করে তোলে। যাইহোক, নির্দেশ সেট করে , খরচ, জটিলতা, গতি প্রভাবিত আরাম অফ ব্যবহার, এবং প্রসেসর শারীরিক সীমাবদ্ধতার এবং তাই আমরা একটি আপস আছে: কয়েকটি "মূলধারার" নির্দেশ সেট (এবং অনেক ছোটখাট বেশী), এবং প্রতিটি নির্দেশের সেটে বিভিন্ন বৈশিষ্ট্যযুক্ত অনেকগুলি প্রসেসর রয়েছে।
ওহ, এবং প্রযুক্তি পরিবর্তনের সাথে সাথে এই সমস্ত বাণিজ্য-অফস পরিবর্তিত হয়, সুতরাং নির্দেশিকা সেটগুলি বিকশিত হয়, নতুন উদ্ভূত হয় এবং পুরানো মারা যায়। এমনকি যদি আজকের কোনও "সেরা" নির্দেশিকা সেট থাকে তবে এটি 20 বছরের মধ্যে নাও হতে পারে।
হার্ডওয়্যার বিশদ
সম্ভবত কোনও নির্দেশের সেটের বৃহত্তম নকশার সিদ্ধান্তটি হ'ল শব্দের আকার , অর্থাত্ প্রসেসর কতটা বড় "প্রাকৃতিকভাবে" ম্যানিপুলেট করতে পারে। 8-বিট প্রসেসর 0-255 থেকে সংখ্যার সাথে লেনদেন করেন, যেখানে 32-বিট প্রসেসর 0 থেকে 4,294,967,295 পর্যন্ত সংখ্যার সাথে লেনদেন করেন। একটির জন্য ডিজাইন করা কোডটির জন্য অন্যটির জন্য সম্পূর্ণ পুনর্বিবেচনা করা দরকার।
এক নির্দেশ থেকে অন্য নির্দেশিকায় সেট করা নির্দেশাবলীর অনুবাদ করার বিষয়টি কেবল নয়। একটি সম্পূর্ণ ভিন্ন পদ্ধতির কোনও ভিন্ন নির্দেশের সেটে পছন্দনীয় হতে পারে। উদাহরণস্বরূপ, একটি 8-বিট প্রসেসরে একটি সন্ধানের টেবিলটি আদর্শ হতে পারে, যখন 32-বিট প্রসেসরের উপর একটি গাণিতিক ক্রিয়াকলাপ একই উদ্দেশ্যে আরও ভাল be
নির্দেশের সেটগুলির মধ্যে অন্যান্য বড় পার্থক্য রয়েছে। বেশিরভাগ নির্দেশাবলী চারটি বিভাগে পড়ে:
- গণনা (গাণিতিক এবং যুক্তি)
- নিয়ন্ত্রণ প্রবাহ
- তথ্য স্থানান্তর
- প্রসেসরের কনফিগারেশন
প্রসেসররা কোন ধরণের গণনা সম্পাদন করতে পারে তার পাশাপাশি তারা কীভাবে নিয়ন্ত্রণ প্রবাহ, ডেটা স্থানান্তর এবং প্রসেসরের কনফিগারেশনের কাছে যায় তার মধ্যে পার্থক্য রয়েছে।
উদাহরণস্বরূপ, কিছু এভিআর প্রসেসর গুন বা ভাগ করতে পারে না; সমস্ত x86 প্রসেসর করতে পারেন। আপনি যেমন কল্পনা করতে পারেন, গুণ এবং বিভাগের মতো কাজের জন্য প্রয়োজনীয় সার্কিটরি অপসারণ একটি প্রসেসরটিকে সহজ এবং সস্তা করে তুলতে পারে; এই অপারেশনগুলি এখনও প্রয়োজন হলে সফ্টওয়্যার রুটিন ব্যবহার করে সম্পাদন করা যেতে পারে।
x86 গাণিতিক নির্দেশাবলী মেমরি থেকে তাদের অপারেশনগুলি লোড করতে এবং / অথবা তাদের ফলাফলগুলিকে মেমোরিতে সংরক্ষণ করার অনুমতি দেয়; এআরএম একটি লোড-স্টোর আর্কিটেকচার এবং এইভাবে মেমরি অ্যাক্সেসের জন্য কয়েকটি উত্সর্গীকৃত নির্দেশনা রয়েছে। এদিকে x86 শর্তসাপেক্ষে - শাখার নির্দেশাবলী উত্সর্গ করেছে, আর এআরএম কার্যত সমস্ত নির্দেশকে শর্তসাপেক্ষে কার্যকর করার অনুমতি দেয় । এছাড়াও, এআরএম বেশিরভাগ গাণিতিক নির্দেশাবলীর অংশ হিসাবে বিট-শিফট সম্পাদনের অনুমতি দেয়। এই পার্থক্যগুলি বিভিন্ন পারফরম্যান্স বৈশিষ্ট্য, অভ্যন্তরীণ নকশা এবং চিপের দামের মধ্যে পার্থক্য এবং সমাবেশ ভাষা স্তরে প্রোগ্রামিং কৌশলগুলির মধ্যে পার্থক্য নিয়ে যায়।
উপসংহার
সার্বজনীন অ্যাসেম্বলি ভাষার পক্ষে অসম্ভব যে কারণটি হ'ল, এক নির্দেশ থেকে অন্য নির্দেশে সেট করা অ্যাসেম্বলি কোডটি সঠিকভাবে রূপান্তর করার জন্য, অবশ্যই কোডটি পুনরায় ডিজাইন করতে হবে - কম্পিউটার এখনও কিছু করতে পারে না।