मशीन अनुदेश, संबोधन विधियाँ व आँकड़ा-पथ
संबोधन विधियाँ, स्मृति-पहुँचों से गिनी गईं
| विधि | प्रचालक कहाँ है | अतिरिक्त स्मृति-पहुँच |
|---|---|---|
| तात्कालिक | स्वयं अनुदेश में | 0 |
| रजिस्टर | रजिस्टर में | 0 |
| प्रत्यक्ष (निरपेक्ष) | अनुदेश में दिए पते पर | 1 |
| रजिस्टर अप्रत्यक्ष | रजिस्टर में रखे पते पर | 1 |
| अप्रत्यक्ष | अनुदेश के पते पर संचित पते पर | 2 |
| अनुक्रमित / आधार + विचलन | रजिस्टर + विस्थापन पर | 1 (योग निःशुल्क) |
| PC-सापेक्ष | PC + विस्थापन पर | 1, और कोड स्थानांतरणीय |
ADD R1, @X जैसा अनुदेश देकर कुल स्मृति-संदर्भ पूछता प्रश्न तीन चाहता है — एक अनुदेश लाने हेतु, दो प्रचालक हेतु — और सर्वाधिक सामान्य गलत उत्तर फ़ेच गिनता है और भूल जाता है कि अप्रत्यक्षता दो बार होती है।आँकड़ा-पथ तथा उसे नियंत्रित करने के दो तरीके
प्रत्येक अनुदेश वही बाह्य चक्र चलाता है — फ़ेच, विकोड, निष्पादन — और आँकड़ा-पथ वह हार्डवेयर है जिस पर वह चलता है: प्रोग्राम गणक, अनुदेश रजिस्टर, रजिस्टर संचिका, ALU, तथा उनके बीच बस। जो बदलता है वह यह है कि प्रत्येक चरण कितने घड़ी-चक्र लेता है और चरण किस क्रम में चलाए जाते हैं। एक-बस आँकड़ा-पथ को तीन-बस वाले से अधिक चक्र चाहिए क्योंकि एक समय में एक ही अंतरण हो सकता है, और इसीलिए "यह अनुदेश कितने चक्र लेता है" का उत्तर बस-संरचना दिए जाने पर ही संभव है।
| पक्ष | तारित | सूक्ष्म-प्रोग्रामित |
|---|---|---|
| वह क्या है | नियत क्रमिक परिपथ | नियंत्रण-स्मृति में सूक्ष्म-अनुदेश |
| गति | तेज़ — नियंत्रण-स्मृति पठन नहीं | धीमा — प्रत्येक चरण एक स्मृति-पठन |
| अनुदेश-समुच्चय बदलना | परिपथ का पुनः अभिकल्प आवश्यक | सूक्ष्म-कोड पुनर्लेखन — पुनर्तारण नहीं |
| उपयुक्त | छोटे, नियमित समुच्चय — RISC | बड़े, अनियमित समुच्चय — CISC |
मुख्य बिंदु
- संबोधन विधि से स्मृति-पहुँच गिनें: तात्कालिक व रजिस्टर 0, प्रत्यक्ष व रजिस्टर-अप्रत्यक्ष 1, अप्रत्यक्ष 2।
- अप्रत्यक्ष ही वह एकमात्र विधि है जिसमें स्मृति में अप्रत्यक्षता है, अतः प्रश्न गणना जाँचने हेतु उसे प्रयोग करते हैं।
- कुल स्मृति-संदर्भों में अनुदेश-फ़ेच सम्मिलित है — अप्रत्यक्ष प्रचालक वाला अनुदेश तीन लेता है।
- PC-सापेक्ष संबोधन ही कोड को स्थानांतरणीय बनाता है।
- प्रति अनुदेश चक्र बस-संरचना पर निर्भर हैं — एक-बस आँकड़ा-पथ को तीन-बस से अधिक चाहिए।
- तारित नियंत्रण तेज़ व नियत है; सूक्ष्म-प्रोग्रामित धीमा व बिना पुनर्तारण परिवर्तनीय।
- RISC बनाम CISC नियमितता का विषय है, अनुदेश-संख्या का नहीं — नियमितता ही पाइपलाइनन देती है।
अभ्यास प्रश्न (8)
उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।
अनुदेश ADD R1, @X अपने दूसरे प्रचालक हेतु अप्रत्यक्ष संबोधन प्रयोग करता है। अनुदेश-फ़ेच गिनते हुए, उसके निष्पादन में कुल कितने स्मृति-संदर्भ आवश्यक हैं?
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 3
एक संदर्भ अनुदेश लाता है। तत्पश्चात् अप्रत्यक्ष संबोधन को दो और चाहिए: पहला X पर संचित पता पढ़ता है, और दूसरा उस पते से प्रचालक। कुल तीन। दोनों गलत उत्तर शिक्षाप्रद हैं — 2 भूल जाता है कि अप्रत्यक्षता दुहरा निर्देशन है और @X को प्रत्यक्ष प्रचालक मानता है, और 1 केवल फ़ेच गिनता है। रजिस्टर अप्रत्यक्ष कुल दो देता, और वही लगभग समान विधि है जिसे प्रश्न वस्तुतः पृथक् कर रहा है।कौन-सी संबोधन विधि को अनुदेश-फ़ेच के अतिरिक्त कोई स्मृति-पहुँच नहीं चाहिए?
उत्तर देखें
उत्तर: B — तात्कालिक
तात्कालिक विधि में प्रचालक अनुदेश का एक क्षेत्र है, अतः अनुदेश लाने ने उसे पहले ही ला दिया — शून्य अतिरिक्त पहुँच। रजिस्टर विधि भी शून्य लेती है, और जब वह दी जाए तो वह इस प्रश्न का दूसरा सही उत्तर है। प्रत्यक्ष व अनुक्रमित प्रत्येक एक लेती है, और रजिस्टर अप्रत्यक्ष एक। आत्मसात् करने योग्य प्रतिरूप यह है कि विधि ठीक तब स्मृति-पहुँच लेती है जब प्रचालक स्मृति में रहता हो: तात्कालिक उसे अनुदेश में रखती है, रजिस्टर उसे रजिस्टर संचिका में, और शेष सब को जाकर लाना पड़ता है।तारित नियंत्रण की तुलना में सूक्ष्म-प्रोग्रामित नियंत्रण है:
उत्तर देखें
उत्तर: B — धीमा व संशोधित करना सरल
सूक्ष्म-प्रोग्रामित नियंत्रण नियंत्रण-क्रम को नियंत्रण-स्मृति में सूक्ष्म-अनुदेशों के रूप में संचित करता है, अतः प्रत्येक चरण एक नियंत्रण-स्मृति पठन लेता है — वही मंदता है — और अनुदेश-समुच्चय बदलने का अर्थ परिपथ के पुनः अभिकल्प के बजाय सूक्ष्म-कोड पुनर्लेखन है, जो लचीलापन है। तारित नियंत्रण दर्पण-प्रतिबिंब है: नियत क्रमिक परिपथ, तेज़ क्योंकि पढ़ने योग्य कुछ नहीं, और बदलने हेतु पुनः अभिकल्प आवश्यक। विकल्प C वह उत्तर है जो अभ्यर्थी यह मानकर देता है कि नई या अधिक परिष्कृत तकनीक को दोनों अक्षों पर जीतना ही चाहिए; सम्पूर्ण अभिप्राय यह है कि वह एक सौदा है, और वही सौदा तय करता है कि मशीन किस शैली का अनुदेश-समुच्चय वहन कर सकती है।निम्नलिखित में कौन RISC अनुदेश-समुच्चय के अभिलक्षण हैं? (एक से अधिक सही हो सकते हैं।)
उत्तर देखें
उत्तर: A — नियत-लंबाई अनुदेश; C — स्मृति तक पहुँच केवल स्पष्ट लोड व स्टोर अनुदेशों से
A व C, और वे मिलकर व्यवहार में "नियमितता" का अर्थ हैं। नियत-लंबाई अनुदेश वर्तमान अनुदेश के विकोडित होने से पूर्व अगला फ़ेच आरंभ करने देते हैं, और स्मृति-यातायात को लोड व स्टोर तक सीमित रखना प्रत्येक अंकगणित अनुदेश को पूर्वानुमेय चक्र-संख्या में रखता है — दोनों गहन पाइपलाइन की पूर्वापेक्षाएँ। B, CISC गुण है: अंकगणित अनुदेश को स्मृति तक पहुँचने देना उसकी विलंबता अप्रत्याशित बना देता है। D भी CISC की ओर झुका है; छोटा नियमित समुच्चय ही तारित नियंत्रण को व्यावहारिक बनाता है, और तारित नियंत्रण दोनों में तेज़ है। ध्यान दें कि "कम अनुदेश" उत्तर में कहीं नहीं आता — गणना परिणाम है, परिभाषा नहीं।एक मशीन में 16-बिट अनुदेश, 8 संबोधन विधियाँ व 32 सामान्य-प्रयोजन रजिस्टर हैं। यदि किसी अनुदेश में एक रजिस्टर प्रचालक तथा मोड-क्षेत्र सहित एक स्मृति प्रचालक हो, तो ऑपकोड हेतु कितने बिट शेष रहते हैं?
उत्तर देखें
उत्तर: A — 3
32 रजिस्टरों को log₂32 = 5 बिट चाहिए; 8 संबोधन विधियों को log₂8 = 3 बिट। 16-बिट अनुदेश के साथ, तथा स्मृति प्रचालक हेतु उस रजिस्टर का अपना 5-बिट क्षेत्र जिस पर मोड लागू है, यह 5 + 3 + 5 = 13 बिट प्रचालक-विनिर्देश है, जिससे ऑपकोड हेतु 16 − 13 = 3 बिट शेष — केवल आठ अनुदेशों हेतु पर्याप्त, और ठीक वही दबाव वास्तविक मशीनों को परिवर्ती-लंबाई कूटन की ओर ढकेलता है। अंकगणित सरल है और अंक व्यवस्था में खोए जाते हैं: प्रत्येक क्षेत्र किसी गणना का log₂ है, अतः 32 रजिस्टर 5 बिट हैं, 32 नहीं, और 8 विधियाँ 3 बिट, 8 नहीं। विकल्प B वही दूसरी चूक करता है।शाखा अनुदेशों हेतु PC-सापेक्ष संबोधन मुख्यतः इसलिए वरीय है कि:
उत्तर देखें
उत्तर: B — वह कोड को स्थानांतरणीय बनाता है
PC-सापेक्ष शाखा विस्थापन संचित करती है, निरपेक्ष पता नहीं, अतः कोड का सम्पूर्ण खंड स्मृति में कहीं भी लादा जा सकता है और उसके भीतर प्रत्येक शाखा फिर भी सही स्थान पर पहुँचती है — वही स्थानांतरणीयता है, और लोडर तथा साझा पुस्तकालय उसी पर निर्भर हैं। विकल्प C उलटा है: विस्थापन क्षेत्र प्रायः पूर्ण पते से छोटा होता है, अतः परिसर अधिक सीमित है, बड़ा नहीं — सीमा वास्तविक है और इसीलिए लंबी कूदों को भिन्न विधि चाहिए। विकल्प A असत्य है, क्योंकि शाखा-लक्ष्य अनुदेश फिर भी लाना पड़ता है।स्वतः-वृद्धि संबोधन विशेष रूप से किसके लिए उपयुक्त है:
उत्तर देखें
उत्तर: B — सरणी के अवयवों से क्रमशः गुजरना
स्वतः-वृद्धि रजिस्टर में रखे पते का प्रयोग करती है और तत्पश्चात् उस रजिस्टर को प्रचालक-आकार से आगे बढ़ाती है, जो ठीक क्रमिक सरणी-भ्रमण का चक्र-निकाय है: अवयव लाएँ, अगले पर जाएँ, बिना पृथक् वृद्धि अनुदेश। प्रति पुनरावृत्ति एक अनुदेश की वही बचत उस विधि के अस्तित्व का सम्पूर्ण कारण है। विकल्प D हेतु तात्कालिक विधि है, और विकल्प A हेतु प्रत्यक्ष। स्वतः-ह्रास, उसका दर्पण, वह है जिसे स्टैक पुश पर प्रयोग करता है, और वही दूसरा स्थान है जहाँ यह विधि अपना मूल्य चुकाती है।एक-बस आँकड़ा-पथ तीन-बस आँकड़ा-पथ से प्रति अनुदेश अधिक घड़ी-चक्र लेता है क्योंकि:
उत्तर देखें
उत्तर: B — एक समय में केवल एक रजिस्टर-अंतरण हो सकता है
बस एक समय में एक मान ले जा सकती है, अतः एक-बस पथ को उन अंतरणों को क्रमबद्ध करना पड़ता है जो संक्रिया को चाहिए: दोनों ALU प्रचालकों को भीतर लाना व परिणाम बाहर भेजना तीन पृथक् चक्र लेता है जहाँ तीन-बस पथ उसे एक में करता है। अतिरिक्त चक्र बस हेतु प्रतिस्पर्धा का परिणाम हैं, धीमी घड़ी या धीमे ALU का नहीं — घटक वही हैं। इसीलिए "यह अनुदेश कितने चक्र लेता है" बस-संरचना बताए जाने तक अनुत्तरणीय है, और इसीलिए इस खंड के प्रश्न उसे सदा बताते हैं।