रजिस्टर ट्रांसफर भाषा, माइक्रो-संक्रियाएँ व मूल कंप्यूटर की प्रोग्रामिंग
रजिस्टर ट्रांसफर भाषा व बस स्थानांतरण
रजिस्टर ट्रांसफर भाषा (RTL) सूक्ष्म-स्तरीय आँकड़ा-गति को संक्षिप्त संकेतन में वर्णित करती है: R2 ← R1 का अर्थ है रजिस्टर R1 की विषय-वस्तु R2 में स्थानांतरित होती है (एक प्रतिलिपि, गति नहीं — R1 अपरिवर्तित रहता है); सशर्त स्थानांतरण If (P = 1) then (R2 ← R1) लिखा जाता है, या RTL संक्षेप में P: R2 ← R1, जहाँ P एक नियंत्रण-शर्त है (प्रायः एकल नियंत्रण-इकाई संकेत) जो ठीक एक घड़ी-स्पंद हेतु स्थानांतरण को द्वार देता है। चूँकि कंप्यूटर में अनेक रजिस्टर पर सामान्यतः एक साझा आँकड़ा-बस होती है, रजिस्टर स्थानांतरण उस पर बहुसंकेतित होते हैं: चयन रेखाओं का एक समुच्चय तय करता है कि कौन रजिस्टर का निर्गम बस चलाए, और गंतव्य रजिस्टर की लोड-सक्षम रेखा को दृढ़ किया जाना ज़रूरी है ताकि स्थानांतरण वस्तुतः घड़ी में भीतर आए — निर्गम-चयन व गंतव्य-चयन स्वतंत्र निर्णय हैं, दोनों बस-स्थानांतरण होने हेतु आवश्यक।
अंकगणित, तर्क व पारी माइक्रो-संक्रियाएँ
- अंकगणित माइक्रो-संक्रियाएँ: योग, व्यवकलन (2 के पूरक द्वारा — पूरक जोड़ें, अलग व्यवकलक परिपथ की आवश्यकता नहीं), वर्धन, ह्रास। एकल योजक-व्यवकलक इकाई एक चालक द्वारा नियंत्रित होकर, एक संकार्य को पूरकित कर व वहन-प्रवेश सेट कर, योग व व्यवकलन दोनों कार्यान्वित करती है।
- तर्क माइक्रो-संक्रियाएँ: प्रत्येक बिट-युग्म पर स्वतंत्र रूप से लागू बिटवार AND, OR, XOR, NOT/पूरक — मास्किंग (अवांछित बिट साफ़ करने हेतु मास्क से AND), बिट सेट करने (OR), व चयनात्मक पूरकन (मास्क से XOR) हेतु प्रयुक्त।
- पारी माइक्रो-संक्रियाएँ: तार्किक पारी (0 से भरती है), अंकगणितीय पारी (दायीं पारी पर चिह्न-बिट सुरक्षित रखती है, मान को चिह्नित मानते हुए), व वर्तुल/घूर्णन पारी (बाहर गया बिट दूसरे सिरे पर पुनः प्रवेश करता है) — प्रत्येक दो की घातों से गुणन/भाजन (अंकगणितीय पारी) या क्रमिक आँकड़ा-गति (तार्किक/वर्तुल) हेतु प्रयोज्य।
मूल कंप्यूटर संगठन, अनुदेश चक्र व व्यवधान
मानक मूल-कंप्यूटर प्रतिरूप में एक संचायक (AC), एक स्मृति-पता रजिस्टर (MAR), एक स्मृति-बफ़र/आँकड़ा रजिस्टर (MBR/DR), एक प्रोग्राम गणक (PC), एक अनुदेश रजिस्टर (IR), तथा संचालन-कूट क्षेत्र व संबोधन-विधि (प्रत्यक्ष/अप्रत्यक्ष) बिट से भिन्नित स्मृति-संदर्भ, रजिस्टर-संदर्भ व इनपुट-आउटपुट अनुदेश प्रारूप होते हैं। प्रत्येक अनुदेश एक अनुदेश चक्र चलाता है: प्राप्ति (MAR ← PC, IR ← M[MAR], PC ← PC + 1), संचालन-कूट का विकोडन, प्रभावी पता की गणना (यदि संबोधन-विधि अप्रत्यक्ष हो तो अतिरिक्त स्मृति-वाचन), फिर निष्पादन। निष्पादन के पश्चात्, नियंत्रण इकाई व्यवधान फ्लिप-फ्लॉप जाँचती है; यदि सेट हो, तो वह वापसी-पता संचित करती है, आगे के व्यवधान अक्षम करती है, व व्यवधान-सेवा दिनचर्या पर शाखा करती है — यही जाँच वह कारण है जिससे व्यवधान कभी किसी अनुदेश के मध्य नहीं, केवल अनुदेश-सीमाओं पर देखा जाता है।
मशीन व असेंबली भाषा, प्रोग्राम लूप व उपप्रोग्राम
- असेंबलर: सांकेतिक असेंबली-भाषा निर्देशकों (LDA, ADD, STA, BUN, BSA...) को दो पासों में मशीन के द्विआधारी संचालन-कूटों में अनुवादित करता है — पहला पास लेबलों व उनके पतों की एक प्रतीक-सारणी बनाता है, दूसरा उस सारणी से वास्तविक द्विआधारी उत्पन्न करता है, यही कारण है कि अग्र-संदर्भ (प्रोग्राम में बाद में परिभाषित लेबल पर कूद) बिल्कुल भी हल करने योग्य है।
- प्रोग्राम लूप: एक गणक आरंभीकृत होता है, प्रत्येक पास में ह्रासित (या वर्धित) होता है, व परखा जाता है — मानक प्रतिरूप है आरंभीकरण, मुख्य भाग, ह्रास-व-शून्य-न-होने-पर-शाखा, जो ठीक हार्डवेयर-स्तरीय for-लूप है।
- उपप्रोग्राम: शाखा-व-वापसी-पता-सुरक्षित (BSA) अनुदेश वापसी-पता (PC का वर्तमान मान) उपप्रोग्राम के प्रथम स्मृति-स्थान पर संचित करता है और PC को अगले स्थान पर सेट करता है, अतः उपप्रोग्राम का अपना अंतिम अनुदेश उस संचित स्थान से होकर एक अप्रत्यक्ष शाखा है — यही वह पूर्व-स्टैक क्रियाविधि है जिसे हार्डवेयर कॉल/वापसी कार्यान्वित करता है, व यह पुनरावर्तन हेतु विफल हो जाती है क्योंकि प्रति उपप्रोग्राम केवल एक संचित स्थान है, उनका कोई स्टैक नहीं।
- I/O प्रोग्रामिंग: प्रोग्राम्ड I/O एक बार में एक शब्द स्थानांतरित करने से पहले किसी युक्ति की स्थिति-ध्वजा को कसे लूप में मतगणना करता है — सरल पर व्यस्त-प्रतीक्षा में CPU चक्र व्यर्थ करता है, जो ठीक वही प्रेरणा है जो व्यवधान-चालित I/O व DMA (इनपुट-आउटपुट संगठन के अंतर्गत ढके) की ओर ले जाती है।
मुख्य बिंदु
- P: R2 ← R1 जैसा RTL संकेतन हार्डवेयर-द्वारित प्रतिलिपि वर्णित करता है, सॉफ़्टवेयर सशर्त नहीं — जब P = 0 हो, कुछ नहीं होता, R2 केवल अपना पुराना मान रखता है।
- अंकगणित माइक्रो-संक्रियाएँ व्यवकलन हेतु एक योजक-व्यवकलक से 2 के पूरक योग का प्रयोग करती हैं; तर्क माइक्रो-संक्रियाएँ स्वतंत्र बिटवार संक्रियाएँ हैं; पारियाँ तार्किक, अंकगणितीय (चिह्न-सुरक्षक) या वर्तुल होती हैं।
- अनुदेश चक्र है प्राप्ति, विकोडन, प्रभावी पता गणना (अप्रत्यक्ष होने पर अतिरिक्त पहुँच), निष्पादन, फिर व्यवधान फ्लिप-फ्लॉप की जाँच — व्यवधान केवल अनुदेश-सीमाओं पर ही देखे जाते हैं।
- दो-पास असेंबलर अपने पहले पास में बनी प्रतीक-सारणी से अग्र-संदर्भ हल करता है।
- BSA-शैली उपप्रोग्राम-संबंधन प्रति उपप्रोग्राम एक वापसी-पता संचित करता है और स्टैक-आधारित कॉल-क्रियाविधि के विपरीत पुनरावर्तन का समर्थन नहीं कर सकता।
अभ्यास प्रश्न (9)
उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।
रजिस्टर स्थानांतरण कथन P: R2 ← R1 में, यदि किसी घड़ी-चक्र के दौरान नियंत्रण-शर्त P शून्य है:
उत्तर देखें
उत्तर: A — R2 अपना पूर्व मान बनाए रखता है; उस चक्र में स्थानांतरण बस नहीं होता
P भौतिक रूप से R2 के फ्लिप-फ्लॉप तक लोड-सक्षम स्पंद को द्वार देता है; जब वह 0 हो तो उस चक्र लोड बस नहीं होता और R2 अप्रभावित रहता है।एकल योजक-व्यवकलक परिपथ योग व व्यवकलन दोनों कर सकता है क्योंकि:
उत्तर देखें
उत्तर: A — व्यवकलन को एक संकार्य के 2 के पूरक के योग के रूप में कार्यान्वित किया जाता है
एक संकार्य को पूरकित करना व वहन-प्रवेश को 1 सेट करना योजक को बिना अलग परिपथ के व्यवकलक बना देता है, एक एकल चालक रेखा से नियंत्रित।मूल-कंप्यूटर अनुदेश-चक्र में, प्रत्यक्ष संबोधन की तुलना में अप्रत्यक्ष संबोधन को आवश्यकता है:
उत्तर देखें
उत्तर: A — वास्तविक संकार्य-पता प्राप्त करने हेतु एक अतिरिक्त स्मृति-पहुँच
पता-क्षेत्र किसी स्मृति-शब्द की ओर इंगित करता है जो संकार्य का वास्तविक पता रखता है, अतः संकार्य को प्राप्त करने से पहले उस संकेतक को डी-रेफ़रेंस करने हेतु एक अतिरिक्त वाचन आवश्यक है।अनुदेश-निष्पादन के दौरान अनुरोधित व्यवधान सामान्यतः सेवित होता है:
उत्तर देखें
उत्तर: A — केवल वर्तमान अनुदेश पूर्ण होने पर, एक अनुदेश-सीमा पर
नियंत्रण इकाई व्यवधान फ्लिप-फ्लॉप की जाँच वर्तमान अनुदेश के निष्पादन-चरण के पश्चात् ही करती है, अतः व्यवधान सदा अनुदेश-सीमा पर देखा जाता है, कभी अनुदेश के मध्य में नहीं।दो-पास असेंबलर को मुख्यतः दो पास चाहिए क्योंकि:
उत्तर देखें
उत्तर: A — बाद में परिभाषित लेबल के अग्र-संदर्भ को पास दो में कोड उत्पन्न करने से पहले पास एक में बनी प्रतीक-सारणी चाहिए
पूर्ण प्रतीक-सारणी के बिना, स्रोत में बाद में आने वाले लेबल पर शाखा को अभी तक किसी पते में हल नहीं किया जा सकता — पास एक वह सारणी बनाता है, पास दो उसका प्रयोग करता है।BSA (शाखा-व-वापसी-पता-सुरक्षित) उपप्रोग्राम-संबंधन क्रियाविधि पुनरावर्तन का समर्थन करने में विफल होती है क्योंकि:
उत्तर देखें
उत्तर: A — यह प्रति उपप्रोग्राम केवल एक वापसी-पता संचित करती है, पुनः-प्रवेश पर पिछले को अधिलेखित करते हुए
पुनरावर्ती कॉल बाहरी कॉल के वापस लौटने से पहले उसी उपप्रोग्राम में पुनः प्रवेश करता है, और BSA के पास वापसी-पता रखने हेतु केवल एक स्थान है — दूसरी कॉल का पता पहले को अधिलेखित कर देता है, अतः मूल वापसी-पथ खो जाता है।प्रोग्राम्ड I/O, व्यवधान-चालित I/O की तुलना में, इससे अभिलक्षित है:
उत्तर देखें
उत्तर: A — मतगणना लूप में CPU का व्यस्त-प्रतीक्षा करना, चक्र व्यर्थ करते हुए
प्रोग्राम्ड I/O प्रत्येक शब्द-स्थानांतरण से पहले बार-बार स्थिति-ध्वजा मतगणता है, जो कार्यान्वित करना सरल है पर पूरे समय CPU को बाँधे रखता है — यह व्यवधान-चालित I/O के विपरीत है, जो संकेत मिलने तक CPU को अन्य कार्य करने देता है।निम्नलिखित में कौन तर्क (अंकगणित नहीं) माइक्रो-संक्रियाएँ हैं? (एक से अधिक विकल्प सही हो सकते हैं।)
उत्तर देखें
उत्तर: A — मास्क से बिटवार AND; B — चयनात्मक पूरकन हेतु बिटवार XOR
AND व XOR बिट-स्वतंत्र रूप से काम करते हैं, बिटों के बीच कोई वहन-प्रसार नहीं — यही उन्हें अंकगणित के बजाय तर्क माइक्रो-संक्रियाएँ बनाता है; व्यवकलन व वर्धन दोनों में बिट-स्थितियों में वहन-प्रसार होता है, जो अंकगणित की पहचान है।8-बिट चिह्नित (2 के पूरक) मान 11110000 (जो −16 दर्शाता है) की एक स्थान अंकगणितीय दायीं पारी बिट-प्रतिरूप _____ देती है (8 बिट में लिखें)।
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 11111000
अंकगणितीय दायीं पारी सर्वाधिक-महत्वपूर्ण रिक्त हुए स्थान में चिह्न-बिट की प्रतिकृति बनाकर उसे सुरक्षित रखती है: 11110000 को एक स्थान दायें खिसकाने पर, अग्रणी 1 बनाए रखते हुए, 11111000 मिलता है, जो −8 है — जो −16 को ऋण-अनंत की ओर सही ढंग से आधा करता है।