अनुदेश सेट वास्तुकला

From alpha
Jump to navigation Jump to search

[[कंप्यूटर विज्ञान]] में, एक इंस्ट्रक्शन सेट आर्किटेक्चर (आईएसए), जिसे कंप्यूटर आर्किटेक्चर भी कहा जाता है, कंप्यूटर का एक अमूर्त मॉडल है। एक उपकरण जो उस आईएसए द्वारा वर्णित निर्देशों को निष्पादित करता है, जैसे कि एक केंद्रीय प्रसंस्करण इकाई (सीपीयू), को कार्यान्वयन कहा जाता है।

सामान्य तौर पर, आईएसए समर्थित मशीन कोड, डेटा प्रकार, रजिस्टर (कंप्यूटर), रैंडम एक्सेस मेमोरी के प्रबंधन के लिए हार्डवेयर समर्थन, मूलभूत सुविधाओं (जैसे मेमोरी स्थिरता, संबोधन मोड , आभासी मेमोरी ) और इनपुट/आउटपुट को परिभाषित करता है। आईएसए के कार्यान्वयन के एक परिवार का मॉडल।

एक आईएसए उस आईएसए के कार्यान्वयन पर चलने वाले मशीन कोड के व्यवहार को इस तरह से निर्दिष्ट करता है जो उस कार्यान्वयन की विशेषताओं पर निर्भर नहीं करता है, कार्यान्वयन के बीच द्विआधारी संगतता प्रदान करता है। यह आईएसए के कई कार्यान्वयन को सक्षम बनाता है जो कंप्यूटर प्रदर्शन, भौतिक आकार और मौद्रिक लागत (अन्य चीजों के बीच) जैसी विशेषताओं में भिन्न होते हैं, लेकिन जो एक ही मशीन कोड को चलाने में सक्षम होते हैं, ताकि कम प्रदर्शन, कम लागत वाली मशीन बन सके। सॉफ़्टवेयर को बदले बिना उच्च लागत, उच्च प्रदर्शन वाली मशीन से बदला जा सकता है। यह उस आईएसए के कार्यान्वयन के सूक्ष्मवास्तुकला के विकास को भी सक्षम बनाता है, ताकि आईएसए का एक नया, उच्च-प्रदर्शन कार्यान्वयन सॉफ्टवेयर चला सके जो कार्यान्वयन की पिछली पीढ़ियों पर चलता है।

यदि कोई ऑपरेटिंग सिस्टम किसी विशेष ISA के लिए एक मानक और संगत एप्लिकेशन बाइनरी इंटरफ़ेस (ABI) बनाए रखता है, तो मशीन कोड उस ISA और ऑपरेटिंग सिस्टम के भविष्य के कार्यान्वयन पर चलेगा। हालाँकि, यदि कोई आईएसए एकाधिक ऑपरेटिंग सिस्टम चलाने का समर्थन करता है, तो यह गारंटी नहीं देता है कि एक ऑपरेटिंग सिस्टम के लिए मशीन कोड दूसरे ऑपरेटिंग सिस्टम पर चलेगा, जब तक कि पहला ऑपरेटिंग सिस्टम दूसरे ऑपरेटिंग सिस्टम के लिए निर्मित रनिंग मशीन कोड का समर्थन नहीं करता है।

आईएसए को निर्देश या अन्य क्षमताओं को जोड़कर, या बड़े पते और डेटा मानों के लिए समर्थन जोड़कर बढ़ाया जा सकता है; विस्तारित आईएसए का कार्यान्वयन अभी भी उन एक्सटेंशन के बिना आईएसए के संस्करणों के लिए मशीन कोड निष्पादित करने में सक्षम होगा। उन एक्सटेंशन का उपयोग करने वाला मशीन कोड केवल उन कार्यान्वयनों पर चलेगा जो उन एक्सटेंशन का समर्थन करते हैं।

वे जो बाइनरी अनुकूलता प्रदान करते हैं, वह आईएसए को कम्प्यूटिंग में सबसे मौलिक अमूर्तताओं में से एक बनाता है।

अवलोकन

एक निर्देश सेट आर्किटेक्चर को माइक्रोआर्किटेक्चर से अलग किया जाता है, जो निर्देश सेट को लागू करने के लिए किसी विशेष प्रोसेसर में उपयोग की जाने वाली प्रोसेसर डिज़ाइन तकनीकों का सेट होता है। विभिन्न माइक्रोआर्किटेक्चर वाले प्रोसेसर एक सामान्य निर्देश सेट साझा कर सकते हैं। उदाहरण के लिए, Intel P5 (माइक्रोआर्किटेक्चर) और उन्नत लघु उपकरण ेस Athlon x86 अनुदेश सेट के लगभग समान संस्करण लागू करते हैं, लेकिन उनके आंतरिक डिज़ाइन मौलिक रूप से भिन्न होते हैं।

एक वास्तुकला की अवधारणा, एक विशिष्ट मशीन के डिजाइन से अलग, सिस्टम/360 के डिजाइन चरण के दौरान आईबीएम में फ्रेड ब्रूक्स द्वारा विकसित की गई थी।

Prior to NPL [System/360], the company's computer designers had been free to honor cost objectives not only by selecting technologies but also by fashioning functional and architectural refinements. The SPREAD compatibility objective, in contrast, postulated a single architecture for a series of five processors spanning a wide range of cost and performance. None of the five engineering design teams could count on being able to bring about adjustments in architectural specifications as a way of easing difficulties in achieving cost and performance objectives.[1]: p.137 

कुछ आभासी मशीन ें जो अपने आईएसए के रूप में बाईटकोड का समर्थन करती हैं जैसे कि स्मॉलटॉक, जावा वर्चुअल मशीन और माइक्रोसॉफ्ट की सामान्य भाषा रनटाइम , आमतौर पर उपयोग किए जाने वाले कोड पथों के लिए बाइटकोड को मूल मशीन कोड में अनुवाद करके इसे लागू करती हैं। इसके अलावा, ये वर्चुअल मशीनें व्याख्या द्वारा कम बार उपयोग किए जाने वाले कोड पथों को निष्पादित करती हैं (देखें: बिल्कुल सही समय पर संकलन)। हस्तांतरण ने इस तरह से वीएलआईडब्ल्यू प्रोसेसर के ऊपर x86 निर्देश सेट लागू किया।

आईएसए का वर्गीकरण

ISA को कई अलग-अलग तरीकों से वर्गीकृत किया जा सकता है। एक सामान्य वर्गीकरण वास्तुशिल्प जटिलता के आधार पर है। एक जटिल निर्देश सेट कंप्यूटर (CISC) में कई विशिष्ट निर्देश होते हैं, जिनमें से कुछ का उपयोग व्यावहारिक कार्यक्रमों में शायद ही कभी किया जा सकता है। एक कम निर्देश सेट कंप्यूटर (आरआईएससी) केवल उन निर्देशों को कुशलतापूर्वक लागू करके प्रोसेसर को सरल बनाता है जो अक्सर कार्यक्रमों में उपयोग किए जाते हैं, जबकि कम सामान्य संचालन को सबरूटीन के रूप में कार्यान्वित किया जाता है, जिसके परिणामस्वरूप अतिरिक्त प्रोसेसर निष्पादन समय कम उपयोग से ऑफसेट होता है।[2] अन्य प्रकारों में बहुत लंबा निर्देश शब्द (वीएलआईडब्ल्यू) आर्किटेक्चर और निकट से संबंधित शामिल हैं long instruction word (LIW) and[citation needed] स्पष्ट रूप से समानांतर निर्देश कंप्यूटिंग (ईपीआईसी) आर्किटेक्चर। ये आर्किटेक्चर संकलक को निर्देश जारी करने और शेड्यूलिंग के लिए जिम्मेदार बनाकर आरआईएससी और सीआईएससी की तुलना में कम हार्डवेयर के साथ निर्देश-स्तरीय समानता का फायदा उठाना चाहते हैं।[3] इससे भी कम जटिलता वाले आर्किटेक्चर का अध्ययन किया गया है, जैसे न्यूनतम निर्देश सेट कंप्यूटर (एमआईएससी) और एक-निर्देश सेट कंप्यूटर (ओआईएससी)। ये सैद्धांतिक रूप से महत्वपूर्ण प्रकार हैं, लेकिन इनका व्यावसायीकरण नहीं किया गया है।[4][5]


निर्देश

मशीन_कोड अलग-अलग कथनों या निर्देशों से बनाया गया है। प्रसंस्करण वास्तुकला पर, दिए गए निर्देश निर्दिष्ट कर सकते हैं:

  • opcode (निष्पादित किया जाने वाला निर्देश) उदा. जोड़ें, कॉपी करें, परीक्षण करें
  • कोई भी स्पष्ट ऑपरेंड:
प्रोसेसर रजिस्टर
शाब्दिक/निरंतर मान
एड्रेसिंग मोड का उपयोग मेमोरी तक पहुंचने के लिए किया जाता है

इन सरल निर्देशों को मिलाकर अधिक जटिल ऑपरेशन बनाए जाते हैं, जिन्हें क्रमिक रूप से निष्पादित किया जाता है, या अन्यथा नियंत्रण प्रवाह निर्देशों द्वारा निर्देशित किया जाता है।

निर्देश प्रकार

कई निर्देश सेटों में सामान्य संचालन के उदाहरणों में शामिल हैं:

डेटा प्रबंधन और मेमोरी संचालन

  • प्रोसेसर रजिस्टर को एक निश्चित स्थिर मान पर सेट करें।
  • मेमोरी लोकेशन या रजिस्टर से डेटा को मेमोरी लोकेशन या रजिस्टर में कॉपी करें (मशीन निर्देश को अक्सर मूव कहा जाता है; हालाँकि, यह शब्द भ्रामक है)। इनका उपयोग किसी रजिस्टर की सामग्री, किसी अन्य मेमोरी स्थान की सामग्री या गणना के परिणाम को संग्रहीत करने या बाद में उस पर गणना करने के लिए संग्रहीत डेटा को पुनः प्राप्त करने के लिए किया जाता है। इन्हें अक्सर लोड करें और स्टोर करें ऑपरेशन कहा जाता है।
  • हार्डवेयर उपकरणों से डेटा पढ़ें और लिखें।

अंकगणित और तर्क संचालन

  • दो रजिस्टरों के मानों को जोड़ें, घटाएं, गुणा करें या विभाजित करें, परिणाम को एक रजिस्टर में रखें, संभवतः स्थिति रजिस्टर में एक या अधिक ध्वज (कंप्यूटिंग) सेट करें।[6]
    • increment,decrement कुछ आईएसए में, मामूली मामलों में ऑपरेंड फ़ेच को सहेजना।
  • बिटवाइज़ ऑपरेशन करें, उदाहरण के लिए, रजिस्टरों की एक जोड़ी में संबंधित बिट्स के तार्किक संयोजन और तार्किक विच्छेदन को लेते हुए, एक रजिस्टर में प्रत्येक बिट के तार्किक निषेध को लेते हुए।
  • रजिस्टरों में दो मानों की तुलना करें (उदाहरण के लिए, यह देखने के लिए कि क्या एक कम है, या यदि वे बराबर हैं)।
  • Floating-point instructionफ्लोटिंग-पॉइंट संख्याओं पर अंकगणित के लिए।[6]

नियंत्रण प्रवाह संचालन

  • प्रोग्राम में किसी अन्य स्थान पर शाखा (कंप्यूटर विज्ञान) और वहां निर्देशों को निष्पादित करें।
  • यदि कोई निश्चित शर्त हो तो शाखा को किसी अन्य स्थान पर भेजने की भविष्यवाणी।
  • अप्रत्यक्ष शाखा दूसरे स्थान पर।
  • कोड के दूसरे ब्लॉक को सबरूटीन करें, जबकि अगले निर्देश के स्थान को वापस लौटने के बिंदु के रूप में सहेजें।

कोप्रोसेसर निर्देश

  • कोप्रोसेसर से डेटा लोड/स्टोर करना या सीपीयू रजिस्टरों के साथ आदान-प्रदान करना।
  • कोप्रोसेसर संचालन निष्पादित करें।

जटिल निर्देश

प्रोसेसर अपने निर्देश सेट में जटिल निर्देश शामिल कर सकते हैं। एक एकल जटिल निर्देश कुछ ऐसा करता है जो अन्य कंप्यूटरों पर कई निर्देश ले सकता है। ऐसे निर्देशों को उन निर्देशों द्वारा टाइप किया जाता है जो कई कदम उठाते हैं, कई कार्यात्मक इकाइयों को नियंत्रित करते हैं, या अन्यथा दिए गए प्रोसेसर द्वारा लागू किए गए सरल निर्देशों की तुलना में बड़े पैमाने पर दिखाई देते हैं। जटिल निर्देशों के कुछ उदाहरणों में शामिल हैं:

जटिल निर्देश आरआईएससी अनुदेश सेटों की तुलना में सीआईएससी अनुदेश सेटों में अधिक सामान्य हैं, लेकिन आरआईएससी अनुदेश सेट में उन्हें भी शामिल किया जा सकता है। एमएमएक्स (निर्देश सेट) में आम तौर पर मेमोरी ऑपरेंड के साथ एएलयू संचालन, या मेमोरी के बड़े ब्लॉक को स्थानांतरित करने के निर्देश शामिल नहीं होते हैं, लेकिन अधिकांश आरआईएससी निर्देश सेट में एकल निर्देश, एकाधिक डेटा या वेक्टर प्रसंस्करण निर्देश शामिल होते हैं जो डेटा के कई टुकड़ों पर समान अंकगणितीय ऑपरेशन करते हैं। उसी समय। SIMD निर्देशों में न्यूनतम समय में बड़े वैक्टर और मैट्रिक्स में हेरफेर करने की क्षमता होती है। SIMD निर्देश आमतौर पर ध्वनि, छवि और वीडियो प्रसंस्करण में शामिल एल्गोरिदम के आसान समानांतरकरण की अनुमति देते हैं। विभिन्न SIMD कार्यान्वयनों को MMX (इंस्ट्रक्शन सेट), 3DNow!, और AltiVec जैसे व्यापारिक नामों के तहत बाज़ार में लाया गया है।

निर्देश एन्कोडिंग

एक निर्देश में कई फ़ील्ड हो सकते हैं, जो तार्किक संचालन की पहचान करते हैं, और इसमें स्रोत और गंतव्य पते और स्थिर मान भी शामिल हो सकते हैं। यह एमआईपीएस ऐड इमीडिएट निर्देश है, जो स्रोत और गंतव्य रजिस्टरों के चयन और एक छोटे स्थिरांक को शामिल करने की अनुमति देता है।

पारंपरिक आर्किटेक्चर पर, एक निर्देश में एक ऑपकोड शामिल होता है जो प्रदर्शन करने के लिए ऑपरेशन को निर्दिष्ट करता है, जैसे कि रजिस्टर करने के लिए मेमोरी की सामग्री जोड़ना - और शून्य या अधिक ओपेरंड विनिर्देशक, जो प्रोसेसर रजिस्टर, मेमोरी स्थान या शाब्दिक डेटा निर्दिष्ट कर सकते हैं। ऑपरेंड विनिर्देशकों में उनके अर्थ निर्धारित करने वाले एड्रेसिंग मोड हो सकते हैं या निश्चित फ़ील्ड में हो सकते हैं। वेरी लॉन्ग इंस्ट्रक्शन वर्ड (वीएलआईडब्ल्यू) आर्किटेक्चर में, जिसमें कई माइक्रोकोड आर्किटेक्चर शामिल होते हैं, एक ही निर्देश में एक साथ कई ऑपकोड और ऑपरेंड निर्दिष्ट होते हैं।

कुछ विदेशी निर्देश सेटों में ऑपकोड फ़ील्ड नहीं होता है, जैसे कि परिवहन ट्रिगर वास्तुकला (टीटीए), केवल ऑपरेंड।

अधिकांश स्टैक मशीनों में 0-ऑपरेंड निर्देश सेट होते हैं|0-ऑपरेंड निर्देश सेट होते हैं जिनमें अंकगणित और तार्किक संचालन में किसी भी ऑपरेंड विनिर्देशक फ़ील्ड का अभाव होता है; केवल वे निर्देश जो ऑपरेंड को मूल्यांकन स्टैक पर धकेलते हैं या जो ऑपरेंड को स्टैक से वेरिएबल में पॉप करते हैं, उनमें ऑपरेंड विनिर्देशक होते हैं। निर्देश सेट अधिकांश ALU क्रियाओं को पोस्टफ़िक्स (रिवर्स पोलिश नोटेशन) ऑपरेशंस के साथ करता है जो केवल अभिव्यक्ति स्टैक (अमूर्त डेटा प्रकार) पर काम करते हैं, डेटा रजिस्टरों या मनमाने ढंग से मुख्य मेमोरी कोशिकाओं पर नहीं। यह उच्च-स्तरीय भाषाओं को संकलित करने के लिए बहुत सुविधाजनक हो सकता है, क्योंकि अधिकांश अंकगणितीय अभिव्यक्तियों को आसानी से पोस्टफ़िक्स नोटेशन में अनुवादित किया जा सकता है।[7]

सशर्त निर्देशों में अक्सर एक विधेय क्षेत्र होता है - कुछ बिट्स जो विशिष्ट स्थिति को एन्कोड करते हैं ताकि किसी ऑपरेशन को निष्पादित न करने के बजाय निष्पादित किया जा सके। उदाहरण के लिए, यदि शर्त सही है तो एक सशर्त शाखा निर्देश नियंत्रण स्थानांतरित कर देगा, ताकि निष्पादन कार्यक्रम के एक अलग हिस्से में आगे बढ़ सके, और यदि स्थिति गलत है तो नियंत्रण स्थानांतरित नहीं किया जाएगा, ताकि निष्पादन क्रमिक रूप से जारी रहे। कुछ अनुदेश सेटों में सशर्त चालें भी होती हैं, जिससे चाल निष्पादित की जाएगी, और यदि स्थिति सही है, तो लक्ष्य स्थान में डेटा संग्रहीत किया जाएगा, और निष्पादित नहीं किया जाएगा, और यदि स्थिति गलत है, तो लक्ष्य स्थान संशोधित नहीं किया जाएगा। इसी प्रकार, IBM z/आर्किटेक्चर में एक सशर्त स्टोर निर्देश है। कुछ निर्देश सेटों में प्रत्येक निर्देश में एक विधेय क्षेत्र शामिल होता है; इसे शाखा भविष्यवाणी कहा जाता है।

संकार्यों की संख्या

निर्देश सेट को निर्देशों में स्पष्ट रूप से निर्दिष्ट ऑपरेंड की अधिकतम संख्या के आधार पर वर्गीकृत किया जा सकता है।

(अनुवर्ती उदाहरणों में, ए, बी, और सी (प्रत्यक्ष या गणना किए गए) पते हैं जो मेमोरी कोशिकाओं को संदर्भित करते हैं, जबकि reg1 और इसी तरह मशीन रजिस्टरों को संदर्भित करते हैं।)

सी = ए+बी
  • 0-ऑपरेंड (शून्य-पता मशीनें), तथाकथित स्टैक मशीनें: सभी अंकगणितीय ऑपरेशन स्टैक पर शीर्ष एक या दो स्थितियों का उपयोग करके होते हैं:[8] push a, push b, add, pop c.
    • C = A+B चार निर्देशों की आवश्यकता है.[9] स्टैक मशीनों के लिए, शब्द 0-ऑपरेंड और शून्य-पता अंकगणितीय निर्देशों पर लागू होते हैं, लेकिन सभी निर्देशों पर नहीं, क्योंकि 1-ऑपरेंड पुश और पॉप निर्देशों का उपयोग मेमोरी तक पहुंचने के लिए किया जाता है।
  • 1-ऑपरेंड (एक-पता मशीनें), तथाकथित संचायक मशीनें, प्रारंभिक कंप्यूटर और कई छोटे microcontroller शामिल हैं: अधिकांश निर्देश अंतर्निहित संचायक के साथ एक एकल सही ऑपरेंड (यानी, स्थिर, एक रजिस्टर, या एक मेमोरी स्थान) निर्दिष्ट करते हैं (कंप्यूटिंग) बाएं ऑपरेंड के रूप में (और यदि कोई हो तो गंतव्य): load a, add b, store c.
    • C = A+B तीन निर्देशों की आवश्यकता है.[9]
  • 2-ऑपरेंड - कई सीआईएससी और आरआईएससी मशीनें इस श्रेणी में आती हैं:
    • सीआईएससी - move A सी को; तब add B से सी.
      • C = A+B दो निर्देशों की आवश्यकता है. यह स्पष्ट स्टोर निर्देश के बिना परिणाम को प्रभावी ढंग से 'स्टोर' करता है।
    • सीआईएससी - अक्सर मशीनें तक सीमित होती हैं एक मेमोरी ऑपरेंड प्रति निर्देश: load a,reg1; add b,reg1; store reg1,c; इसके लिए किसी भी मेमोरी मूवमेंट के लिए लोड/स्टोर पेयर की आवश्यकता होती है, भले ही add परिणाम एक अलग स्थान पर संग्रहीत एक संवर्द्धन है, जैसे कि C = A+B, या वही स्मृति स्थान: A = A+B.
      • C = A+B तीन निर्देशों की आवश्यकता है.
    • आरआईएससी - स्पष्ट मेमोरी लोड की आवश्यकता है, निर्देश होंगे: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c.
      • C = A+B चार निर्देशों की आवश्यकता है.
  • 3-ऑपरेंड, डेटा के बेहतर पुन: उपयोग की अनुमति देता है:[10]
    • सीआईएससी - यह या तो एक ही निर्देश बन जाता है: add a,b,c
      • C = A+B एक निर्देश की जरूरत है.
    • सीआईएससी - या, प्रति निर्देश दो मेमोरी ऑपरेंड तक सीमित मशीनों पर, move a,reg1; add reg1,b,c;
      • C = A+B दो निर्देशों की आवश्यकता है.
    • आरआईएससी - अंकगणितीय निर्देश केवल रजिस्टरों का उपयोग करते हैं, इसलिए स्पष्ट 2-ऑपरेंड लोड/स्टोर निर्देशों की आवश्यकता होती है: load a,reg1; load b,reg2; add reg1+reg2->reg3; store reg3,c;
      • C = A+B चार निर्देशों की आवश्यकता है.
      • 2-ऑपरेंड या 1-ऑपरेंड के विपरीत, यह आगे पुन: उपयोग के लिए उपलब्ध रजिस्टरों में ए, बी और सी तीनों मान छोड़ देता है।[10]*अधिक ऑपरेंड—कुछ सीआईएससी मशीनें विभिन्न प्रकार के एड्रेसिंग मोड की अनुमति देती हैं जो 3 से अधिक ऑपरेंड (रजिस्टर या मेमोरी एक्सेस) की अनुमति देती हैं, जैसे वैक्स पॉली बहुपद मूल्यांकन निर्देश।

3-ऑपरेंड निर्देश के तीन रजिस्टरों को एन्कोड करने के लिए आवश्यक बड़ी संख्या में बिट्स के कारण, 16-बिट निर्देश वाले आरआईएससी आर्किटेक्चर हमेशा 2-ऑपरेंड डिज़ाइन होते हैं, जैसे एटमेल AVR32, टिम SP430 430 और एआरएम अंगूठा के कुछ संस्करण . आरआईएससी आर्किटेक्चर जिनमें 32-बिट निर्देश होते हैं, वे आमतौर पर 3-ऑपरेंड डिज़ाइन होते हैं, जैसे एआरएम वास्तुकला, एवीआर 32, एमआईपीएस वास्तुकला, पावर आईएसए और एसपीएआरसी आर्किटेक्चर।

प्रत्येक निर्देश स्पष्ट रूप से कुछ संख्या में ऑपरेंड (रजिस्टर, मेमोरी स्थान, या तत्काल मान) निर्दिष्ट करता है। कुछ निर्देश एक या दोनों ऑपरेंड को अंतर्निहित रूप से देते हैं, जैसे कि स्टैक (डेटा संरचना) के शीर्ष पर या एक अंतर्निहित रजिस्टर में संग्रहीत किया जाता है। यदि कुछ ऑपरेंड अंतर्निहित रूप से दिए गए हैं, तो निर्देश में कम ऑपरेंड निर्दिष्ट करने की आवश्यकता है। जब कोई गंतव्य ऑपरेंड स्पष्ट रूप से गंतव्य निर्दिष्ट करता है, तो एक अतिरिक्त ऑपरेंड की आपूर्ति की जानी चाहिए। नतीजतन, एक निर्देश में एन्कोड किए गए ऑपरेंड की संख्या तार्किक या अंकगणितीय ऑपरेशन (आरिटी) के लिए गणितीय रूप से आवश्यक तर्कों की संख्या से भिन्न हो सकती है। ऑपरेंड को या तो निर्देश के ऑपकोड प्रतिनिधित्व में एन्कोड किया जाता है, या फिर ऑपकोड के बाद मान या पते के रूप में दिया जाता है।

रजिस्टर दबाव

रजिस्टर दबाव कार्यक्रम निष्पादन के दौरान किसी भी समय मुफ्त रजिस्टरों की उपलब्धता को मापता है। जब बड़ी संख्या में उपलब्ध रजिस्टर उपयोग में हों तो रजिस्टर का दबाव अधिक होता है; इस प्रकार, रजिस्टर दबाव जितना अधिक होगा, उतनी ही अधिक बार रजिस्टर सामग्री को मेमोरी में स्पिलिंग रजिस्टर करें करना होगा। किसी आर्किटेक्चर में रजिस्टरों की संख्या बढ़ाने से रजिस्टर दबाव कम हो जाता है लेकिन लागत बढ़ जाती है।[11] जबकि एआरएम थंब जैसे एम्बेडेड निर्देश सेट अत्यधिक उच्च रजिस्टर दबाव से ग्रस्त हैं क्योंकि उनके पास छोटे रजिस्टर सेट हैं, सामान्य प्रयोजन आरआईएससी आईएसए जैसे एमआईपीएस आर्किटेक्चर और डीईसी अल्फा कम रजिस्टर दबाव का आनंद लेते हैं। x86-64 जैसे सीआईएससी आईएसए छोटे रजिस्टर सेट होने के बावजूद कम रजिस्टर दबाव प्रदान करते हैं। यह कई एड्रेसिंग मोड और ऑप्टिमाइज़ेशन (जैसे सब-रजिस्टर एड्रेसिंग, एएलयू निर्देशों में मेमोरी ऑपरेंड, एब्सोल्यूट एड्रेसिंग, पीसी-रिलेटिव एड्रेसिंग और रजिस्टर-टू-रजिस्टर स्पिल्स) के कारण है जो सीआईएससी आईएसए ऑफर करते हैं।[12]


निर्देश लंबाई

किसी निर्देश का आकार या लंबाई व्यापक रूप से भिन्न होती है, कुछ माइक्रोकंट्रोलर में चार बिट्स से लेकर कुछ बहुत लंबे निर्देश शब्द प्रणालियों में कई सैकड़ों बिट्स तक। निजी कंप्यूटर , मेनफ़्रेम कंप्यूटर और सुपर कंप्यूटर में उपयोग किए जाने वाले प्रोसेसर का न्यूनतम निर्देश आकार 8 और 64 बिट के बीच होता है। x86 पर सबसे लंबा संभव निर्देश 15 बाइट्स (120 बिट्स) है।[13] एक निर्देश सेट के भीतर, अलग-अलग निर्देशों की लंबाई अलग-अलग हो सकती है। कुछ आर्किटेक्चर में, विशेष रूप से अधिकांश कम निर्देश सेट कंप्यूटर (आरआईएससी), instructions are a fixed length, आमतौर पर उस आर्किटेक्चर के शब्द (डेटा प्रकार) के अनुरूप होता है। अन्य आर्किटेक्चर में, निर्देशों में चर-लंबाई कोड होता है, आमतौर पर एक बाइट या आधे शब्द के अभिन्न गुणक। कुछ, जैसे कि थंब-एक्सटेंशन वाले ARMv7 में मिश्रित चर एन्कोडिंग है, जो कि दो निश्चित हैं, आमतौर पर 32-बिट और 16-बिट एन्कोडिंग, जहां निर्देशों को स्वतंत्र रूप से मिश्रित नहीं किया जा सकता है, लेकिन उन्हें एक शाखा (या ARMv8 में अपवाद सीमा) के बीच स्विच किया जाना चाहिए ).

कई कारणों से चर-लंबाई निर्देशों की तुलना में निश्चित-लंबाई निर्देशों को संभालना कम जटिल होता है (यह जांचने की आवश्यकता नहीं है कि कोई निर्देश कैश लाइन या वर्चुअल मेमोरी पेज सीमा तक फैला हुआ है या नहीं,[10]उदाहरण के लिए), और इसलिए गति के लिए अनुकूलन करना कुछ हद तक आसान है।

कोड घनत्व

1960 के दशक की शुरुआत में कंप्यूटरों में, मुख्य मेमोरी महंगी और बहुत सीमित थी, यहां तक ​​कि मेनफ्रेम पर भी। यह सुनिश्चित करने के लिए कि यह सीमित मेमोरी में फिट होगा, किसी प्रोग्राम के आकार को छोटा करना अक्सर केंद्रीय होता था। इस प्रकार किसी विशेष कार्य को करने के लिए आवश्यक निर्देशों का आकार, कोड घनत्व, किसी भी निर्देश सेट की एक महत्वपूर्ण विशेषता थी। यह शुरुआत में मिनी कंप्यूटर और फिर माइक्रोप्रोसेसरों की छोटी यादों पर महत्वपूर्ण रहा। स्मार्टफोन एप्लिकेशन, धीमे इंटरनेट कनेक्शन पर ब्राउज़र में डाउनलोड किए गए एप्लिकेशन और एम्बेडेड एप्लिकेशन के लिए रोम में घनत्व आज भी महत्वपूर्ण बना हुआ है। बढ़े हुए घनत्व का एक अधिक सामान्य लाभ कैश और निर्देश प्रीफ़ेच की प्रभावशीलता में सुधार है।

उच्च कोड घनत्व वाले कंप्यूटरों में अक्सर प्रक्रिया प्रविष्टि, पैरामीटरयुक्त रिटर्न, लूप आदि के लिए जटिल निर्देश होते हैं (इसलिए पूर्वव्यापी नाम कॉम्प्लेक्स इंस्ट्रक्शन सेट कंप्यूटर, जटिल इंस्ट्रक्शन सेट कंप्यूटर रखा गया है)। हालाँकि, अधिक विशिष्ट, या अक्सर, CISC निर्देश केवल एक बुनियादी ALU ऑपरेशन को जोड़ते हैं, जैसे कि ऐड, मेमोरी में एक या अधिक ऑपरेंड की पहुंच के साथ (प्रत्यक्ष, अप्रत्यक्ष, अनुक्रमित, आदि जैसे एड्रेसिंग मोड का उपयोग करके)। कुछ आर्किटेक्चर दो या तीन ऑपरेंड (परिणाम सहित) को सीधे मेमोरी में रखने की अनुमति दे सकते हैं या स्वचालित पॉइंटर इंक्रीमेंट आदि जैसे कार्य करने में सक्षम हो सकते हैं। सॉफ्टवेयर-कार्यान्वित निर्देश सेट में और भी अधिक जटिल और शक्तिशाली निर्देश हो सकते हैं।

कम निर्देश-सेट कंप्यूटर, कम निर्देश-सेट कंप्यूटर, पहली बार तेजी से बढ़ती मेमोरी सबसिस्टम की अवधि के दौरान व्यापक रूप से लागू किए गए थे। वे कार्यान्वयन सर्किटरी को सरल बनाने के लिए कोड घनत्व का त्याग करते हैं, और उच्च घड़ी आवृत्तियों और अधिक रजिस्टरों के माध्यम से प्रदर्शन को बढ़ाने का प्रयास करते हैं। एक एकल आरआईएससी निर्देश आम तौर पर केवल एक ही ऑपरेशन करता है, जैसे रजिस्टरों को जोड़ना या मेमोरी स्थान से रजिस्टर में लोड करना। एक आरआईएससी निर्देश सेट में आम तौर पर एक निश्चित #निर्देश लंबाई होती है, जबकि एक विशिष्ट सीआईएससी निर्देश सेट में व्यापक रूप से भिन्न लंबाई के निर्देश होते हैं। हालाँकि, चूंकि आरआईएससी कंप्यूटरों को किसी दिए गए कार्य को लागू करने के लिए आमतौर पर अधिक और अक्सर लंबे निर्देशों की आवश्यकता होती है, वे स्वाभाविक रूप से बस बैंडविड्थ और कैश मेमोरी का कम इष्टतम उपयोग करते हैं।

एआरएम आर्किटेक्चर # थंब और एवीआर 32 जैसे कुछ एम्बेडेड आरआईएससी आईएसए आमतौर पर कोड संपीड़न नामक तकनीक के कारण बहुत उच्च घनत्व प्रदर्शित करते हैं। यह तकनीक दो 16-बिट निर्देशों को एक 32-बिट शब्द में पैक करती है, जिसे फिर डिकोड चरण में अनपैक किया जाता है और दो निर्देशों के रूप में निष्पादित किया जाता है।[14] मिनिमल इंस्ट्रक्शन सेट कंप्यूटर (एमआईएससी) आमतौर पर स्टैक मशीन का एक रूप है, जहां कुछ अलग-अलग निर्देश (8-32) होते हैं, ताकि कई निर्देशों को एक ही मशीन शब्द में फिट किया जा सके। इस प्रकार के कोर को लागू करने के लिए अक्सर थोड़ा सिलिकॉन लगता है, इसलिए उन्हें क्षेत्र में प्रोग्राम की जा सकने वाली द्वार श्रंखला या मल्टी कोर रूप में आसानी से महसूस किया जा सकता है। MISC का कोड घनत्व RISC के कोड घनत्व के समान है; किसी कार्य को करने के लिए अधिक आदिम निर्देशों की आवश्यकता से बढ़े हुए निर्देश घनत्व की भरपाई की जाती है।[15][failed verification] कोड घनत्व में सुधार के लिए एक तंत्र के रूप में निष्पादन योग्य संपीड़न पर शोध किया गया है। कोलमोगोरोव जटिलता का गणित इसकी चुनौतियों और सीमाओं का वर्णन करता है।

व्यवहार में, कोड घनत्व भी कंपाइलर पर निर्भर करता है। अधिकांश अनुकूलन कंपाइलरों में विकल्प होते हैं जो नियंत्रित करते हैं कि निष्पादन गति के लिए कोड पीढ़ी को अनुकूलित करना है या कोड घनत्व के लिए। उदाहरण के लिए, जीएनयू कंपाइलर संग्रह में छोटे मशीन कोड आकार के लिए अनुकूलन करने के लिए -Os का विकल्प है, और बड़े मशीन कोड की कीमत पर निष्पादन गति के लिए अनुकूलन करने के लिए -O3 का विकल्प है।

प्रतिनिधित्व

किसी प्रोग्राम को बनाने वाले निर्देशों को शायद ही कभी उनके आंतरिक, संख्यात्मक रूप (मशीन कोड) का उपयोग करके निर्दिष्ट किया जाता है; उन्हें प्रोग्रामर द्वारा असेंबली भाषा का उपयोग करके निर्दिष्ट किया जा सकता है या, आमतौर पर, कंपाइलर द्वारा उच्च-स्तरीय प्रोग्रामिंग भाषाओं से उत्पन्न किया जा सकता है।[16]

डिज़ाइन

निर्देश सेटों का डिज़ाइन एक जटिल मुद्दा है। माइक्रोप्रोसेसर के इतिहास में दो चरण थे। पहला CISC (कॉम्प्लेक्स इंस्ट्रक्शन सेट कंप्यूटर) था, जिसमें कई अलग-अलग निर्देश थे। हालाँकि, 1970 के दशक में, आईबीएम जैसी जगहों ने शोध किया और पाया कि सेट में कई निर्देशों को समाप्त किया जा सकता है। परिणाम आरआईएससी (रिड्यूस्ड इंस्ट्रक्शन सेट कंप्यूटर) था, एक आर्किटेक्चर जो निर्देशों के एक छोटे सेट का उपयोग करता है। एक सरल निर्देश सेट उच्च गति, कम प्रोसेसर आकार और कम बिजली की खपत की संभावना प्रदान कर सकता है। हालाँकि, एक अधिक जटिल सेट सामान्य संचालन को अनुकूलित कर सकता है, मेमोरी और सीपीयू कैश दक्षता में सुधार कर सकता है, या प्रोग्रामिंग को सरल बना सकता है।

कुछ निर्देश सेट डिज़ाइनर किसी प्रकार के सिस्टम कॉल या सॉफ़्टवेयर व्यवधान के लिए एक या अधिक ऑपकोड आरक्षित करते हैं। उदाहरण के लिए, एमओएस टेक्नोलॉजी 6502 00 का उपयोग करता हैH, ज़िलॉग Z80 आठ कोड C7,CF,D7,DF,E7,EF,F7,FF का उपयोग करता हैH[17] जबकि Motorola 68000 A000..AFFF श्रेणी में कोड का उपयोग करता हैH. यदि निर्देश सेट पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताएँ को पूरा करता है तो तेज़ वर्चुअल मशीनों को लागू करना बहुत आसान है।[clarification needed]

प्रतिरक्षा-जागरूक प्रोग्रामिंग में उपयोग की जाने वाली एनओपी स्लाइड को लागू करना बहुत आसान है यदि मेमोरी की अनप्रोग्राम्ड स्थिति को एनओपी (कोड) के रूप में समझा जाता है।[dubious ]

एकाधिक प्रोसेसर वाले सिस्टम पर, गैर-अवरुद्ध सिंक्रोनाइज़ेशन एल्गोरिदम को लागू करना बहुत आसान है[citation needed] यदि निर्देश सेट में लाएँ-और-जोड़ें, लोड-लिंक/स्टोर-कंडीशनल (एलएल/एससी), या परमाणु तुलना-और-स्वैप जैसी किसी चीज़ के लिए समर्थन शामिल है।

निर्देश सेट कार्यान्वयन

किसी दिए गए निर्देश सेट को विभिन्न तरीकों से लागू किया जा सकता है। किसी विशेष निर्देश सेट को लागू करने के सभी तरीके एक ही प्रोग्टक्कर मारना िंग मॉडल प्रदान करते हैं, और उस निर्देश सेट के सभी कार्यान्वयन समान निष्पादन योग्य चलाने में सक्षम होते हैं। किसी निर्देश सेट को लागू करने के विभिन्न तरीके लागत, प्रदर्शन, बिजली की खपत, आकार आदि के बीच अलग-अलग ट्रेडऑफ़ देते हैं।

किसी प्रोसेसर के माइक्रोआर्किटेक्चर को डिज़ाइन करते समय, इंजीनियर हार्ड-वायर्ड इलेक्ट्रॉनिक सर्किटरी (अक्सर अलग से डिज़ाइन किए गए) के ब्लॉक का उपयोग करते हैं जैसे कि एडर्स, मल्टीप्लेक्सर्स, काउंटर, रजिस्टर, एएलयू इत्यादि। किसी प्रकार की रजिस्टर ट्रांसफर भाषा का उपयोग अक्सर डिकोडिंग का वर्णन करने के लिए किया जाता है और इस भौतिक माइक्रोआर्किटेक्चर का उपयोग करके आईएसए के प्रत्येक निर्देश का अनुक्रमण। इस विवरण को लागू करने के लिए नियंत्रण इकाई बनाने के दो बुनियादी तरीके हैं (हालांकि कई डिज़ाइन मध्य तरीकों या समझौतों का उपयोग करते हैं):

  1. कुछ कंप्यूटर डिज़ाइन संपूर्ण निर्देश सेट डिकोडिंग और अनुक्रमण को हार्डवायर करते हैं (बाकी माइक्रोआर्किटेक्चर की तरह)।
  2. अन्य डिज़ाइन ऐसा करने के लिए माइक्रोकोड रूटीन या टेबल (या दोनों) का उपयोग करते हैं, केवल-पढ़ने योग्य मेमोरी या लिखने योग्य रैम (लिखने योग्य नियंत्रण स्टोर), प्रोग्राम करने योग्य तर्क सरणी, या दोनों का उपयोग करते हैं।

लिखने योग्य नियंत्रण स्टोर के साथ कुछ माइक्रोकोडेड सीपीयू डिज़ाइन इसका उपयोग निर्देश सेट को बदलने की अनुमति देने के लिए करते हैं (उदाहरण के लिए, रिकर्सिवली प्रोसेसर और इम्सिस टुकड़ा)।[18] पुन: कॉन्फ़िगर करने योग्य कंप्यूटिंग के लिए डिज़ाइन किए गए सीपीयू फ़ील्ड-प्रोग्रामेबल गेट एरेज़ (एफपीजीए) का उपयोग कर सकते हैं।

एक आईएसए एक दुभाषिया (कंप्यूटिंग) द्वारा सॉफ्टवेयर में एमुलेटर भी हो सकता है। स्वाभाविक रूप से, ओवरहेड व्याख्या के कारण, यह एम्युलेटेड हार्डवेयर पर सीधे चलने वाले प्रोग्रामों की तुलना में धीमा है, जब तक कि एम्यूलेटर चलाने वाला हार्डवेयर तीव्रता का क्रम न हो। आज, नए आईएसए या माइक्रोआर्किटेक्चर के विक्रेताओं के लिए हार्डवेयर कार्यान्वयन तैयार होने से पहले सॉफ्टवेयर डेवलपर्स को सॉफ्टवेयर एमुलेटर उपलब्ध कराना आम बात है।

अक्सर कार्यान्वयन के विवरण का निर्देश सेट के लिए चयनित विशेष निर्देशों पर गहरा प्रभाव पड़ता है। उदाहरण के लिए, निर्देश पाइपलाइन के कई कार्यान्वयन प्रति निर्देश केवल एक मेमोरी लोड या मेमोरी स्टोर की अनुमति देते हैं, जिससे लोड-स्टोर आर्किटेक्चर (आरआईएससी) बनता है। एक अन्य उदाहरण के लिए, निर्देश पाइपलाइन को लागू करने के कुछ शुरुआती तरीकों के कारण देरी हुई।

हाई-स्पीड डिजिटल सिग्नल प्रोसेसिंग की मांगों ने विपरीत दिशा में धकेल दिया है - निर्देशों को एक विशेष तरीके से लागू करने के लिए मजबूर किया है। उदाहरण के लिए, डिजिटल फिल्टर को तेजी से निष्पादित करने के लिए, एक विशिष्ट डिजिटल सिग्नल प्रोसेसर (डीएसपी) में मैक निर्देश को एक प्रकार के हार्वर्ड वास्तुकला का उपयोग करना चाहिए जो एक निर्देश और दो डेटा शब्दों को एक साथ ला सकता है, और इसके लिए एकल-चक्र गुणा-संचय की आवश्यकता होती है द्विआधारी गुणक.

यह भी देखें

संदर्भ

  1. Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991). IBM's 360 and Early 370 Systems. MIT Press. ISBN 0-262-16123-0.
  2. Crystal Chen; Greg Novick; Kirk Shimano (December 16, 2006). "RISC Architecture: RISC vs. CISC". cs.stanford.edu. Retrieved February 21, 2015.
  3. Schlansker, Michael S.; Rau, B. Ramakrishna (February 2000). "EPIC: Explicitly Parallel Instruction Computing". Computer. 33 (2). doi:10.1109/2.820037.
  4. Shaout, Adnan; Eldos, Taisir (Summer 2003). "कंप्यूटर आर्किटेक्चर के वर्गीकरण पर". International Journal of Science and Technology. 14: 3. Retrieved March 2, 2023.
  5. Gilreath, William F.; Laplante, Phillip A. (December 6, 2012). Computer Architecture: A Minimalist Perspective. Springer Science+Business Media. ISBN 978-1-4615-0237-1.
  6. 6.0 6.1 Hennessy & Patterson 2003, p. 108.
  7. Durand, Paul. "निर्देश सेट आर्किटेक्चर (आईएसए)". Introduction to Computer Science CS 0.
  8. Hennessy & Patterson 2003, p. 92.
  9. 9.0 9.1 Hennessy & Patterson 2003, p. 93.
  10. 10.0 10.1 10.2 Cocke, John; Markstein, Victoria (January 1990). "The evolution of RISC technology at IBM" (PDF). IBM Journal of Research and Development. 34 (1): 4–11. doi:10.1147/rd.341.0004. Retrieved 2022-10-05.
  11. Page, Daniel (2009). "11. Compilers". कंप्यूटर वास्तुकला का एक व्यावहारिक परिचय. Springer. p. 464. Bibcode:2009pica.book.....P. ISBN 978-1-84882-255-9.
  12. Venkat, Ashish; Tullsen, Dean M. (2014). Harnessing ISA Diversity: Design of a Heterogeneous-ISA Chip Multiprocessor. 41st Annual International Symposium on Computer Architecture.
  13. "Intel® 64 and IA-32 Architectures Software Developer's Manual". Intel Corporation. Retrieved 5 October 2022.
  14. Weaver, Vincent M.; McKee, Sally A. (2009). नए आर्किटेक्चर के लिए कोड घनत्व संबंधी चिंताएँ. IEEE International Conference on Computer Design. CiteSeerX 10.1.1.398.1967. doi:10.1109/ICCD.2009.5413117.
  15. "जोखिम बनाम सीआईएससी". cs.stanford.edu. Retrieved 2021-12-18.
  16. Hennessy & Patterson 2003, p. 120.
  17. Ganssle, Jack (February 26, 2001). "प्रोएक्टिव डिबगिंग". embedded.com.
  18. "Great Microprocessors of the Past and Present (V 13.4.0)". cpushack.net. Retrieved 2014-07-25.


अग्रिम पठन


बाहरी संबंध