प्रक्रमक रजिस्टर

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

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

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

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

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

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


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

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

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

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

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

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

यह भी देखें

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