प्रोसेसर रजिस्टर

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

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

प्रोसेसर रजिस्टर आमतौर पर मेमोरी पदानुक्रम (हायरार्की) के शीर्ष पर होते हैं, और डेटा तक पहुंचने का सबसे तेज़ तरीका प्रदान करते हैं। शब्द सामान्य रूप से केवल रजिस्टरों के समूह को संदर्भित करता है जो निर्देश सेट द्वारा परिभाषित निर्देश के हिस्से के रूप में सीधे एन्कोड किए जाते हैं। हालांकि, आधुनिक उच्च-प्रदर्शन सीपीयू में अक्सर इन "आर्किटेक्चरल रजिस्टरों" के डुप्लिकेट होते हैं ताकि रजिस्टर नाम बदलने के माध्यम से प्रदर्शन में सुधार किया जा सके, समानांतर और सट्टा निष्पादन की अनुमति दी जा सके। आधुनिक x86 डिज़ाइन ने 1995 के आसपास पेंटियम प्रो, साइरिक्स 6x86, Nx586, और AMD K5 की रिलीज़ के साथ इन तकनीकों का अधिग्रहण किया।

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

आकार
रजिस्टर आमतौर पर बिट्स की संख्या से मापा जाता है, उदाहरण के लिए, " 8-बिट रजिस्टर", " 32-बिट रजिस्टर", " 64-बिट रजिस्टर", या इससे भी अधिक है। कुछ निर्देश सेटों में, रजिस्टर विभिन्न मोड में काम कर सकते हैं, उनकी स्टोरेज मेमोरी को छोटे भागों में तोड़ सकते हैं (उदाहरण के लिए 32-बिट चार 8-बिट वाले), जिसमें कई डेटा (वेक्टर, या डेटा की एक-आयामी सरणी ) एक ही समय में लोड और संचालित किया जा सकता है। आमतौर पर इसे अतिरिक्त रजिस्टरों को जोड़कर कार्यान्वित किया जाता है जो उनकी मेमोरी को एक बड़े रजिस्टर में मैप करते हैं। वे प्रोसेसर जिनमें एकाधिक डेटा पर एकल निर्देशों को निष्पादित करने की क्षमता होती है, वेक्टर प्रोसेसर कहलाते हैं।

प्रकार
प्रोसेसर में अक्सर कई प्रकार के रजिस्टर होते हैं, जिन्हें उन मूल्यों के प्रकार के अनुसार वर्गीकृत किया जा सकता है जिन्हें वे स्टोर कर सकते हैं या उन पर काम करने वाले निर्देश:


 * उपयोगकर्ता-सुलभ रजिस्टर मशीन निर्देशों द्वारा पढ़ा या लिखा जा सकता है। उपयोगकर्ता-सुलभ रजिस्टरों का सबसे आम विभाजन डेटा रजिस्टरों और पता रजिस्टरों में है।
 * डेटा रजिस्टर डेटा (कंप्यूटिंग) जैसे पूर्णांक (कंप्यूटर विज्ञान) और, कुछ आर्किटेक्चर में, फ्लोटिंग-पॉइंट मान, साथ ही वर्ण (कंप्यूटिंग), छोटे बिट सरणियाँ और अन्य डेटा धारण कर सकता है। कुछ पुराने आर्किटेक्चर में, जैसे आईबीएम 704, आईबीएम 709 और उत्तराधिकारी, पीडीपी-1, पीडीपी-4 / पीडीपी-7 / पीडीपी-9 / पीडीपी-15,  पीडीपी-5 / पीडीपी-8 , और  एचपी 2100 , एक विशेष डेटा रजिस्टर जिसे  संचायक (कंप्यूटिंग)  के रूप में जाना जाता है, का उपयोग कई कार्यों के लिए परोक्ष रूप से किया जाता है।
 * एड्रेस रजिस्टर  मेमोरी एड्रेस को रोकता (होल्ड) है और उन निर्देशों द्वारा उपयोग किया जाता है जो अप्रत्यक्ष रूप से प्राथमिक मेमरी तक पहुंचते हैं।
 * कुछ प्रोसेसर में रजिस्टर होते हैं जिनका उपयोग केवल एक पता रखने के लिए या केवल संख्यात्मक मान रखने के लिए किया जा सकता है (कुछ मामलों में एक सूचकांक रजिस्टर  के रूप में उपयोग किया जाता है जिसका मूल्य किसी पते से ऑफसेट के रूप में जोड़ा जाता है); अन्य रजिस्टरों को किसी भी प्रकार की मात्रा रखने की अनुमति देते हैं। एक ऑपरेंड के प्रभावी पते को निर्दिष्ट करने के लिए उपयोग किए जाने वाले संभावित  एड्रेसिंग मोड  की एक विस्तृत विविधता मौजूद है।
 * स्टेक सूचक का उपयोग रन-टाइम स्टैक को प्रबंधित करने के लिए किया जाता है। शायद ही, अन्य स्टैक (डेटा संरचना) को समर्पित पता रजिस्टरों द्वारा संबोधित किया जाता है (ढेर मशीन देखें)।
 * सामान्य प्रयोजन के रजिस्टर (जीपीआर') डेटा और पते दोनों को स्टोर कर सकते हैं, यानी, वे संयुक्त डेटा/पता रजिस्टर हैं; कुछ आर्किटेक्चर में, रजिस्टर फाइल  एकीकृत होती है ताकि जीपीआर चल बिन्दु संख्या ों को भी स्टोर कर सके।
 *  स्थिति रजिस्टर  सत्य मान रखता है जो अक्सर यह निर्धारित करने के लिए उपयोग किया जाता है कि कुछ निर्देश निष्पादित किया जाना चाहिए या नहीं।
 * फ़्लोटिंग-पॉइंट रजिस्टर (FORs) कई आर्किटेक्चर में चल बिन्दु संख्या स्टोर करते हैं।
 * निरंतर (कंप्यूटर प्रोग्रामिंग) रजिस्टर केवल-पढ़ने के लिए मान रखता है जैसे शून्य, एक, या अनुकरणीय आई।
 *  सिंगल इंस्ट्रक्शन, मल्टीपल डेटा इंस्ट्रक्शन (सिंगल इंस्ट्रक्शन, मल्टीपल डेटा) द्वारा किए गए वेक्टर प्रोसेसर के लिए डेटा होल्ड करें।
 * विशेष प्रयोजन के रजिस्टर (एसपीआर) कार्यक्रम की स्थिति को पकड़ें; उनमें आमतौर पर कार्यक्रम गणक, जिसे इंस्ट्रक्शन पॉइंटर भी कहा जाता है, और स्टेटस रजिस्टर शामिल होते हैं; प्रोग्राम काउंटर और स्टेटस रजिस्टर को कार्यक्रम की स्थिति शब्द (PSW) रजिस्टर में जोड़ा जा सकता है। उपरोक्त स्टैक पॉइंटर को कभी-कभी इस समूह में भी शामिल किया जाता है। एंबेडेड माइक्रोप्रोसेसरों में विशेष हार्डवेयर तत्वों के अनुरूप रजिस्टर भी हो सकते हैं।
 * कुछ आर्किटेक्चर में, मॉडल-विशिष्ट रजिस्टर (जिसे मशीन-विशिष्ट रजिस्टर भी कहा जाता है) प्रोसेसर से संबंधित डेटा और सेटिंग्स को ही स्टोर करता है। चूंकि उनके अर्थ एक विशिष्ट प्रोसेसर के डिजाइन से जुड़े होते हैं, इसलिए उनसे प्रोसेसर पीढ़ियों के बीच मानक बने रहने की उम्मीद नहीं की जा सकती है।
 *  मेमोरी टाइप रेंज रजिस्टर (''एमटीआरआर')
 * आंतरिक रजिस्टर - निर्देश द्वारा पहुंच योग्य नहीं है, प्रोसेसर संचालन के लिए आंतरिक रूप से उपयोग किया जाता है।
 *  निर्देश रजिस्टर , वर्तमान में निष्पादित किए जा रहे निर्देश को धारण करता है।
 * यादृच्छिक अभिगम स्मृति से जानकारी प्राप्त करने से संबंधित रजिस्टर, सीपीयू से अलग चिप्स पर स्थित स्टोरेज रजिस्टरों का एक संग्रह:
 *  मेमोरी बफर रजिस्टर (एमबीआर), जिसे मेमोरी डेटा रजिस्टर (एमडीआर) के रूप में भी जाना जाता है।
 *  मेमोरी एड्रेस रजिस्टर  (MAR)
 * वास्तुकला रजिस्टर - एमआईपीएस वास्तुकला  द्वारा परिभाषित सॉफ्टवेयर को दिखाई देने वाले रजिस्टर भौतिक हार्डवेयर के अनुरूप नहीं हो सकते हैं, यदि अंतर्निहित हार्डवेयर द्वारा रजिस्टर का नामकरण किया जा रहा है।

हार्डवेयर रजिस्टर समान होते हैं, लेकिन सीपीयू के बाहर होते हैं।

कुछ आर्किटेक्चर (जैसे SPARC और MIPS ) में, पूर्णांक रजिस्टर फ़ाइल में पहला या अंतिम रजिस्टर एक छद्म-रजिस्टर होता है जिसमें पढ़ने पर हमेशा शून्य वापस करने के लिए हार्डवार्ड किया जाता है (ज्यादातर इंडेक्सिंग मोड को सरल बनाने के लिए), और इसे अधिलेखित नहीं किया जा सकता है। अल्फा में, यह फ़्लोटिंग-पॉइंट रजिस्टर फ़ाइल के लिए भी किया जाता है। इसके परिणामस्वरूप, रजिस्टर फाइलों को आमतौर पर एक रजिस्टर के रूप में उद्धृत किया जाता है, जिनमें से कितने वास्तव में प्रयोग करने योग्य होते हैं; उदाहरण के लिए, 32 रजिस्टरों को उद्धृत किया जाता है, जब उनमें से केवल 31 रजिस्टर की उपरोक्त परिभाषा में फिट होते हैं।

उदाहरण
निम्न तालिका कई मुख्यधारा के सीपीयू आर्किटेक्चर में रजिस्टरों की संख्या दिखाती है। ध्यान दें कि x86-संगत प्रोसेसर में स्टैक पॉइंटर (ESP) को एक पूर्णांक रजिस्टर के रूप में गिना जाता है, भले ही सीमित संख्या में निर्देश हों जिनका उपयोग इसकी सामग्री पर संचालित करने के लिए किया जा सकता है। अधिकांश आर्किटेक्चर पर समान चेतावनी लागू होती है।

हालांकि उपरोक्त सभी आर्किटेक्चर अलग-अलग हैं, लगभग सभी एक बुनियादी व्यवस्था में हैं जिसे वॉन न्यूमैन वास्तुकला के रूप में जाना जाता है, जिसे पहले हंगरी-अमेरिकी गणितज्ञ जॉन वॉन न्यूमैन द्वारा प्रस्तावित किया गया था। यह भी उल्लेखनीय है कि ग्राफिक्स प्रोसेसिंग इकाइयों पर सामान्य प्रयोजन कंप्यूटिंग पर रजिस्टरों की संख्या सीपीयू की तुलना में बहुत अधिक है।

उपयोग
प्रोसेसर पर उपलब्ध रजिस्टरों की संख्या और उन रजिस्टरों का उपयोग करके किए जा सकने वाले संचालन का संकलक के अनुकूलन द्वारा उत्पन्न कोड की दक्षता पर महत्वपूर्ण प्रभाव पड़ता है। एक्सप्रेशन ट्री का स्ट्रालर नंबर उस एक्सप्रेशन ट्री का मूल्यांकन करने के लिए आवश्यक न्यूनतम संख्या में रजिस्टर देता है।

यह भी देखें

 * सीपीयू कैश
 * पंजीकरण आवंटन
 * रजिस्टर फाइल
 * शिफ्ट का रजिस्टर