सूचकांक रजिस्टर

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

प्रायशः, वास्तविक डेटा (ऑपरेंड) के "प्रभावी" एड्रेस को बनाने के लिए एक इंडेक्स रजिस्टर के विषय को एक निकटम एड्रेस (जो स्वयं निर्देश का हिस्सा हो सकता है या किसी अन्य रजिस्टर में रखा जा सकता है) में जोड़ा जाता है (कुछ मामलों में घटाया भी जाता है). विशेष निर्देश आमतौर पर इंडेक्स रजिस्टर का परीक्षण करने के लिए उपयोग किए जाते हैं और, यदि परीक्षण विफल हो जाता है, तो इंडेक्स रजिस्टर को तत्काल स्थिरांक और शाखा से बढ़ाएं, आमतौर पर लूप की आरम्भ में। जबकि आम तौर पर प्रोसेसर जो निर्देश को कई इंडेक्स रजिस्टर समूह को एक साथ सामग्री निर्दिष्ट करने की अनुमति देते हैं, आईबीएम के पास कंप्यूटर की एक पंक्ति होती है जिसमें विषय वस्तु एक साथ होती है या होती थी।

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

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

इंडेक्स रजिस्टर, जिन्हें आमतौर पर आरम्भी ब्रिटिश कंप्यूटरों में बी-लाइन के रूप में जाना जाता है, कुछ मशीनों पर बी-रजिस्टर और अन्य पर एक्स-रजिस्टर, पहली बार 1949 में ब्रिटिश मैनचेस्टर मार्क 1 कंप्यूटर में उपयोग किए गए थे। सामान्य तौर पर, अनुक्रमणिका रजिस्टर प्रौद्योगिकी की दूसरी पीढ़ी के दौरान, मोटे तौर पर 1954-1966 &#x2013; दौरान कंप्यूटर का एक मानक हिस्सा बन गया। आईबीएम 700/7000 मेनफ्रेम श्रृंखला में अधिकांश मशीनों में वे थे, जो 1954 में आईबीएम 704 से प्रारंभहुए थे, हालांकि वे आईबीएम 650 और आईबीएम 1401 जैसी कुछ छोटी मशीनों पर वैकल्पिक थे।

इंडेक्स रजिस्टर वाली आरम्भी छोटी मशीनों में 1960 के आसपास AN/USQ-17, और SDS 9 सीरीज ऑफ रीयल-टाइम कंप्यूटिंग  सम्मिलित हैं।

1962 के UNIVAC 1107  में 15 X-रजिस्टर हैं, जिनमें से चार A-रजिस्टर भी थे।

1964 GE-635 में 8 समर्पित एक्स-रजिस्टर हैं; हालाँकि, यह निर्देश काउंटर या A या Q रजिस्टर के आधे से भी अनुक्रमण की अनुमति देता है।

1964 में प्रारंभकिया गया डिजिटल इक्विपमेंट कॉर्पोरेशन (DEC) PDP-6 और 1964 में घोषित आईबीएम सिस्टम/360 में समर्पित इंडेक्स रजिस्टर सम्मिलित नहीं हैं; इसके बजाय, उनके पास सामान्य-उद्देश्य वाले रजिस्टर होते हैं (पीडीपी-6 में "संचायक" कहलाते हैं) जिनमें या तो संख्यात्मक मान या एड्रेसहो सकते हैं। एक ऑपरेंड का स्मृति पता, पीडीपी -6 में, सामान्य प्रयोजन रजिस्टर की सामग्री का योग और 18-बिट ऑफ़सेट और, सिस्टम / 360 पर, दो सामान्य प्रयोजन रजिस्टरों की सामग्री का योग है। और एक 12-बिट ऑफ़सेट। PDP-6 के उत्तराधिकारियों की संगत PDP-10 पंक्ति, और आईबीएम सिस्टम/370 और बाद में सिस्टम/360 के संगत उत्तराधिकारी, वर्तमान z/आर्किटेक्चर सहित, उसी तरह से काम करते हैं।

1969 डेटा जनरल नोवा और उत्तराधिकारी एक्लिप्स, और 1970 डीईसी पीडीपी-11, मिनीकंप्यूटरों ने अलग-अलग संचयकों और सूचकांक रजिस्टरों के बजाय सामान्य-उद्देश्य रजिस्टर (नोवा और एक्लिप्स में "संचयक" कहा जाता है) प्रदान किया, जैसा कि उनके ग्रहण एमवी और वैक्स ने किया था। 32-बिट सुपरमिनीकंप्यूटर उत्तराधिकारी है। PDP-11 और VAX में, ऑपरेंड के मेमोरी एड्रेस की गणना करते समय सभी रजिस्टरों का उपयोग किया जा सकता है; नोवा, एक्लिप्स और एक्लिप्स एमवी में, केवल रजिस्टर 2 और 3 का उपयोग किया जा सकता है।

1971 सीडीसी स्टार-100 में 256 64-बिट रजिस्टरों की एक रजिस्टर फ़ाइल है, जिनमें से 9 आरक्षित हैं। अधिकांश कंप्यूटरों के विपरीत, STAR-100 निर्देशों में केवल रजिस्टर फ़ील्ड और ऑपरेंड फ़ील्ड होते हैं, इसलिए रजिस्टर पारंपरिक इंडेक्स रजिस्टरों की तुलना में पॉइंटर रजिस्टरों के रूप में अधिक काम करते हैं।

जबकि इंटेल 8080 ने एक रजिस्टर के माध्यम से अप्रत्यक्ष रूप से संबोधित करने की अनुमति दी, एक सही सूचकांक रजिस्टर वाला पहला माइक्रोप्रोसेसर1974 मोटोरोला 6800 प्रतीत होता है।

1975 में, 8-बिट एमओएस प्रौद्योगिकी 6502 प्रोसेसर में दो इंडेक्स रजिस्टर 'X' और 'Y' थे।

1978 में, इंटेल 8086, पहले x86 प्रोसेसर में आठ 16-बिट रजिस्टर थे, जिन्हें "सामान्य-उद्देश्य" के रूप में संदर्भित किया गया था, जिनमें से सभी को अधिकांश कार्यों में पूर्णांक डेटा रजिस्टरों के रूप में उपयोग किया जा सकता है; उनमें से चार, 'SI' (स्रोत इंडेक्स), 'DI' (डेस्टिनेशन इंडेक्स), 'BX' (बेस) और 'BP' (बेस पॉइंटर) का उपयोग ऑपरेंड के मेमोरी एड्रेस की गणना करते समय भी किया जा सकता है, जो उन रजिस्टरों में से एक और एक विस्थापन का योग है, या 'बीएक्स' या 'बीपी' में से एक, 'एसआई' या 'डीआई' में से एक और एक विस्थापन का योग है। 1979 Intel 8088, और 16-बिट Intel 80186, Intel 80188, और Intel 80286 उत्तराधिकारी समान कार्य करते हैं। 1985 में, i386, उन प्रोसेसरों का 32-बिट उत्तराधिकारी, x86 आर्किटेक्चर के IA-32 32-बिट संस्करण को पेश करते हुए, आठ 16-बिट रजिस्टरों को 32 बिट्स तक बढ़ाया, जिसमें "E" को आरम्भ में जोड़ा गया। रजिस्टर नाम; IA-32 में, एक ऑपरेंड का मेमोरी एड्रेस उन आठ रजिस्टरों में से एक का योग है, उन सात रजिस्टरों में से एक (स्टैक पॉइंटर को यहां दूसरे रजिस्टर के रूप में अनुमति नहीं है) को 1 और 8 के बीच 2 की शक्ति से गुणा और विस्थापन किया जाता है। एडवांस्ड माइक्रो डिवाइसेस ओपर्टन, जिसका पहला मॉडल 2003 में जारी किया गया था, ने x86-64, x86 निर्देश सेट का 64-बिट संस्करण पेश किया; x86-64 में, सामान्य-उद्देश्य रजिस्टरों को 64 बिट्स तक बढ़ाया गया था, और आठ अतिरिक्त सामान्य-उद्देश्य रजिस्टर जोड़े गए थे; एक ऑपरेंड का स्मृति पता उन 16 रजिस्टरों में से दो और विस्थापन का योग है।

1980 और 1990 के दशक में प्रारंभकिए गए रिड्यूस्ड इंस्ट्रक्शन सेट कंप्यूटिंग (RISC) इंस्ट्रक्शन सेट सभी सामान्य-उद्देश्य रजिस्टर प्रदान करते हैं जिनमें संख्यात्मक मान या पता मान हो सकते हैं। उन अधिकांश निर्देश सेटों में, 32 सामान्य-उद्देश्य वाले रजिस्टर हैं (उनमें से कुछ निर्देश सेटों में, उन रजिस्टरों में से एक का मान शून्य से कठोर होता है) का उपयोग ऑपरेंड एड्रेसकी गणना के लिए किया जा सकता है; उनके पास समर्पित इंडेक्स रजिस्टर नहीं थे। एआरएम आर्किटेक्चर के 32-बिट संस्करण में, जिसे पहली बार 1985 में विकसित किया गया था, केवल 16 रजिस्टरों को "सामान्य-उद्देश्य रजिस्टर" के रूप में नामित किया गया है, लेकिन उनमें से केवल 13 का उपयोग सभी उद्देश्यों के लिए किया जा सकता है, रजिस्टर R15 में प्रोग्राम काउंटर होता है। लोड या स्टोर निर्देश का स्मृति पता 16 रजिस्टरों में से किसी का योग है और या तो विस्थापन या अन्य रजिस्टरों में से एक R15 के अपवाद के साथ है (संभवतः स्केलिंग के लिए बाएं स्थानांतरित)। एआरएम आर्किटेक्चर के 64-बिट संस्करण में, 31 64-बिट सामान्य-उद्देश्य रजिस्टर प्लस एक स्टैक पॉइंटर और एक शून्य रजिस्टर हैं; लोड या स्टोर निर्देश का स्मृति पता 31 रजिस्टरों में से किसी का योग है और या तो विस्थापन या अन्य रजिस्टरों का योग है।

उदाहरण
असेंबली भाषा छद्म कोड में इंडेक्स रजिस्टर उपयोग का एक सरल उदाहरण यहां दिया गया है जो 4-बाइट शब्दों की 100 प्रविष्टि सरणी को बताता है:

Clear_accumulator Load_index 400,index2 //load 4*array size into index register 2 (index2) loop_start : Add_word_to_accumulator array_start,index2  //Add to AC the word at the address (array_start + index2) Branch_and_decrement_if_index_not_zero loop_start,4,index2  //loop decrementing by 4 until index register is zero

यह भी देखें

 * लूप के लिए