स्टेटस रजिस्टर
एक स्टेटस रजिस्टर, फ्लैग रजिस्टर, या कंडीशन कोड रजिस्टर (सीसीआर) सेंट्रल प्रोसेसिंग यूनिट के लिए स्टेटस फ़्लैग (कंप्यूटिंग) अंश ्स का संग्रह है। ऐसे रजिस्टरों के उदाहरणों में x86 आर्किटेक्चर में FLAGS रजिस्टर (कंप्यूटिंग), कार्यक्रम स्थिति शब्द (PSW) में फ्लैग, IBM सिस्टम/360 आर्किटेक्चर में z/आर्किटेक्चर के माध्यम से रजिस्टर, और ARM कॉर्टेक्स में एप्लिकेशन प्रोग्राम स्टेटस रजिस्टर (APSR) शामिल हैं। -एक वास्तुकला.[1] स्टेटस रजिस्टर हार्डवेयर रजिस्टर है जिसमें सेंट्रल प्रोसेसिंग यूनिट की स्थिति के बारे में जानकारी होती है। अलग-अलग बिट्स को प्रोसेसर पर निष्पादित होने वाले मशीन कोड निर्देशों द्वारा स्पष्ट रूप से पढ़ा और/या लिखा जाता है। स्थिति रजिस्टर किसी निर्देश को पिछले निर्देश के परिणाम के आधार पर कार्रवाई करने की अनुमति देता है।
आमतौर पर, स्थिति रजिस्टर में फ्लैग अंकगणित और बिट हेरफेर संचालन के प्रभाव के रूप में संशोधित किए जाते हैं। उदाहरण के लिए, यदि ऑपरेशन का परिणाम शून्य है तो Z बिट सेट किया जा सकता है और यदि यह गैर-शून्य है तो साफ़ किया जा सकता है। निर्देशों के अन्य वर्ग भी स्थिति दर्शाने के लिए झंडों को संशोधित कर सकते हैं। उदाहरण के लिए, स्ट्रिंग निर्देश यह संकेत करने के लिए ऐसा कर सकता है कि क्या निर्देश समाप्त हो गया क्योंकि उसे मिलान/बेमेल मिला या क्योंकि उसे स्ट्रिंग का अंत मिला। फ्लैग को बाद के सशर्त निर्देश द्वारा पढ़ा जाता है ताकि निर्दिष्ट कार्रवाई (प्रोसेसर, जंप, कॉल, रिटर्न, आदि के आधार पर) केवल तभी होती है जब फ्लैग पिछले निर्देश के निर्दिष्ट परिणाम को संकेत करते हैं।
कुछ सीपीयू आर्किटेक्चर, जैसे एमआईपीएस वास्तुकला और डीईसी अल्फा, समर्पित ध्वज रजिस्टर का उपयोग नहीं करते हैं। अन्य लोग अप्रत्यक्ष रूप से फ्लैग सेट नहीं करते और/या पढ़ते नहीं हैं। ऐसी मशीनें या तो निर्देशों के मध्य अंतर्निहित स्थिति की जानकारी को पास नहीं करती हैं, या वे इसे स्पष्ट रूप से चयनित सामान्य प्रयोजन रजिस्टर में पास कर देती हैं।
एक स्थिति रजिस्टर में अक्सर अन्य फ़ील्ड भी हो सकते हैं, जैसे अधिक विशिष्ट फ्लैग, बाधा डालना सक्षम बिट्स और इसी प्रकार की जानकारी। किसी रुकावट के दौरान, वर्तमान में निष्पादित थ्रेड की स्थिति को कार्यक्रम गणक और अन्य सक्रिय रजिस्टरों के साथ कॉल स्टैक या मेमोरी के किसी अन्य आरक्षित क्षेत्र में स्टेटस रजिस्टर के वर्तमान मूल्य को संग्रहीत करके संरक्षित (और बाद में वापस बुलाया जा सकता है) किया जा सकता है।
सामान्य फ्लैग
यह सबसे आम सीपीयू स्टेटस रजिस्टर फ़्लैग की सूची है, जो लगभग सभी आधुनिक प्रोसेसर में प्रयुक्त किया गया है।
Flag | Name | Description |
---|---|---|
Z | Zero flag | Indicates that the result of an arithmetic or logical operation (or, sometimes, a load) was zero. |
C | 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 shifts and rotates in a similar manner on many processors (sometimes done via a dedicated X flag). |
S / N | Sign flag Negative flag |
Indicates that the result of a mathematical operation is negative. In some processors,[2] 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. |
V / O / W | Overflow flag | Indicates that the signed result of an operation is too large to fit in the register width using two's complement representation. |
अन्य फ्लैग
कुछ प्रोसेसरों पर, स्थिति रजिस्टर में निम्न जैसे फ्लैग भी होते हैं:
फ्लैग | नाम | विवरण |
---|---|---|
H / A / DC | Half-carry flag Auxiliary flag Digit Carry Decimal adjust flag |
संकेत करता है कि अंतिम अंकगणितीय ऑपरेशन के परिणामस्वरूप निबल्स (सामान्यतः बाइट ऑपरेंड के 4-बिट भाग के मध्य) के मध्य बिट कैरी उत्पन्न हुआ था। ऐसा ध्वज आम तौर पर बाइनरी हार्डवेयर पर बीसीडी अंकगणितीय संचालन को प्रयुक्त करने के लिए उपयोगी होता है। |
P | Parity flag | संकेत करता है कि अंतिम परिणाम के सेट बिट्स की संख्या विषम है या सम। |
I | Interrupt flag | कुछ प्रोसेसरों पर, यह बिट संकेत करता है कि इंटरप्ट सक्षम हैं या मास्क्ड हैं।[3] यदि प्रोसेसर में एकाधिक इंटरप्ट प्राथमिकता स्तर हैं, जैसे कि पीडीपी-11, तो वर्तमान थ्रेड की प्राथमिकता को संकेत करने के लिए कई बिट्स का उपयोग किया जा सकता है, जिससे इसे केवल उच्च प्राथमिकता पर सेट हार्डवेयर द्वारा बाधित किया जा सकता है। अन्य आर्किटेक्चर पर, बिट यह संकेत दे सकता है कि इंटरप्ट वर्तमान में सक्रिय है, और वर्तमान थ्रेड इंटरप्ट हैंडलर का भाग है। |
S | Supervisor flag | उन प्रोसेसर पर जो दो या अधिक सुरक्षा रिंग प्रदान करते हैं, स्थिति रजिस्टर में या अधिक बिट्स वर्तमान थ्रेड की रिंग को संकेत करते हैं (यह कितना विश्वसनीय है, या क्या इसे उन अनुरोधों के लिए ऑपरेटिंग सिस्टम का उपयोग करना चाहिए जो अन्य थ्रेड में बाधा डाल सकते हैं)। केवल दो रिंग वाले प्रोसेसर पर, बिट सुपरवाइज़र को उपयोगकर्ता मोड से अलग कर सकता है। |
अंकगणितीय झंडों के बिना सीपीयू आर्किटेक्चर
स्थिति ध्वज किसी निर्देश को पिछले निर्देश के परिणाम के आधार पर कार्य करने में सक्षम बनाते हैं। निर्देश पाइपलाइन प्रोसेसर में, जैसे कि सुपरस्केलर और सट्टा निष्पादन प्रोसेसर, यह खतरा (कंप्यूटर आर्किटेक्चर) बना सकता है जो धीमी गति से प्रसंस्करण करता है या उनके आसपास काम करने के लिए अतिरिक्त हार्डवेयर की आवश्यकता होती है।[4] कुछ बहुत लंबे निर्देश वाले वर्ड प्रोसेसर स्टेटस फ़्लैग के बिना होते हैं। एकल निर्देश परीक्षण करता है और संकेत करता है कि उस परीक्षण के किस परिणाम पर कार्रवाई की जानी है, जैसे कि ए की तुलना बी से करें और यदि बराबर हो तो सी पर जाएं। परीक्षण का परिणाम आगामी अनुदेशों के लिए सहेजा नहीं गया है।
स्थिति रजिस्टर का अन्य विकल्प प्रोसेसर निर्देशों के लिए यह है कि जब प्रोग्राम अनुरोध करता है तो स्थिति की जानकारी सामान्य प्रयोजन रजिस्टर में जमा करें। एमआईपीएस आर्किटेक्चर, एएमडी 29000, डीईसी अल्फा और RISC-वी ी आर्किटेक्चर के उदाहरण हैं जो तुलना निर्देश प्रदान करते हैं जो तुलना परिणाम को सामान्य प्रयोजन रजिस्टर में एकल बिट या 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
निर्देश। सौभाग्य से, उन दो कैरीज़ को अतिप्रवाह के जोखिम के बिना एक-दूसरे में जोड़ा जा सकता है, इसलिए स्थिति प्रति शब्द पांच निर्देशों पर स्थिर हो जाती है।
यह भी देखें
संदर्भ
- ↑ "एआरएम सूचना केंद्र". infocenter.arm.com. Retrieved 2019-05-18.
- ↑ "Toshiba 900 Operation Manual, chap. 3" (PDF). Archived from the original (PDF) on 2006-01-15.
- ↑ "Atmel 8-Bit Microcontroller With 4/8/16/32KBytes In-system Programmable Flash - Datasheet" (PDF). Microchip Technology.
- ↑ 4.0 4.1 Mashey, John (1996-06-04). "Carry bits; The Architect's Trap". Retrieved 2013-10-05.