स्थिति रजिस्टर

From alpha
Jump to navigation Jump to search

एक स्टेटस रजिस्टर, फ्लैग रजिस्टर, या कंडीशन कोड रजिस्टर (सीसीआर) एक सेंट्रल प्रोसेसिंग यूनिट के लिए स्टेटस फ़्लैग (कंप्यूटिंग) अंश ्स का एक संग्रह है। ऐसे रजिस्टरों के उदाहरणों में 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.


अन्य झंडे

कुछ प्रोसेसरों पर, स्थिति रजिस्टर में निम्न जैसे झंडे भी होते हैं:

Flag Name Description
H / A / DC Half-carry flag
Auxiliary flag
Digit Carry
Decimal adjust flag
Indicates that a bit carry was produced between the nibbles (typically between the 4-bit halves of a byte operand) as a result of the last arithmetic operation. Such a flag is generally useful for implementing BCD arithmetic operations on binary hardware.
P Parity flag Indicates whether the number of set bits of the last result is odd or even.
I Interrupt flag On some processors, this bit indicates whether interrupts are enabled or masked.[3] If the processor has multiple interrupt priority levels, such as the PDP-11, several bits may be used to indicate the priority of the current thread, allowing it to be interrupted only by hardware set to a higher priority. On other architectures, a bit may indicate that an interrupt is currently active, and that the current thread is part of an interrupt handler.
S Supervisor flag On processors that provide two or more protection rings, one or more bits in the status register indicate the ring of the current thread (how trusted it is, or whether it must use the operating system for requests that could hinder other threads). On a processor with only two rings, a single bit may distinguish Supervisor from User mode.


अंकगणितीय झंडों के बिना सीपीयू आर्किटेक्चर

स्थिति ध्वज किसी निर्देश को पिछले निर्देश के परिणाम के आधार पर कार्य करने में सक्षम बनाते हैं। निर्देश पाइपलाइन प्रोसेसर में, जैसे कि सुपरस्केलर और सट्टा निष्पादन प्रोसेसर, यह खतरा (कंप्यूटर आर्किटेक्चर) बना सकता है जो धीमी गति से प्रसंस्करण करता है या उनके आसपास काम करने के लिए अतिरिक्त हार्डवेयर की आवश्यकता होती है।[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 निर्देश। सौभाग्य से, उन दो कैरीज़ को अतिप्रवाह के जोखिम के बिना एक-दूसरे में जोड़ा जा सकता है, इसलिए स्थिति प्रति शब्द पांच निर्देशों पर स्थिर हो जाती है।

यह भी देखें

संदर्भ

  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.