उच्च स्तर के कारण
जब आप इसके बारे में सोचते हैं, तो एक माइक्रोप्रोसेसर एक अद्भुत काम करता है: यह आपको एक मशीन (जैसे कि वॉशिंग मशीन या एलेवेटर) लेने देता है, और सस्ते, बड़े पैमाने पर उत्पादित सिलिकॉन के साथ कस्टम-डिज़ाइन किए गए तंत्र या सर्किट के पूरे हिस्से को बदल देता है। टुकड़ा। आप भागों पर बहुत पैसा बचाते हैं, और डिजाइन पर बहुत समय देते हैं।
लेकिन एक पर लटका, मानक चिप, अनगिनत जगह कस्टम डिजाइन? एक एकल, पूर्ण माइक्रोप्रोसेसर नहीं हो सकता है जो हर एप्लिकेशन के लिए एकदम सही है। कुछ अनुप्रयोगों को बिजली के उपयोग को कम करने की आवश्यकता है लेकिन उन्हें तेज़ होने की आवश्यकता नहीं है; दूसरों को उपवास करने की आवश्यकता है लेकिन कार्यक्रम को आसान बनाने की आवश्यकता नहीं है, दूसरों को कम लागत की आवश्यकता है, आदि।
तो, हमारे पास माइक्रोप्रोसेसर के कई अलग-अलग "स्वाद" हैं, प्रत्येक की अपनी ताकत और कमजोरियों के साथ। यह सभी के लिए वांछनीय है कि वे संगत निर्देश सेट का उपयोग करें, क्योंकि इससे कोड का पुन: उपयोग होता है और लोगों को सही कौशल के साथ खोजना आसान हो जाता है। हालांकि, अनुदेश सेट प्रोसेसर की लागत, जटिलता, गति, आसानी से उपयोग और भौतिक बाधाओं को प्रभावित करता है , और इसलिए हमारे पास एक समझौता है: कुछ "मुख्यधारा" निर्देश सेट (और कई नाबालिग), और प्रत्येक निर्देश सेट के भीतर विभिन्न विशेषताओं के साथ कई प्रोसेसर हैं।
ओह, और जैसे-जैसे तकनीक बदलती है, ये सभी ट्रेड-ऑफ बदलते हैं, इसलिए निर्देश सेट विकसित होते हैं, नए उभरते हैं, और पुराने मर जाते हैं। भले ही आज का "सर्वश्रेष्ठ" निर्देश सेट था, यह 20 वर्षों में नहीं हो सकता है।
हार्डवेयर विवरण
संभवतः एक निर्देश सेट में सबसे बड़ा डिजाइन निर्णय शब्द का आकार है , अर्थात प्रोसेसर कितनी बड़ी संख्या में "स्वाभाविक रूप से" हेरफेर कर सकता है। 8-बिट प्रोसेसर 0-255 नंबर से डील करते हैं, जबकि 32-बिट प्रोसेसर 0 से 4,294,967,295 नंबर के साथ डील करते हैं। एक के लिए डिज़ाइन किए गए कोड को दूसरे के लिए पूरी तरह से पुनर्निर्मित किया जाना चाहिए।
यह केवल एक निर्देश से दूसरे निर्देश के अनुवाद का मामला नहीं है। एक अलग निर्देश सेट में एक पूरी तरह से अलग दृष्टिकोण बेहतर हो सकता है। उदाहरण के लिए, 8-बिट प्रोसेसर पर एक लुकअप टेबल आदर्श हो सकती है, जबकि 32-बिट प्रोसेसर पर एक ही उद्देश्य के लिए एक अंकगणितीय ऑपरेशन बेहतर होगा।
अनुदेश सेट के बीच अन्य प्रमुख अंतर हैं। अधिकांश निर्देश चार श्रेणियों में आते हैं:
- अभिकलन (अंकगणित और तर्क)
- बहाव को काबू करें
- डेटा स्थानांतरण
- प्रोसेसर कॉन्फ़िगरेशन
प्रोसेसर किस प्रकार की संगणनाओं में प्रदर्शन कर सकते हैं, इसके साथ-साथ वे प्रवाह, डेटा स्थानांतरण और प्रोसेसर कॉन्फ़िगरेशन को कैसे नियंत्रित करते हैं, इसके बारे में भिन्नता है।
उदाहरण के लिए, कुछ एवीआर प्रोसेसर न तो गुणा कर सकते हैं और न ही विभाजित कर सकते हैं; जबकि सभी x86 प्रोसेसर कर सकते हैं। जैसा कि आप कल्पना कर सकते हैं, गुणा और विभाजन जैसे कार्यों के लिए आवश्यक सर्किटरी को समाप्त करना एक प्रोसेसर को सरल और सस्ता बना सकता है; यदि आवश्यक हो, तो ये कार्य अभी भी सॉफ़्टवेयर रूटीन का उपयोग करके किया जा सकता है।
x86 अंकगणितीय निर्देशों को अपने ऑपरेंड को मेमोरी से लोड करने और / या उनके परिणामों को मेमोरी में सहेजने की अनुमति देता है; एआरएम एक लोड-स्टोर आर्किटेक्चर है और इस प्रकार मेमोरी तक पहुंचने के लिए केवल कुछ समर्पित निर्देश हैं। इस बीच x86 में सशर्त-शाखा निर्देश समर्पित हैं, जबकि एआरएम व्यावहारिक रूप से सभी निर्देशों को सशर्त निष्पादित करने की अनुमति देता है । इसके अलावा, एआरएम बिट-शिफ्ट को सबसे अधिक अंकगणितीय निर्देशों के हिस्से के रूप में निष्पादित करने की अनुमति देता है। ये अंतर अलग-अलग प्रदर्शन विशेषताओं, आंतरिक डिजाइन और चिप्स की लागत और विधानसभा भाषा स्तर पर प्रोग्रामिंग तकनीकों में अंतर के कारण होते हैं।
निष्कर्ष
यूनिवर्सल असेंबली लैंग्वेज होना असंभव है, यह है कि असेंबली कोड को एक निर्देश सेट से दूसरे में बदलने के लिए, सभी को कोड को फिर से डिजाइन करना होगा - कुछ कंप्यूटर अभी तक नहीं कर सकते हैं।