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