सूचकांक रजिस्टर
This article needs additional citations for verification. (December 2009) (Learn how and when to remove this template message) |
कंप्यूटर की सेंट्रल प्रोसेसिंग यूनिट में एक इंडेक्स रजिस्टर एक प्रोसेसर रजिस्टर (या एक निर्दिष्ट मेमोरी लोकेशन) होता है।[1] प्रोग्राम चलाने के दौरान ओपेरंड पतों को इंगित करने के लिए उपयोग किया जाता है। यह स्ट्रिंग (कंप्यूटर विज्ञान) और ऐरे डेटा संरचना के माध्यम से कदम रखने के लिए उपयोगी है। इसका उपयोग लूप पुनरावृत्तियों और काउंटरों को रखने के लिए भी किया जा सकता है। कुछ निर्देश सेट वास्तुकला में इसका उपयोग मेमोरी के ब्लॉक को पढ़ने/लिखने के लिए किया जाता है। वास्तुकला के आधार पर यह एक समर्पित सूचकांक रजिस्टर या एक सामान्य प्रयोजन रजिस्टर हो सकता है।[2] कुछ निर्देश सेट एक से अधिक इंडेक्स रजिस्टर का उपयोग करने की अनुमति देते हैं; उस स्थिति में अतिरिक्त निर्देश फ़ील्ड निर्दिष्ट कर सकते हैं कि कौन से इंडेक्स रजिस्टर का उपयोग करना है।[3] आम तौर पर, वास्तविक डेटा (ऑपरेंड) का प्रभावी पता बनाने के लिए एक इंडेक्स रजिस्टर की सामग्री को तत्काल पते (जो कि निर्देश का हिस्सा हो सकता है या किसी अन्य रजिस्टर में रखा जा सकता है) में जोड़ा जाता है। इंडेक्स रजिस्टर का परीक्षण करने के लिए विशेष निर्देश आम तौर पर प्रदान किए जाते हैं और, यदि परीक्षण विफल हो जाता है, तो इंडेक्स रजिस्टर को तत्काल स्थिर और शाखाओं से बढ़ाता है, आमतौर पर लूप की शुरुआत में। जबकि आम तौर पर प्रोसेसर जो एक निर्देश को कई इंडेक्स रजिस्टरों को निर्दिष्ट करने की अनुमति देते हैं, सामग्री को एक साथ जोड़ते हैं, आईबीएम के पास कंप्यूटरों की एक पंक्ति थी जिसमें सामग्री एक साथ थी या होगी।[4] इंडेक्स रजिस्टर ऐरे डेटा स्ट्रक्चर/एरे डेटा स्ट्रक्चर ऑपरेशंस करने और रिकॉर्ड्स के भीतर फील्ड से फील्ड में नेविगेट करने के लिए कमर्शियल डेटा प्रोसेसिंग में उपयोगी साबित हुए हैं। दोनों उपयोगों में सूचकांक रजिस्टरों ने उपयोग की गई मेमोरी की मात्रा को काफी कम कर दिया और निष्पादन की गति में वृद्धि की।
इतिहास
किसी भी प्रकार के एड्रेसिंग मोड के बिना शुरुआती कंप्यूटरों में # मेमोरी इनडायरेक्ट, एरे ऑपरेशंस को स्व-संशोधित कोड इंस्ट्रक्शन एड्रेस द्वारा किया जाना था, जिसके लिए कई अतिरिक्त प्रोग्राम स्टेप्स की आवश्यकता होती है और अधिक कंप्यूटर मेमोरी का उपयोग किया जाता है,[5] प्रारंभिक युग के कंप्यूटर इंस्टॉलेशन में एक दुर्लभ संसाधन (साथ ही दो दशक बाद के शुरुआती माइक्रो कंप्यूटर में)।
इंडेक्स रजिस्टर, जिसे आमतौर पर शुरुआती ब्रिटिश कंप्यूटरों में बी-लाइन के रूप में जाना जाता है, कुछ मशीनों पर बी-रजिस्टर और एक्स-रजिस्टर के रूप में[lower-alpha 1] दूसरों पर, पहली बार 1949 में यूनाइटेड किंगडम मैनचेस्टर मार्क 1 कंप्यूटर में उपयोग किया गया था। सामान्य तौर पर, इंडेक्स रजिस्टर कंप्यूटर का एक मानक हिस्सा बन गए, प्रौद्योगिकी के कंप्यूटिंग हार्डवेयर के इतिहास के दौरान, लगभग 1954-1966। अधिकांश[lower-alpha 2] आईबीएम 700/7000 श्रृंखला में मशीनें | आईबीएम 700/7000 मेनफ़्रेम कंप्यूटर श्रृंखला में वे थे, जो 1954 में आईबीएम 704 से शुरू हुए थे, हालांकि वे आईबीएम 650 और आईबीएम 1401 जैसी कुछ छोटी मशीनों पर वैकल्पिक थे।
इंडेक्स रजिस्टर वाली शुरुआती छोटी मशीनों में 1960 के आसपास AN/USQ-17, और SDS 9 सीरीज ऑफ रीयल-टाइम कंप्यूटिंग शामिल हैं।
1962 के UNIVAC 1107 में 15 X-रजिस्टर हैं, जिनमें से चार A-रजिस्टर भी थे।
1964 जीई-635 में 8 समर्पित एक्स-रजिस्टर हैं; हालाँकि, यह निर्देश काउंटर द्वारा या A और Q regsiters के आधे से भी अनुक्रमण की अनुमति देता है।
1964 में पेश किए गए डिजिटल उपकरण निगम (DEC) PDP-6 और 1964 में घोषित IBM System/360 में समर्पित इंडेक्स रजिस्टर शामिल नहीं हैं; इसके बजाय, उनके पास सामान्य-उद्देश्य वाले रजिस्टर हैं (जिन्हें पीडीपी-6 में संचायक कहा जाता है) जिनमें संख्यात्मक मान या पते हो सकते हैं। एक ऑपरेंड का मेमोरी पता, पीडीपी -6 में, एक सामान्य-उद्देश्य रजिस्टर की सामग्री का योग और एक 18-बिट ऑफ़सेट और, सिस्टम/360 पर, दो सामान्य-प्रयोजन रजिस्टरों की सामग्री का योग है। और एक 12-बिट ऑफसेट।[6][7] पीडीपी-10 -6 के उत्तराधिकारियों की संगत पीडीपी -10 लाइन, और आईबीएम सिस्टम / 370 और बाद में सिस्टम / 360 के संगत उत्तराधिकारी, वर्तमान z / आर्किटेक्चर सहित, उसी फैशन में काम करते हैं।
1969 दिनांक सामान्य नोवा और उत्तराधिकारी डेटा सामान्य ग्रहण , और 1970 DEC PDP-11 , मिनी कंप्यूटर ने अलग-अलग संचायकों और इंडेक्स रजिस्टरों के बजाय सामान्य प्रयोजन रजिस्टर (नोवा और एक्लिप्स में संचायक कहा जाता है) प्रदान किए, जैसा कि उनके डेटा जनरल एक्लिप्स एमवी ने किया था। /8000 और VAX 32-बिट सुपर मिनी कंप्यूटर उत्तराधिकारी। PDP-11 और VAX में, ऑपरेंड के मेमोरी एड्रेस की गणना करते समय सभी रजिस्टरों का उपयोग किया जा सकता है; नोवा, एक्लिप्स और एक्लिप्स एमवी में, केवल रजिस्टर 2 और 3 का उपयोग किया जा सकता है।[8][9][10] 1971 CDC STAR-100 में 256 64-बिट रजिस्टरों की एक रजिस्टर फ़ाइल है, जिनमें से 9 आरक्षित हैं। अधिकांश कंप्यूटरों के विपरीत, STAR-100 निर्देशों में केवल रजिस्टर फ़ील्ड और ऑपरेंड फ़ील्ड होते हैं, इसलिए रजिस्टर पारंपरिक इंडेक्स रजिस्टर की तुलना में पॉइंटर रजिस्टर के रूप में अधिक काम करते हैं।
जबकि इंटेल 8080 ने एक रजिस्टर के माध्यम से अप्रत्यक्ष रूप से संबोधित करने की अनुमति दी, एक सच्चे सूचकांक रजिस्टर वाला पहला माइक्रोप्रोसेसर 1974 मोटोरोला 6800 प्रतीत होता है।
1975 में, 8-बिट एमओएस प्रौद्योगिकी 6502 प्रोसेसर में दो इंडेक्स रजिस्टर 'X' और 'Y' थे।[11] 1978 में, इंटेल 8086 , पहले x86 प्रोसेसर में आठ 16-बिट रजिस्टर थे, जिन्हें सामान्य-उद्देश्य के रूप में संदर्भित किया गया था, जिनमें से सभी का उपयोग अधिकांश कार्यों में पूर्णांक डेटा रजिस्टर के रूप में किया जा सकता है; उनमें से चार, 'एसआई' (स्रोत सूचकांक), 'डीआई' (गंतव्य सूचकांक), 'बीएक्स' (आधार), और 'बीपी' (आधार सूचक), का उपयोग किसी ऑपरेंड के स्मृति पते की गणना करते समय भी किया जा सकता है, जो उन रजिस्टरों में से एक और विस्थापन का योग है, या 'बीएक्स' या 'बीपी', 'एसआई' या 'डीआई' में से एक, और एक विस्थापन का योग है।[12] 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 की शक्ति से गुणा किया जाता है। , और विस्थापन।[13]: 3-11–3-12, 3-22–3-23 उन्नत माइक्रो डिवाइसेस ओप्टेरॉन , जिसका पहला मॉडल 2003 में जारी किया गया था, ने x86-64 , x86 निर्देश सेट का 64-बिट संस्करण पेश किया; x86-64 में, सामान्य-प्रयोजन रजिस्टरों को 64 बिट्स तक बढ़ा दिया गया था, और आठ अतिरिक्त सामान्य-प्रयोजन रजिस्टर जोड़े गए थे; एक ऑपरेंड का मेमोरी एड्रेस उन 16 रजिस्टरों में से दो और एक विस्थापन का योग है।[14][13]: 3–12, 3–24 1980 और 1990 के दशक में पेश किए गए कम किए गए निर्देश सेट कंप्यूटिंग (RISC) निर्देश सेट सभी सामान्य-उद्देश्य वाले रजिस्टर प्रदान करते हैं जिनमें संख्यात्मक मान या पता मान हो सकते हैं। उन अधिकांश निर्देश सेटों में, 32 सामान्य-उद्देश्य वाले रजिस्टर होते हैं (उनमें से कुछ निर्देश सेटों में, उन रजिस्टरों में से एक का मान शून्य पर हार्डवायर किया जाता है) का उपयोग ऑपरेंड पते की गणना के लिए किया जा सकता है; उनके पास समर्पित सूचकांक रजिस्टर नहीं थे। एआरएम वास्तुकला परिवार के 32-बिट संस्करण में, पहली बार 1985 में विकसित किया गया था, केवल 16 रजिस्टरों को सामान्य-उद्देश्य रजिस्टर के रूप में नामित किया गया है, लेकिन उनमें से केवल 13 का उपयोग सभी उद्देश्यों के लिए किया जा सकता है, जिसमें रजिस्टर आर 15 कार्यक्रम गणक युक्त है। लोड या स्टोर निर्देश का मेमोरी पता 16 रजिस्टरों में से किसी का योग है और या तो विस्थापन या अन्य रजिस्टरों में से R15 (संभवतः स्केलिंग के लिए बाएं स्थानांतरित) के अपवाद के साथ है।[15] एआरएम आर्किटेक्चर के 64-बिट संस्करण में, 31 64-बिट सामान्य-प्रयोजन रजिस्टर और एक स्टैक पॉइंटर और एक शून्य रजिस्टर हैं; लोड या स्टोर निर्देश का स्मृति पता 31 रजिस्टरों में से किसी का योग है और या तो विस्थापन या किसी अन्य रजिस्टर का योग है।[16]
उदाहरण
असेंबली भाषा छद्म कोड में इंडेक्स रजिस्टर उपयोग का एक सरल उदाहरण यहां दिया गया है जो 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 से घट रहा है
यह भी देखें
टिप्पणियाँ
- ↑ The term X-registers was also used for accumulators on, e.g., the CDC 6600.
- ↑ The 702, 705 and 7080 did not have index registers.
संदर्भ
- ↑ "Instructions: Index Words" (PDF). IBM 7070-7074 Principles of Operation (PDF). IBM. 1962. p. 11. GA22-7003-6.
- ↑ "What Is an Index Register? (with picture)". EasyTechJunkie (in English). Retrieved 2022-07-24.
- ↑ IBM 709 Reference Manual, Form A22-6501-0, 1958, p. 12
- ↑ IBM 7094 Principles of Operation (PDF). Fifth Edition. IBM. October 21, 1966. A22-6703-4.
- ↑ IBM 1401 Reference manual, Form A24-1403-4, 1960, p. 77
- ↑ Programmed Data Processor-6 Handbook (PDF). Digital Equipment Corporation. August 1964. pp. 20–22.
- ↑ IBM System/360 Principles of Operation (PDF) (Eighth ed.). IBM. September 1968. pp. 8, 12–14. A22-6821-7.
- ↑ Programmer's Reference Manual, Nova Line Computers (PDF). Data General. January 1976. pp. I-1, II-7.
- ↑ Programmer's Reference Manual, Eclipse Line Computers (PDF). Data General. March 1975. pp. 1–1, 2–6.
- ↑ ECLIPSE 32-Bit Systems Principles of Operation (PDF). Data General. August 1984. pp. 1–2.
- ↑ "Registers - 6502 Assembly". www.6502.buss.hk. Retrieved 2022-07-24.
- ↑ "The 8086 Family User's Manual" (PDF). Intel Corporation. October 1979. pp. 2–6, 2–68. Archived (PDF) from the original on April 4, 2018. Retrieved March 28, 2018.
- ↑ 13.0 13.1 Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume 1: Basic Architecture. Intel Corporation. March 2018. Chapter 3. Archived from the original on January 26, 2012. Retrieved March 19, 2014.
- ↑ AMD64 Architecture Programmer's Manual Volume 1: Application Programming (PDF). Advanced Micro Devices. October 2020. pp. 3, 16.
- ↑ ARM Architecture Reference Manual. Arm. 2005. pp. A2-6, A3-21.
- ↑ Arm Architecture Reference Manual Armv8, for Armv8-A architecture profile. Arm. 2022. pp. C1-227, C3-252.
==