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

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

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

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

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

इंडेक्स रजिस्टर, जिन्हें आमतौर पर शुरुआती ब्रिटिश कंप्यूटरों में बी-लाइन के रूप में जाना जाता है, कुछ मशीनों पर बी-रजिस्टर और अन्य पर एक्स-रजिस्टर, पहली बार 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 में, इंटेल 80 86, पहले x86 प्रोसेसर में आठ 16-बिट रजिस्टर थे, जिन्हें सामान्य-उद्देश्य के रूप में संदर्भित किया गया था, जिनमें से सभी का उपयोग अधिकांश कार्यों में पूर्णांक डेटा रजिस्टर के रूप में किया जा सकता है; उनमें से चार, 'एसआई' (स्रोत सूचकांक), 'डीआई' (गंतव्य सूचकांक), 'बीएक्स' (आधार), और 'बीपी' (आधार सूचक), का उपयोग किसी ऑपरेंड के स्मृति पते की गणना करते समय भी किया जा सकता है, जो उन रजिस्टरों में से एक और विस्थापन का योग है, या 'बीएक्स' या 'बीपी', 'एसआई' या 'डीआई' में से एक, और एक विस्थापन का योग है।

1979 Intel 8088, और 16-bit  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 का उपयोग सभी उद्देश्यों के लिए किया जा सकता है, जिसमें रजिस्टर आर 15  कार्यक्रम गणक युक्त है। लोड या स्टोर निर्देश का मेमोरी पता 16 रजिस्टरों में से किसी का योग है और या तो विस्थापन या अन्य रजिस्टरों में से R15 (संभवतः स्केलिंग के लिए बाएं स्थानांतरित) के अपवाद के साथ है। एआरएम आर्किटेक्चर के 64-बिट संस्करण में, 31 64-बिट सामान्य-प्रयोजन रजिस्टर और एक स्टैक पॉइंटर और एक शून्य रजिस्टर हैं; लोड या स्टोर निर्देश का स्मृति पता 31 रजिस्टरों में से किसी का योग है और या तो विस्थापन या किसी अन्य रजिस्टर का योग है।

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

Clear_accumulator लोड_इंडेक्स 400, इंडेक्स 2 // लोड 4 * सरणी आकार इंडेक्स रजिस्टर 2 (इंडेक्स 2) में लूप_स्टार्ट : Add_word_to_accumulator array_start,index2 // एसी में एड्रेस पर शब्द जोड़ें (array_start + index2) Branch_and_decrement_if_index_not_zero loop_start,4,index2 // जब तक इंडेक्स रजिस्टर शून्य नहीं है तब तक लूप 4 से घट रहा है

यह भी देखें

 * पाश के लिए

संदर्भ
==