स्टेटस रजिस्टर: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{short description|Register containing flags giving additional information concerning a result in a processor}}
{{short description|Register containing flags giving additional information concerning a result in a processor}}
एक स्टेटस रजिस्टर, फ्लैग रजिस्टर, या कंडीशन कोड रजिस्टर (सीसीआर) [[सेंट्रल प्रोसेसिंग यूनिट]] के लिए स्टेटस [[ फ़्लैग (कंप्यूटिंग) |फ़्लैग (कंप्यूटिंग)]] [[ अंश |अंश]] ्स का संग्रह है। ऐसे रजिस्टरों के उदाहरणों में [[x86 आर्किटेक्चर]] में FLAGS रजिस्टर (कंप्यूटिंग), [[ कार्यक्रम स्थिति शब्द |कार्यक्रम स्थिति शब्द]] (PSW) में फ्लैग, IBM सिस्टम/360 आर्किटेक्चर में z/आर्किटेक्चर के माध्यम से रजिस्टर, और ARM कॉर्टेक्स में एप्लिकेशन प्रोग्राम स्टेटस रजिस्टर (APSR) शामिल हैं। -एक वास्तुकला.<ref>{{Cite web|url=http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473c/Babcfejg.html|title=एआरएम सूचना केंद्र|website=infocenter.arm.com|access-date=2019-05-18}}</ref>
'''स्टेटस रजिस्टर''', फ्लैग रजिस्टर, या कंडीशन कोड रजिस्टर (सीसीआर) [[सेंट्रल प्रोसेसिंग यूनिट]] के लिए स्टेटस [[ फ़्लैग (कंप्यूटिंग) |फ़्लैग (कंप्यूटिंग)]] [[ अंश |अंश]] का संग्रह है। ऐसे रजिस्टरों के उदाहरणों में [[x86 आर्किटेक्चर]] में फ्लैग रजिस्टर (कंप्यूटिंग), [[ कार्यक्रम स्थिति शब्द |प्रोग्राम स्टेटस शब्द]] (पीएसडब्ल्यू) में फ्लैग, आईबीएम सिस्टम/360 आर्किटेक्चर में जेड/आर्किटेक्चर के माध्यम से रजिस्टर, और एआरएम कॉर्टेक्स में एप्लिकेशन प्रोग्राम स्टेटस रजिस्टर (एपीएसआर) सम्मिलित हैं। एक आर्किटेक्चर.<ref>{{Cite web|url=http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473c/Babcfejg.html|title=एआरएम सूचना केंद्र|website=infocenter.arm.com|access-date=2019-05-18}}</ref> स्टेटस रजिस्टर [[हार्डवेयर रजिस्टर]] है जिसमें सेंट्रल प्रोसेसिंग यूनिट की स्टेटस के बारे में जानकारी होती है। इस प्रकार अलग-अलग बिट्स को प्रोसेसर पर निष्पादित होने वाले [[मशीन कोड]] निर्देशों द्वारा स्पष्ट रूप से पढ़ा और लिखा जाता है। इस प्रकार स्टेटस रजिस्टर किसी निर्देश को पिछले निर्देश के परिणाम के आधार पर कार्य करने की अनुमति देता है।
स्टेटस रजिस्टर [[हार्डवेयर रजिस्टर]] है जिसमें सेंट्रल प्रोसेसिंग यूनिट की स्थिति के बारे में जानकारी होती है। अलग-अलग बिट्स को प्रोसेसर पर निष्पादित होने वाले [[मशीन कोड]] निर्देशों द्वारा स्पष्ट रूप से पढ़ा और/या लिखा जाता है। स्थिति रजिस्टर किसी निर्देश को पिछले निर्देश के परिणाम के आधार पर कार्रवाई करने की अनुमति देता है।


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


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


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


==सामान्य फ्लैग==
==सामान्य फ्लैग==
यह सबसे आम सीपीयू स्टेटस रजिस्टर फ़्लैग की सूची है, जो लगभग सभी आधुनिक प्रोसेसर में प्रयुक्त किया गया है।
यह सबसे समान सीपीयू स्टेटस रजिस्टर फ़्लैग की सूची है, जो लगभग सभी आधुनिक प्रोसेसर में प्रयुक्त किया गया है।


{| class="wikitable"
{| class="wikitable"
|-
|-
! style="background:#D0E0FF; width:10%" |Flag
! style="background:#D0E0FF; width:10%" |फ्लैग
! style="background:#D0E0FF; width:25%" |Name
! style="background:#D0E0FF; width:25%" |नाम
! style="background:#D0E0FF; width:60%" |Description
! style="background:#D0E0FF; width:60%" |विवरण
|- style="vertical-align:top"
|- style="vertical-align:top"
| align="center" |'''Z'''
| align="center" |'''Z'''
| [[Zero flag]]
| जीरो फ्लैग
| Indicates that the result of an arithmetic or logical operation (or, sometimes, a load) was zero.
| इंगित करता है कि अंकगणित या तार्किक संचालन (या, कभी-कभी, भार) का परिणाम शून्य था।
|- style="vertical-align:top"
|- style="vertical-align:top"
| align="center" |'''C'''
| align="center" |'''C'''
| [[Carry flag]]
| [[Carry flag|कैरी फ्लैग]]
| Enables numbers larger than a single word to be added/subtracted by carrying a binary digit from a less significant word to the [[least significant bit]] of a more significant word as needed. It is also used to extend [[bit shift]]s and rotates in a similar manner on many processors (sometimes done via a dedicated '''X''' flag).
| आवश्यकतानुसार कम महत्वपूर्ण शब्द से अधिक महत्वपूर्ण शब्द के कम से कम महत्वपूर्ण बिट तक बाइनरी अंक ले जाकर एक शब्द से बड़ी संख्याओं को जोड़ने/घटाने में सक्षम बनाता है। इसका उपयोग बिट शिफ्ट को बढ़ाने और कई प्रोसेसर पर समान विधि से घुमाने के लिए भी किया जाता है (कभी-कभी एक समर्पित एक्स फ्लैग के माध्यम से किया जाता है)
|- style="vertical-align:top"
|- style="vertical-align:top"
| align="center" |'''S''' / '''N'''
| align="center" |'''S''' / '''N'''
| Sign flag<br/> [[Negative flag]]
| सिग्न फ्लैग
| Indicates that the result of a mathematical operation is negative. In some processors,<ref>{{cite web |title=Toshiba 900 Operation Manual, chap. 3 |url=http://www.semicon.toshiba.co.jp/eng/prd/micro/td/900family/900l/kyoutu/pdf/e_900l_chap3_cpu.pdf |archive-url=https://web.archive.org/web/20060115084555/http://www.semicon.toshiba.co.jp/eng/prd/micro/td/900family/900l/kyoutu/pdf/e_900l_chap3_cpu.pdf |archive-date=2006-01-15 |url-status=dead}}</ref> the N and S flags are distinct with different meanings and usage: One indicates whether the last result was negative whereas the other indicates whether a subtraction or addition has taken place.
निगेटिव फ्लैग
| इंगित करता है कि गणितीय संचालन का परिणाम ऋणात्मक है। कुछ प्रोसेसर में,<ref>{{cite web |title=Toshiba 900 Operation Manual, chap. 3 |url=http://www.semicon.toshiba.co.jp/eng/prd/micro/td/900family/900l/kyoutu/pdf/e_900l_chap3_cpu.pdf |archive-url=https://web.archive.org/web/20060115084555/http://www.semicon.toshiba.co.jp/eng/prd/micro/td/900family/900l/kyoutu/pdf/e_900l_chap3_cpu.pdf |archive-date=2006-01-15 |url-status=dead}}</ref> n और s टैग अलग-अलग अर्थों और उपयोग के साथ अलग-अलग हैं: एक इंगित करता है कि क्या अंतिम परिणाम ऋणात्मक था जबकि दूसरा इंगित करता है कि कोई घटाव या जोड़ हुआ है या नहीं।
|- style="vertical-align:top"
|- style="vertical-align:top"
| align="center" |'''V''' / '''O''' / '''W'''
| align="center" |'''V''' / '''O''' / '''W'''
| [[Overflow flag]]
| [[Overflow flag|अतिप्रवाह फ्लैग]]
| Indicates that the signed result of an operation is too large to fit in the register width using [[two's complement]] representation.
| इंगित करता है कि एक संचालन का हस्ताक्षरित परिणाम दो के पूरक प्रतिनिधित्व का उपयोग करके रजिस्टर चौड़ाई में फिट होने के लिए बहुत बड़ा है।
|}
|}




==अन्य फ्लैग==
==अन्य फ्लैग==
कुछ प्रोसेसरों पर, स्थिति रजिस्टर में निम्न जैसे फ्लैग भी होते हैं:
कुछ प्रोसेसरों पर, स्टेटस रजिस्टर में निम्न जैसे फ्लैग भी होते हैं:


{| class="wikitable"
{| class="wikitable"
Line 46: Line 46:
|- style="vertical-align:top"
|- style="vertical-align:top"
| align="center" |'''H''' / '''A''' / '''DC'''  
| align="center" |'''H''' / '''A''' / '''DC'''  
| [[Half-carry flag]]<br/> Auxiliary flag<br/> Digit Carry<br/> Decimal adjust flag
| [[Half-carry flag|अर्ध-कैरी फ्लैग]]<br/> सहायक फ्लैग<br/> डिजिट कैरी<br/> दशमलव समायोजन फ्लैग
| संकेत करता है कि अंतिम अंकगणितीय ऑपरेशन के परिणामस्वरूप [[nibble|निबल्स]] (सामान्यतः बाइट ऑपरेंड के 4-बिट भाग के मध्य) के मध्य बिट कैरी उत्पन्न हुआ था। ऐसा ध्वज आम तौर पर बाइनरी हार्डवेयर पर बीसीडी अंकगणितीय संचालन को प्रयुक्त करने के लिए उपयोगी होता है।
| संकेत करता है कि अंतिम अंकगणितीय संचालन के परिणामस्वरूप [[nibble|निबल्स]] (सामान्यतः बाइट ऑपरेंड के 4-बिट भाग के मध्य) के मध्य बिट कैरी उत्पन्न हुआ था। ऐसा फ्लैग सामान्यतः बाइनरी हार्डवेयर पर बीसीडी अंकगणितीय संचालन को प्रयुक्त करने के लिए उपयोगी होता है।
|- style="vertical-align:top"
|- style="vertical-align:top"
| align="center" |'''P'''
| align="center" |'''P'''
| [[Parity flag]]
| [[Parity flag|समानता फ्लैग]]
| संकेत करता है कि अंतिम परिणाम के सेट बिट्स की संख्या विषम है या सम।
| संकेत करता है कि अंतिम परिणाम के सेट बिट्स की संख्या विषम है या सम।
|- style="vertical-align:top"
|- style="vertical-align:top"
| align="center" |'''I'''
| align="center" |'''I'''
| [[Interrupt flag]]
| [[Interrupt flag|इंटरप्ट फ्लैग]]
| कुछ प्रोसेसरों पर, यह बिट संकेत करता है कि इंटरप्ट सक्षम हैं या मास्क्ड हैं।<ref>{{cite web|url=http://ww1.microchip.com/downloads/en/devicedoc/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet_complete.pdf|title=Atmel 8-Bit Microcontroller With 4/8/16/32KBytes In-system Programmable Flash - Datasheet|website=[[Microchip Technology]]}}</ref> यदि प्रोसेसर में एकाधिक [[interrupt|इंटरप्ट]] प्राथमिकता स्तर हैं, जैसे कि [[PDP-11 architecture#Interrupts|पीडीपी-11]], तो वर्तमान थ्रेड की प्राथमिकता को संकेत करने के लिए कई बिट्स का उपयोग किया जा सकता है, जिससे इसे केवल उच्च प्राथमिकता पर सेट हार्डवेयर द्वारा बाधित किया जा सकता है। अन्य आर्किटेक्चर पर, बिट यह संकेत दे सकता है कि इंटरप्ट वर्तमान में सक्रिय है, और वर्तमान थ्रेड [[interrupt handler|इंटरप्ट हैंडलर]] का भाग है।
| कुछ प्रोसेसरों पर, यह बिट संकेत करता है कि इंटरप्ट सक्षम हैं या मास्क्ड हैं।<ref>{{cite web|url=http://ww1.microchip.com/downloads/en/devicedoc/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet_complete.pdf|title=Atmel 8-Bit Microcontroller With 4/8/16/32KBytes In-system Programmable Flash - Datasheet|website=[[Microchip Technology]]}}</ref> यदि प्रोसेसर में एकाधिक [[interrupt|इंटरप्ट]] प्राथमिकता स्तर हैं, जैसे कि [[PDP-11 architecture#Interrupts|पीडीपी-11]], तो वर्तमान थ्रेड की प्राथमिकता को संकेत करने के लिए कई बिट्स का उपयोग किया जा सकता है, जिससे इसे केवल उच्च प्राथमिकता पर सेट हार्डवेयर द्वारा बाधित किया जा सकता है। अन्य आर्किटेक्चर पर, बिट यह संकेत दे सकता है कि इंटरप्ट वर्तमान में सक्रिय है, और वर्तमान थ्रेड [[interrupt handler|इंटरप्ट हैंडलर]] का भाग है।
|- style="vertical-align:top"
|- style="vertical-align:top"
| align="center" |'''S'''
| align="center" |'''S'''
| Supervisor flag
| सुपरवाइज़र फ्लैग
| उन प्रोसेसर पर जो दो या अधिक [[protection ring|सुरक्षा रिंग]] प्रदान करते हैं, स्थिति रजिस्टर में या अधिक बिट्स वर्तमान थ्रेड की रिंग को संकेत करते हैं (यह कितना विश्वसनीय है, या क्या इसे उन अनुरोधों के लिए ऑपरेटिंग सिस्टम का उपयोग करना चाहिए जो अन्य थ्रेड में बाधा डाल सकते हैं)। केवल दो रिंग वाले प्रोसेसर पर, बिट सुपरवाइज़र को उपयोगकर्ता मोड से अलग कर सकता है।
| उन प्रोसेसर पर जो दो या अधिक [[protection ring|सुरक्षा रिंग]] प्रदान करते हैं, स्टेटस रजिस्टर में या अधिक बिट्स वर्तमान थ्रेड की रिंग को संकेत करते हैं (यह कितना विश्वसनीय है, या क्या इसे उन अनुरोधों के लिए ऑपरेटिंग सिस्टम का उपयोग करना चाहिए जो अन्य थ्रेड में बाधा डाल सकते हैं)। केवल दो रिंग वाले प्रोसेसर पर, बिट सुपरवाइज़र को उपयोगकर्ता मोड से अलग कर सकता है।
|}
|}




==अंकगणितीय झंडों के बिना सीपीयू आर्किटेक्चर==
==अंकगणितीय फ्लैग के बिना सीपीयू आर्किटेक्चर==
स्थिति ध्वज किसी निर्देश को पिछले निर्देश के परिणाम के आधार पर कार्य करने में सक्षम बनाते हैं। निर्देश पाइपलाइन प्रोसेसर में, जैसे कि [[सुपरस्केलर]] और [[सट्टा निष्पादन]] प्रोसेसर, यह खतरा (कंप्यूटर आर्किटेक्चर) बना सकता है जो धीमी गति से प्रसंस्करण करता है या उनके आसपास काम करने के लिए अतिरिक्त हार्डवेयर की आवश्यकता होती है।<ref name="carry-trap">{{cite web|url=http://yarchive.net/comp/carry_bit.html|title=Carry bits; The Architect's Trap|last=Mashey|first=John|date=1996-06-04|access-date=2013-10-05}}</ref>
स्टेटस फ्लैग किसी निर्देश को पिछले निर्देश के परिणाम के आधार पर कार्य करने में सक्षम बनाते हैं। निर्देश पाइपलाइन प्रोसेसर में, जैसे कि [[सुपरस्केलर]] और [[सट्टा निष्पादन]] प्रोसेसर, यह खतरा (कंप्यूटर आर्किटेक्चर) बना सकता है जो धीमी गति से प्रसंस्करण करता है या उनके आसपास काम करने के लिए अतिरिक्त हार्डवेयर की आवश्यकता होती है।<ref name="carry-trap">{{cite web|url=http://yarchive.net/comp/carry_bit.html|title=Carry bits; The Architect's Trap|last=Mashey|first=John|date=1996-06-04|access-date=2013-10-05}}</ref> कुछ बहुत लंबे निर्देश वाले वर्ड प्रोसेसर स्टेटस फ़्लैग के बिना होते हैं। एकल निर्देश परीक्षण करता है और संकेत करता है कि उस परीक्षण के किस परिणाम पर कार्य की जानी है, जैसे कि ए की तुलना b से करें और यदि सामान्य हो तो c पर जाएं। परीक्षण का परिणाम आगामी अनुदेशों के लिए सहेजा नहीं गया है।
कुछ बहुत लंबे निर्देश वाले वर्ड प्रोसेसर स्टेटस फ़्लैग के बिना होते हैं। एकल निर्देश परीक्षण करता है और संकेत करता है कि उस परीक्षण के किस परिणाम पर कार्रवाई की जानी है, जैसे कि ए की तुलना बी से करें और यदि बराबर हो तो सी पर जाएं। परीक्षण का परिणाम आगामी अनुदेशों के लिए सहेजा नहीं गया है।


स्थिति रजिस्टर का अन्य विकल्प प्रोसेसर निर्देशों के लिए यह है कि जब प्रोग्राम अनुरोध करता है तो स्थिति की जानकारी सामान्य प्रयोजन रजिस्टर में जमा करें। एमआईपीएस आर्किटेक्चर, [[एएमडी 29000]], डीईसी अल्फा और [[ RISC-वी |RISC-वी]] आर्किटेक्चर के उदाहरण हैं जो तुलना निर्देश प्रदान करते हैं जो तुलना परिणाम को सामान्य प्रयोजन रजिस्टर में एकल बिट या 0 या 1 के संख्यात्मक मान के रूप में संग्रहीत करते हैं। सशर्त शाखाएं कार्य आधारित होती हैं सामान्य प्रयोजन रजिस्टर में मूल्य पर.
स्टेटस रजिस्टर का अन्य विकल्प प्रोसेसर निर्देशों के लिए यह है कि जब प्रोग्राम अनुरोध करता है तो स्टेटस की जानकारी सामान्य प्रयोजन रजिस्टर में जमा करें। एमआईपीएस आर्किटेक्चर, [[एएमडी 29000]], डीईसी अल्फा और [[ RISC-वी |आरआईएससी-वी]]आर्किटेक्चर के उदाहरण हैं जो तुलना निर्देश प्रदान करते हैं जो तुलना परिणाम को सामान्य प्रयोजन रजिस्टर में एकल बिट या 0 या 1 के संख्यात्मक मान के रूप में संग्रहीत करते हैं। नियमबद्ध शाखाएं कार्य आधारित होती हैं सामान्य प्रयोजन रजिस्टर में मूल्य पर.


आमतौर पर, तुलना निर्देश समानता या हस्ताक्षरित/अहस्ताक्षरित परिमाण का परीक्षण करते हैं। अन्य स्थितियों के परीक्षण के लिए, प्रोग्राम तुल्यता सूत्र का उपयोग करता है। उदाहरण के लिए, एमआईपीएस में कोई कैरी बिट नहीं है, लेकिन एकाधिक-शब्द जोड़ करने वाला प्रोग्राम यह परीक्षण कर सकता है कि रजिस्टरों का एक-शब्द जोड़ ओवरफ्लो हो गया है या नहीं, यह परीक्षण करके कि योग ऑपरेंड से कम है या नहीं:<ref name="carry-trap"/>
सामान्यतः, तुलना निर्देश समानता या हस्ताक्षरित/अहस्ताक्षरित परिमाण का परीक्षण करते हैं। अन्य स्टेटस के परीक्षण के लिए, प्रोग्राम तुल्यता सूत्र का उपयोग करता है। उदाहरण के लिए, एमआईपीएस में कोई कैरी बिट नहीं है, किन्तु एकाधिक-शब्द जोड़ करने वाला प्रोग्राम यह परीक्षण कर सकता है कि रजिस्टरों का एक-शब्द जोड़ ओवरफ्लो हो गया है या नहीं, यह परीक्षण करके कि योग ऑपरेंड से कम है :<ref name="carry-trap"/>


<syntaxhighlight lang="asm">
<syntaxhighlight lang="asm">
Line 79: Line 78:
addu ahigh, ahigh, tmp                                                                           
addu ahigh, ahigh, tmp                                                                           
</syntaxhighlight>
</syntaxhighlight>
<code>sltu</code> ई> निर्देश सेट <code>tmp</code> इसके दो अन्य ऑपरेंड की निर्दिष्ट तुलना के आधार पर 1 या 0 तक। (यहां, सामान्य प्रयोजन रजिस्टर <code>tmp</code> सशर्त छलांग को नियंत्रित करने के लिए स्थिति रजिस्टर के रूप में उपयोग नहीं किया जाता है; बल्कि, 1 का संभावित मान, जो निम्न-क्रम जोड़ से आगे बढ़ने का संकेत देता है, उच्च-क्रम वाले शब्द में जोड़ा जाता है।)
<code>sltu</code> ई> निर्देश सेट <code>tmp</code> इसके दो अन्य ऑपरेंड की निर्दिष्ट तुलना के आधार पर 1 या 0 तक (यहां, सामान्य प्रयोजन रजिस्टर <code>tmp</code> नियमबद्ध छलांग को नियंत्रित करने के लिए स्टेटस रजिस्टर के रूप में उपयोग नहीं किया जाता है; किन्तु, 1 का संभावित मान, जो निम्न-क्रम जोड़ से आगे बढ़ने का संकेत देता है, उच्च-क्रम वाले शब्द में जोड़ा जाता है।)
तीन या अधिक शब्द जोड़ते समय यह योजना कम सुविधाजनक हो जाती है, क्योंकि गणना करते समय दो जोड़ होते हैं <code>b + c + tmp</code>, जिनमें से कोई भी कैरी उत्पन्न कर सकता है, जिसे दो के साथ पता लगाया जाना चाहिए <code>sltu</code> निर्देश। सौभाग्य से, उन दो कैरीज़ को अतिप्रवाह के जोखिम के बिना एक-दूसरे में जोड़ा जा सकता है, इसलिए स्थिति प्रति शब्द पांच निर्देशों पर स्थिर हो जाती है।
 
तीन या अधिक शब्द जोड़ते समय यह योजना कम सुविधाजनक हो जाती है, क्योंकि गणना करते समय दो जोड़ <code>b + c + tmp</code> होते हैं , जिनमें से कोई भी कैरी उत्पन्न कर सकता है, जिसे दो के साथ पता लगाया जाना चाहिए <code>sltu</code> निर्देश सामान्यतः, उन दो कैरीज़ को अतिप्रवाह के जोखिम के बिना एक-दूसरे में जोड़ा जा सकता है, इसलिए स्टेटस प्रति शब्द पांच निर्देशों पर स्थिर हो जाती है।


तीन या अधिक शब्द जोड़ते समय यह योजना कम सुविधाजनक हो जाती है, क्योंकि गणना करते समय दो जोड़ होते हैं <code>b + c + tmp</code>, जिनमें से कोई भी कैरी उत्पन्न कर सकता है, जिसे दो के साथ पता लगाया जाना चाहिए <code>sltu</code> निर्देश। सौभाग्य से, उन दो कैरीज़ को अतिप्रवाह के जोखिम के बिना एक-दूसरे में जोड़ा जा सकता है, इसलिए स्थिति प्रति शब्द पांच निर्देशों पर स्थिर हो जाती है।
तीन या अधिक शब्द जोड़ते समय यह योजना कम सुविधाजनक हो जाती है, क्योंकि गणना करते समय दो जोड़ होते <code>b + c + tmp</code> हैं , जिनमें से कोई भी कैरी उत्पन्न कर सकता है, जिसे दो के साथ पता लगाया जाना चाहिए <code>sltu</code> निर्देश। सौभाग्य से, उन दो कैरीज़ को अतिप्रवाह के जोखिम के बिना एक-दूसरे में जोड़ा जा सकता है, इसलिए स्टेटस प्रति शब्द पांच निर्देशों पर स्थिर हो जाती है।


==यह भी देखें==
==यह भी देखें                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ==
* [[नियंत्रण रजिस्टर]]
* [[नियंत्रण रजिस्टर]]
* [[सीपीयू ध्वज (x86)]]
* [[सीपीयू ध्वज (x86)|सीपीयू फ्लैग (x86)]]
* [[ध्वज क्षेत्र]]
* [[ध्वज क्षेत्र|फ्लैग क्षेत्र]]


==संदर्भ==
==संदर्भ                                                                                                                                                                                               ==
{{Reflist}}
{{Reflist}}



Revision as of 11:14, 18 July 2023

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

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

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

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

सामान्य फ्लैग

यह सबसे समान सीपीयू स्टेटस रजिस्टर फ़्लैग की सूची है, जो लगभग सभी आधुनिक प्रोसेसर में प्रयुक्त किया गया है।

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

निगेटिव फ्लैग

इंगित करता है कि गणितीय संचालन का परिणाम ऋणात्मक है। कुछ प्रोसेसर में,[2] n और s टैग अलग-अलग अर्थों और उपयोग के साथ अलग-अलग हैं: एक इंगित करता है कि क्या अंतिम परिणाम ऋणात्मक था जबकि दूसरा इंगित करता है कि कोई घटाव या जोड़ हुआ है या नहीं।
V / O / W अतिप्रवाह फ्लैग इंगित करता है कि एक संचालन का हस्ताक्षरित परिणाम दो के पूरक प्रतिनिधित्व का उपयोग करके रजिस्टर चौड़ाई में फिट होने के लिए बहुत बड़ा है।


अन्य फ्लैग

कुछ प्रोसेसरों पर, स्टेटस रजिस्टर में निम्न जैसे फ्लैग भी होते हैं:

फ्लैग नाम विवरण
H / A / DC अर्ध-कैरी फ्लैग
सहायक फ्लैग
डिजिट कैरी
दशमलव समायोजन फ्लैग
संकेत करता है कि अंतिम अंकगणितीय संचालन के परिणामस्वरूप निबल्स (सामान्यतः बाइट ऑपरेंड के 4-बिट भाग के मध्य) के मध्य बिट कैरी उत्पन्न हुआ था। ऐसा फ्लैग सामान्यतः बाइनरी हार्डवेयर पर बीसीडी अंकगणितीय संचालन को प्रयुक्त करने के लिए उपयोगी होता है।
P समानता फ्लैग संकेत करता है कि अंतिम परिणाम के सेट बिट्स की संख्या विषम है या सम।
I इंटरप्ट फ्लैग कुछ प्रोसेसरों पर, यह बिट संकेत करता है कि इंटरप्ट सक्षम हैं या मास्क्ड हैं।[3] यदि प्रोसेसर में एकाधिक इंटरप्ट प्राथमिकता स्तर हैं, जैसे कि पीडीपी-11, तो वर्तमान थ्रेड की प्राथमिकता को संकेत करने के लिए कई बिट्स का उपयोग किया जा सकता है, जिससे इसे केवल उच्च प्राथमिकता पर सेट हार्डवेयर द्वारा बाधित किया जा सकता है। अन्य आर्किटेक्चर पर, बिट यह संकेत दे सकता है कि इंटरप्ट वर्तमान में सक्रिय है, और वर्तमान थ्रेड इंटरप्ट हैंडलर का भाग है।
S सुपरवाइज़र फ्लैग उन प्रोसेसर पर जो दो या अधिक सुरक्षा रिंग प्रदान करते हैं, स्टेटस रजिस्टर में या अधिक बिट्स वर्तमान थ्रेड की रिंग को संकेत करते हैं (यह कितना विश्वसनीय है, या क्या इसे उन अनुरोधों के लिए ऑपरेटिंग सिस्टम का उपयोग करना चाहिए जो अन्य थ्रेड में बाधा डाल सकते हैं)। केवल दो रिंग वाले प्रोसेसर पर, बिट सुपरवाइज़र को उपयोगकर्ता मोड से अलग कर सकता है।


अंकगणितीय फ्लैग के बिना सीपीयू आर्किटेक्चर

स्टेटस फ्लैग किसी निर्देश को पिछले निर्देश के परिणाम के आधार पर कार्य करने में सक्षम बनाते हैं। निर्देश पाइपलाइन प्रोसेसर में, जैसे कि सुपरस्केलर और सट्टा निष्पादन प्रोसेसर, यह खतरा (कंप्यूटर आर्किटेक्चर) बना सकता है जो धीमी गति से प्रसंस्करण करता है या उनके आसपास काम करने के लिए अतिरिक्त हार्डवेयर की आवश्यकता होती है।[4] कुछ बहुत लंबे निर्देश वाले वर्ड प्रोसेसर स्टेटस फ़्लैग के बिना होते हैं। एकल निर्देश परीक्षण करता है और संकेत करता है कि उस परीक्षण के किस परिणाम पर कार्य की जानी है, जैसे कि ए की तुलना b से करें और यदि सामान्य हो तो c पर जाएं। परीक्षण का परिणाम आगामी अनुदेशों के लिए सहेजा नहीं गया है।

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

सामान्यतः, तुलना निर्देश समानता या हस्ताक्षरित/अहस्ताक्षरित परिमाण का परीक्षण करते हैं। अन्य स्टेटस के परीक्षण के लिए, प्रोग्राम तुल्यता सूत्र का उपयोग करता है। उदाहरण के लिए, एमआईपीएस में कोई कैरी बिट नहीं है, किन्तु एकाधिक-शब्द जोड़ करने वाला प्रोग्राम यह परीक्षण कर सकता है कि रजिस्टरों का एक-शब्द जोड़ ओवरफ्लो हो गया है या नहीं, यह परीक्षण करके कि योग ऑपरेंड से कम है :[4]

        # alow = blow + clow                                                                                    
	addu	alow, blow, clow                                                                              
        # set tmp = 1 if alow < clow, else 0                                                                  
	sltu	tmp, alow, clow                                                                                
	addu	ahigh, bhigh, chigh                                                                              
	addu	ahigh, ahigh, tmp

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

तीन या अधिक शब्द जोड़ते समय यह योजना कम सुविधाजनक हो जाती है, क्योंकि गणना करते समय दो जोड़ b + c + tmp होते हैं , जिनमें से कोई भी कैरी उत्पन्न कर सकता है, जिसे दो के साथ पता लगाया जाना चाहिए sltu निर्देश सामान्यतः, उन दो कैरीज़ को अतिप्रवाह के जोखिम के बिना एक-दूसरे में जोड़ा जा सकता है, इसलिए स्टेटस प्रति शब्द पांच निर्देशों पर स्थिर हो जाती है।

तीन या अधिक शब्द जोड़ते समय यह योजना कम सुविधाजनक हो जाती है, क्योंकि गणना करते समय दो जोड़ होते b + c + tmp हैं , जिनमें से कोई भी कैरी उत्पन्न कर सकता है, जिसे दो के साथ पता लगाया जाना चाहिए sltu निर्देश। सौभाग्य से, उन दो कैरीज़ को अतिप्रवाह के जोखिम के बिना एक-दूसरे में जोड़ा जा सकता है, इसलिए स्टेटस प्रति शब्द पांच निर्देशों पर स्थिर हो जाती है।

यह भी देखें

संदर्भ

  1. "एआरएम सूचना केंद्र". infocenter.arm.com. Retrieved 2019-05-18.
  2. "Toshiba 900 Operation Manual, chap. 3" (PDF). Archived from the original (PDF) on 2006-01-15.
  3. "Atmel 8-Bit Microcontroller With 4/8/16/32KBytes In-system Programmable Flash - Datasheet" (PDF). Microchip Technology.
  4. 4.0 4.1 Mashey, John (1996-06-04). "Carry bits; The Architect's Trap". Retrieved 2013-10-05.