रजिस्टर फ़ाइल
एक रजिस्टर फाइल सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) में प्रोसेसर रजिस्टर की एक सरणी है। रजिस्टर बैंकिंग ऑपरेटिंग मोड के आधार पर कई अलग-अलग भौतिक रजिस्टरों तक पहुँचने के लिए एक ही नाम का उपयोग करने की विधि है। आधुनिक एकीकृत परिपथ-आधारित रजिस्टर फाइलें सामान्यतः कई पोर्टों के साथ तेज स्थिर रैम के माध्यम से कार्यान्वित की जाती हैं। इस तरह के रैम को पढ़ने और लिखने के समर्पित पोर्टों से अलग किया जाता है, जबकि साधारण मल्टीपोर्टेड एसआरएएम सामान्यतः एक ही पोर्टों के माध्यम से पढ़ और लिख सकेंगे।
सीपीयू का निर्देश सेट वास्तुकला लगभग सदैव रजिस्टरों के एक सेट को परिभाषित करेगा जो कि मेमोरी और चिप पर कार्यात्मक इकाइयों के बीच डेटा को स्टेज करने के लिए उपयोग किया जाता है। सरल सीपीयू में, ये आर्किटेक्चरल रजिस्टर सीपीयू के भीतर भौतिक रजिस्टर फ़ाइल (पीआरएफ) में प्रविष्टियों के लिए एक-से-एक के अनुरूप होते हैं। अधिक जटिल सीपीयू नाम बदलने का पंजीकरण करें का उपयोग करते हैं, ताकि मैपिंग जिसमें भौतिक प्रविष्टि एक विशेष वास्तुशिल्प रजिस्टर को संग्रहीत करती है, निष्पादन के दौरान गतिशील रूप से बदल जाती है। पारदर्शी सीपीयू कैश की अवधारणा के विपरीत, रजिस्टर फ़ाइल निर्देश सेट आर्किटेक्चर का हिस्सा है और प्रोग्रामर को दिखाई देती है।
रजिस्टर-बैंक स्विचिंग
रजिस्टर फाइलों को रजिस्टर बैंकों के रूप में एक साथ जोड़ा जा सकता है।[1] एक प्रोसेसर में एक से अधिक रजिस्टर बैंक हो सकते हैं।
एआरएम प्रोसेसर में बैंक और अनबैंक्ड दोनों तरह के रजिस्टर होते हैं। जबकि सभी मोड सदैव पहले आठ सामान्य-उद्देश्य रजिस्टरों के लिए समान भौतिक रजिस्टरों को साझा करते हैं, R0 से R7, भौतिक रजिस्टर जो कि बैंकेड रजिस्टरों, R8 से R14 तक, प्रोसेसर के ऑपरेटिंग मोड पर निर्भर करता है।[2] विशेष रूप से, फास्ट इंटरप्ट अनुरोध (FIQ) मोड में R8 से R12 के लिए रजिस्टरों का अपना बैंक है, साथ ही आर्किटेक्चर हर इंटरप्ट मोड के लिए एक निजी स्टैक पॉइंटर (R13) प्रदान करता है।
निर्देश जारी होने से पहले x86 प्रोसेसर निर्देश, डिकोडर, जीपीआर और रजिस्टर फाइलों के बीच स्विच करने के लिए संदर्भ स्विचिंग और फास्ट इंटरप्ट का उपयोग करते हैं, लेकिन यह केवल उन प्रोसेसर पर सम्मिलित है जो सुपरस्केलर का समर्थन करते हैं। हालाँकि, संदर्भ स्विचिंग एआरएम के रजिस्टर बैंक के रजिस्टरों के भीतर एक पूरी तरह से अलग तंत्र है।
मोडकॉम्प और बाद में इंटेल MCS-51 रजिस्टर 8051-संगत प्रोसेसर वर्तमान में सक्रिय रजिस्टर बैंक का चयन करने के लिए प्रोग्राम स्थिति शब्द में बिट्स का उपयोग करते हैं।
कार्यान्वयन
सामान्य लेआउट कन्वेंशन यह है कि एक साधारण सरणी को लंबवत रूप से पढ़ा जाता है। अर्थात्, एक एकल शब्द रेखा, जो क्षैतिज रूप से चलती है, बिट सेल की एक पंक्ति को उनके डेटा को बिट लाइनों पर रखने का कारण बनती है, जो लंबवत रूप से चलती हैं। भाव प्रवर्धक, जो लो-स्विंग रीड बिटलाइन को फुल-स्विंग लॉजिक स्तरों में परिवर्तित करता है, सामान्यतः नीचे (प्रोग्राम द्वारा) होता है। बड़ी रजिस्टर फाइलें तब कभी-कभी टाइलिंग मिरर और रोटेट सरल सरणियों द्वारा निर्मित की जाती हैं।
रजिस्टर फाइलों में प्रति पोर्ट प्रति प्रविष्टि एक शब्द रेखा होती है, एक बिट लाइन प्रति बिट चौड़ाई प्रति रीड पोर्ट, और दो बिट लाइन प्रति बिट चौड़ाई प्रति राइट पोर्ट होती है। प्रत्येक बिट सेल में Vdd और Vss भी होते हैं। इसलिए, वायर पिच क्षेत्र पोर्टों की संख्या के वर्ग के रूप में बढ़ता है, और ट्रांजिस्टर क्षेत्र रैखिक रूप से बढ़ता है।[3]
कुछ बिंदुओं पर, सभी रीड पोर्ट्स के साथ एक ही रजिस्टर फ़ाइल के बजाय रीड पोर्ट्स की छोटी संख्या के साथ, कई अनावश्यक रजिस्टर फ़ाइलों के लिए यह छोटा और / या तेज़ हो सकता है। एमआईपीएस आर्किटेक्चर R8000 की पूर्णांक (कंप्यूटर विज्ञान) इकाई, उदाहरण के लिए, एक 9 रीड 4 राइट पोर्ट 32 प्रविष्टि 64-बिट रजिस्टर फ़ाइल 0.7 माइक्रोमीटर प्रक्रिया में लागू की गई थी, जिसे हाथ की लंबाई से चिप को देखने पर देखा जा सकता था।
रजिस्टरों को कई रजिस्टर फाइलों में विभाजित करने के दो लोकप्रिय तरीके वितरित रजिस्टर फ़ाइल कॉन्फ़िगरेशन और विभाजित रजिस्टर फ़ाइल कॉन्फ़िगरेशन हैं।[3]
सिद्धांत रूप में, कोई भी ऑपरेशन जो 64-बिट-वाइड रजिस्टर फ़ाइल के साथ कई रीड और राइट पोर्ट के साथ किया जा सकता है, एक 8-बिट-वाइड रजिस्टर फ़ाइल के साथ सिंगल रीड पोर्ट और सिंगल राइट पोर्ट के साथ किया जा सकता है। हालांकि, कई पोर्टों के साथ विस्तृत रजिस्टर फ़ाइलों की बिट-स्तरीय समानांतरता उन्हें बहुत तेजी से चलाने की अनुमति देती है और इस प्रकार, वे एक ही चक्र में संचालन कर सकते हैं जो कई चक्रों को कम पोर्टों या एक संकीर्ण बिट चौड़ाई या दोनों के साथ ले जाएगा।
रजिस्टर फ़ाइल के बिट्स में चौड़ाई सामान्यतः शब्द (डेटा प्रकार) में बिट्स की संख्या होती है। कभी-कभी यह प्रत्येक रजिस्टर में अतिरिक्त बिट संलग्न करने के लिए थोड़ा चौड़ा होता है, जैसे ज़हर बिट। यदि डेटा शब्द की चौड़ाई किसी पते की चौड़ाई से अलग है- या कुछ मामलों में, जैसे कि 68000, भले ही वे समान चौड़ाई हों- पता रजिस्टर डेटा रजिस्टरों की तुलना में एक अलग रजिस्टर फ़ाइल में हैं।
डिकोडर
- डिकोडर को प्रायः प्री-डिकोडर और डिकोडर में तोड़ दिया जाता है।
- डिकोडर AND गेट्स की एक श्रृंखला है जो शब्द रेखाओं को संचालित करता है।
- प्रति रीड या राइट पोर्ट में एक डिकोडर है। यदि सरणी में चार रीड और दो राइट पोर्ट हैं, उदाहरण के लिए, इसमें सरणी में प्रति बिट सेल में 6 शब्द पंक्तियाँ हैं, और डिकोडर में छह AND गेट्स प्रति पंक्ति हैं। ध्यान दें कि डिकोडर को सरणी से समानता रखना चाहिए, जो उन और द्वारों को चौड़ा और छोटा करने के लिए मजबूर करता है
सरणी
बिट सेल के लिए मूल योजना:
- राज्य को इनवर्टर की जोड़ी में संग्रहित किया जाता है।
- डेटा को NMOS ट्रांजिस्टर द्वारा एक बिट लाइन में पढ़ा जाता है।
- डेटा को एक दो-NMOS स्टैक के माध्यम से ग्राउंड करने के लिए एक तरफ या दूसरे को छोटा करके लिखा जाता है।
- तो: रीड पोर्ट प्रति बिट सेल में एक ट्रांजिस्टर लेते हैं, राइट पोर्ट चार लेते हैं।
कई अनुकूलन संभव हैं:
- सेल के बीच लाइनें साझा करना, उदाहरण के लिए, Vdd और Vss
- रीड बिट लाइन्स को प्रायः Vdd और Vss के बीच किसी चीज के लिए प्रीचार्ज किया जाता है।
- पढ़ें बिट लाइनें प्रायः Vdd या Vss के रास्ते का केवल एक अंश स्विंग करती हैं। एक अर्थ प्रवर्धक इस छोटे-स्विंग सिग्नल को पूर्ण तर्क स्तर में परिवर्तित करता है। छोटे स्विंग सिग्नल तेज़ होते हैं क्योंकि बिट लाइन में बहुत कम ड्राइव होती है लेकिन परजीवी धारिता का एक बड़ा सौदा होता है।
- राइट बिट लाइन्स को ब्रेड किया जा सकता है, ताकि वे पास की पढ़ी गई बिटलाइन्स के साथ समान रूप से जोड़े। क्योंकि राइट बिटलाइन्स पूरे जोरों पर हैं, वे रीड बिटलाइन्स पर महत्वपूर्ण असुविधा पैदा कर सकते हैं।
- यदि Vdd एक क्षैतिज रेखा है, तो इसे किसी अन्य डिकोडर द्वारा बंद किया जा सकता है, यदि कोई भी राइट पोर्ट उस चक्र के दौरान उस रेखा को लिख रहा हो। यह अनुकूलन लिखने की गति को बढ़ाता है।
- तकनीकें जो रजिस्टर फाइलों द्वारा उपयोग की जाने वाली ऊर्जा को कम करती हैं, कम-शक्ति कम बिजली इलेक्ट्रॉनिक्स में उपयोगी होती हैं[4]
माइक्रोआर्किटेक्चर
अधिकांश रजिस्टर फाइलें एक साथ एक ही प्रविष्टि में कई राइट पोर्ट को लिखने से रोकने के लिए कोई विशेष प्रावधान नहीं करती हैं। इसके बजाय, निर्देश शेड्यूलिंग हार्डवेयर यह सुनिश्चित करता है कि किसी विशेष चक्र में केवल एक निर्देश एक विशेष प्रविष्टि लिखता है। यदि एक ही रजिस्टर को लक्षित करने वाले कई निर्देश जारी किए जाते हैं, तो एक को छोड़कर सभी का लेखन सक्षम बंद कर दिया जाता है।
क्रास किए गए इनवर्टर राइट ऑपरेशन के बाद व्यवस्थित होने में कुछ सीमित समय लेते हैं, जिसके दौरान रीड ऑपरेशन में या तो अधिक समय लगेगा या गार्बेज वापस आएगा। बहुसंकेतकों को बायपास करना साधारण बात है जो लिखित डेटा को रीड पोर्ट्स पर बायपास करते हैं जब एक साथ एक ही प्रविष्टि को पढ़ने और लिखने का आदेश दिया जाता है। ये बाईपास मल्टीप्लेक्सर्स प्रायः एक बड़े बाईपास नेटवर्क का हिस्सा होते हैं जो आगे के परिणाम हैं जो अभी तक कार्यात्मक इकाइयों के बीच प्रतिबद्ध नहीं हैं।
रजिस्टर फ़ाइल सामान्यतः उस डेटापथ से पिच-मिलान की जाती है जो वह कार्य करता है। पिच मैचिंग डेटापथ टर्न कॉर्नर के ऊपर से गुजरने वाली कई बसों से बचा जाता है, जो बहुत सारे क्षेत्र का उपयोग करेगा। लेकिन चूँकि प्रत्येक इकाई में एक ही बिट पिच होनी चाहिए, डेटापथ में प्रत्येक इकाई सबसे चौड़ी इकाई द्वारा मजबूर बिट पिच के साथ समाप्त होती है, जो अन्य इकाइयों में क्षेत्र को बर्बाद कर सकती है। फ़ाइलों को पंजीकृत करें, क्योंकि उनके पास दो तार प्रति बिट प्रति राइट पोर्ट हैं, और क्योंकि सभी बिट लाइनों को प्रत्येक बिट सेल पर सिलिकॉन से संपर्क करना चाहिए, प्रायः डेटापथ की पिच सेट कर सकते हैं।
क्षेत्र को कभी-कभी डेटापथ में कई इकाइयों वाली मशीनों पर दो डेटापथों के साथ-साथ सहेजा जा सकता है, जिनमें से प्रत्येक में एक डेटापथ की तुलना में छोटी बिट पिच होती है। यह प्रकरण सामान्यतः रत्येक डेटापथ के लिए एक रजिस्टर फ़ाइल की कई प्रतियों को बाध्य करता है।
उदाहरण के लिए, अल्फा 21264 (EV6) शैडो रजिस्टर फाइल आर्किटेक्चर को लागू करने वाला पहला बड़ा माइक्रो-आर्किटेक्चर था। इसमें पूर्णांक रजिस्टर फ़ाइल की दो प्रतियां और इसके फ्रंट एंड (भविष्य और स्केल फ़ाइल, प्रत्येक में 2 रीड और 2 राइट पोर्ट) में स्थित फ्लोटिंग पॉइंट रजिस्टर की दो प्रतियां थीं, और दोनों के बीच डेटा प्रसारित करने के लिए एक अतिरिक्त चक्र लिया। एक संदर्भ स्विच जारी करने वाले तर्क ने दोनों के बीच डेटा अग्रेषण संचालन की संख्या को कम करने का प्रयास किया और इसके पूर्णांक प्रदर्शन में काफी सुधार किया, और सट्टा निष्पादन के साथ सुपरस्क्लेर आर्किटेक्चर में सामान्य-उद्देश्य रजिस्टरों की सीमित संख्या के प्रभाव को कम करने में मदद की। इस डिजाइन को बाद में स्पार्क, एमआईपीएस टेक्नोलॉजीस और कुछ बाद के x86 कार्यान्वयनों द्वारा अनुकूलित किया गया था।
एमआईपीएस आर्किटेक्चर कई रजिस्टर फाइलों का भी उपयोग करता है। R8000 फ़्लोटिंग-पॉइंट यूनिट में फ़्लोटिंग-पॉइंट रजिस्टर फ़ाइल की दो प्रतियाँ थीं, जिनमें से प्रत्येक में चार राइट और चार रीड पोर्ट थे, और एक संदर्भ स्विच के साथ एक ही समय में दोनों प्रतियाँ लिखीं। हालाँकि, यह पूर्णांक संचालन का समर्थन नहीं करता था, और पूर्णांक रजिस्टर फ़ाइल अभी भी वैसी ही बनी हुई थी। बाद में, एम्बेडेड मार्केट के पक्ष में छाया रजिस्टर फाइलों को नए डिजाइनों में छोड़ दिया गया।
स्पार्क अपनी हाई-एंड लाइन के लिए एक शैडो रजिस्टर फ़ाइल आर्किटेक्चर का भी उपयोग करता है। इसमें पूर्णांक रजिस्टर फाइलों की 4 प्रतियां (भविष्य, सेवानिवृत्त, स्केल और स्क्रैच, प्रत्येक में 7 रीड 4 राइट पोर्ट) और फ्लोटिंग पॉइंट रजिस्टर फ़ाइल की 2 प्रतियां हैं। हालांकि, अल्फा और x86 के विपरीत, वे बैकएंड में अपनी आउट-ऑफ-ऑर्डर यूनिट के ठीक बाद एक रिटायर यूनिट के रूप में स्थित हैं और रजिस्टर फाइलों का नाम बदल रहे हैं। छाया रजिस्टर निर्देश लाने और डिकोडिंग चरणों के दौरान निर्देशों को लोड नहीं करते हैं और इस डिजाइन में एक संदर्भ स्विच अनावश्यक है।
आईबीएम कई प्रमुख माइक्रोप्रोसेसरों के समान तंत्र का उपयोग करता है, डिकोडर के साथ रजिस्टर फाइल को गहराई से मर्ज करता है, लेकिन इसकी रजिस्टर फाइलें डिकोडर पक्ष से स्वतंत्र रूप से काम करती हैं और इसमें संदर्भ स्विचिंग सम्मिलित नहीं होती है, जो अल्फा और x86 से अलग है। इसकी अधिकांश रजिस्टर फाइलें न केवल इसके समर्पित डिकोडर की सेवा करती हैं, बल्कि थ्रेड स्तर तक भी होती हैं। उदाहरण के लिए, POWER8 में 8 निर्देश डिकोडर तक हैं, लेकिन 32 सामान्य प्रयोजन की 32 रजिस्टर फाइलें प्रत्येक को रजिस्टर करती हैं (4 रीड और 4 राइट पोर्ट्स) एक साथ मल्टीथ्रेडिंग की सुविधा के लिए, क्योंकि संदर्भ स्विच की कमी के कारण इसके समानांतर निर्देशों का उपयोग किसी अन्य रजिस्टर फ़ाइल में नहीं किया जा सकता है।
x86 प्रोसेसर लाइन में, एक विशिष्ट पूर्व-486 CPU में एक व्यक्तिगत रजिस्टर फ़ाइल नहीं थी, क्योंकि सभी सामान्य प्रयोजन रजिस्टर सीधे डिकोडर के साथ काम करते थे, और x87 पुश स्टैक फ़्लोटिंग-पॉइंट यूनिट के भीतर ही स्थित था। पेंटियम से प्रारम्भ होकर, एक विशिष्ट पेंटियम-संगत x86 प्रोसेसर एकल-पोर्ट आर्किटेक्चरल रजिस्टर फ़ाइल की एक प्रति के साथ एकीकृत होता है जिसमें 6 सामान्य-उद्देश्य रजिस्टर, 4 नियंत्रण रजिस्टर, 8 डिबग रजिस्टर (दो आरक्षित), 1 स्टैक पॉइंटर रजिस्टर, 1 होता है। स्टैक बेस रजिस्टर, 1 इंस्ट्रक्शन पॉइंटर, 1 फ्लैग रजिस्टर और 6 सेगमेंट रजिस्टर होते हैं।
डिफ़ॉल्ट रूप से 8 x87 FP पुश डाउन स्टैक की एक प्रति, MMX (निर्देश सेट) रजिस्टर वस्तुतः x87 स्टैक से सिम्युलेटेड थे और MMX निर्देश की आपूर्ति के लिए x86 रजिस्टर की आवश्यकता होती है और स्टैक सम्मिलित होने के लिए उपनाम P6 पर, सूक्ष्म संचालन में डीकोड करने और आउट-ऑफ-ऑर्डर निष्पादन में नाम बदलने से पहले स्वतंत्र रूप से निर्देश को प्रारंभिक पाइपलाइन चरणों में समानांतर में संग्रहीत और निष्पादित किया जा सकता है। P6 (माइक्रोआर्किटेक्चर) से प्रारम्भ होकर, सभी रजिस्टर फाइलों को डेटा के प्रचार के लिए अतिरिक्त चक्र की आवश्यकता नहीं होती है, आर्किटेक्चरल और फ्लोटिंग पॉइंट जैसी रजिस्टर फाइलें कोड बफर और डिकोडर्स के बीच स्थित होती हैं, जिन्हें रिटायर बफर, रीऑर्डर बफर और OoOE कहा जाता है और रिंग बस के भीतर जुड़ा होता है ( 16 बाइट्स)। रजिस्टर फ़ाइल अभी भी एक x86 रजिस्टर फ़ाइल और एक x87 स्टैक बनी हुई है और दोनों रिटायरमेंट स्टोरिंग के रूप में काम करती हैं। परिणाम भंडारण के लिए बैंडविड्थ बढ़ाने के लिए इसकी x86 रजिस्टर फ़ाइल को दोहरे पोर्ट में बढ़ाया गया था। डिबग/कंडीशन कोड/कंट्रोल/अनाम/फ्लैग जैसे रजिस्टरों को मुख्य रजिस्टर फाइल से हटा दिया गया और माइक्रो-ऑप रोम और इंस्ट्रक्शन सीक्वेंसर के बीच अलग-अलग फाइलों में रखा गया। केवल दुर्गम रजिस्टर जैसे खंड रजिस्टर अब सामान्य-उद्देश्य रजिस्टर फ़ाइल (निर्देश सूचक को छोड़कर) से अलग हो गए हैं; वे अब शेड्यूलर और इंस्ट्रक्शन एलोकेटर के बीच स्थित हैं, ताकि रजिस्टर का नाम बदलने और आउट-ऑफ-ऑर्डर निष्पादन की सुविधा मिल सके। पेंटियम III में 128-बिट XMM रजिस्टर के प्रारम्भ के बाद x87 स्टैक को बाद में फ़्लोटिंग-पॉइंट रजिस्टर फ़ाइल के साथ मिला दिया गया था, लेकिन XMM रजिस्टर फ़ाइल अभी भी x86 पूर्णांक रजिस्टर फ़ाइलों से अलग स्थित है।
बाद में P6 कार्यान्वयन (पेंटियम एम, योनाह) ने एक शैडो रजिस्टर फ़ाइल आर्किटेक्चर पेश किया जो दोहरे पोर्ट वाले पूर्णांक आर्किटेक्चरल रजिस्टर फ़ाइलों की 2 प्रतियों तक विस्तारित हुआ और इसमें संदर्भ स्विच (भविष्य और सेवानिवृत्त फ़ाइल और स्केल फ़ाइल के बीच पूर्णांक और पूर्णांक के बीच उपयोग की जाने वाली एक ही चाल का उपयोग करके) सम्मिलित है। तैरनेवाला स्थल)। माइक्रो-ऑपरेशन फ्यूजन प्रारम्भ होने के बाद x86 आर्किटेक्चर में सम्मिलित रजिस्टर अड़चन को हल करने के लिए ऐसा किया गया था, लेकिन इसमें अभी भी प्रति फ़ाइल क्षमता में कुल 32 बाइट्स के लिए 8 प्रविष्टियां 32 बिट आर्किटेक्चरल रजिस्टर हैं (सेगमेंट रजिस्टर और इंस्ट्रक्शन पॉइंटर बने हुए हैं) सट्टा फ़ाइल के रूप में फ़ाइल के भीतर, हालांकि वे प्रोग्राम द्वारा पहुंच योग्य नहीं हैं)। दूसरी फ़ाइल को स्केल्ड शैडो रजिस्टर फ़ाइल के रूप में परोसा जाता है, जो संदर्भ स्विच के बिना स्केल की गई फ़ाइल कुछ निर्देशों को स्वतंत्र रूप से संग्रहीत नहीं कर सकती है। SSE2/SSE3/SSSE3 के कुछ निर्देशों को पूर्णांक संचालन के लिए इस सुविधा की आवश्यकता होती है, उदाहरण के लिए PSHUFB, PMADDUBSW, PHSUBW, PHSUBD, PHSUBSW, PHADDW, PHADDD, PHADDSW जैसे निर्देशों के लिए दोनों रजिस्टर फ़ाइलों से EAX/EBX/ECX/EDX लोड करने की आवश्यकता होगी, हालाँकि एक x86 प्रोसेसर के लिए एक ही निर्देश के साथ दूसरी रजिस्टर फ़ाइल का उपयोग करना असामान्य था। ज्यादातर समय, दूसरी फाइल को स्केल रिटायर्ड फाइल के रूप में परोसा जाता है। पेंटियम एम आर्किटेक्चर में अभी भी एक दोहरे पोर्ट वाली फ़्लोटिंग-पॉइंट रजिस्टर फ़ाइल (8 प्रविष्टियाँ MM/XMM) हैं जो तीन डिकोडर्स के साथ साझा की गई हैं, और FP रजिस्टर फ़ाइल में इसके साथ एक शैडो रजिस्टर फ़ाइल नहीं है, क्योंकि इसकी शैडो-रजिस्टर-फ़ाइल आर्किटेक्चर में फ़्लोटिंग-पॉइंट फ़ंक्शंस सम्मिलित नहीं थे। P6 के बाद के प्रोसेसर में aआर्किटेक्चरल रजिस्टर फाइलें बाहरी हैं और रिटायर्ड फाइल के बाद प्रोसेसर के बैकएंड में स्थित हैं, जैसा कि रजिस्टर रीनेमिंग/रीऑर्डर बफर के लिए आंतरिक कोर में स्थित आंतरिक रजिस्टर फाइल के विपरीत है। हालाँकि, कोर 2 में अब इसे एक इकाई के भीतर रखा गया है जिसे रजिस्टर अलियास टेबल (RAT) कहा जाता है, जो निर्देश आवंटक के साथ स्थित है, लेकिन सेवानिवृत्ति के समान आकार के रजिस्टर आकार का है। कोर (माइक्रोआर्किटेक्चर) ने आंतरिक रिंग बस को 24 बाइट्स तक बढ़ा दिया (3 से अधिक निर्देशों को डिकोड करने की अनुमति दी) और इसकी रजिस्टर फ़ाइल को डुअल-पोर्टेड (एक रीड/वन राइट) से क्वाड-पोर्टेड (दो रीड/टू राइट) तक बढ़ा दिया। रजिस्टर अभी भी 32 बिट और 32 बाइट्स में 8 प्रविष्टियां बनी हुई हैं (6 खंड रजिस्टर और एक निर्देश सूचक को सम्मिलित नहीं किया गया है क्योंकि वे फ़ाइल में किसी भी कोड/निर्देश द्वारा एक्सेस करने में असमर्थ हैं) कुल फ़ाइल आकार में और कुल के लिए x64 में 16 प्रविष्टियों तक विस्तारित प्रति फ़ाइल 128 बाइट आकार। पेंटियम एम से इसकी पाइपलाइन पोर्ट और डिकोडर में वृद्धि हुई, लेकिन वे कोड बफर के बजाय आवंटन तालिका के साथ स्थित हैं। इसकी एफपी एक्सएमएम रजिस्टर फ़ाइल को क्वाड-पोर्टेड (2 रीड/2 राइट) में भी बढ़ाया गया है, रजिस्टर अभी भी 32 बिट में 8 प्रविष्टियां बनी हुई हैं और x64 मोड में 16 प्रविष्टियों तक विस्तारित हैं और संख्या अभी भी 1 बनी हुई है क्योंकि इसका शैडो-रजिस्टर-फाइल आर्किटेक्चर है फ़्लोटिंग पॉइंट/एसएसई कार्यों सहित नहीं।
बाद के x86 कार्यान्वयन में, जैसे नेहलेम (माइक्रोआर्किटेक्चर) और बाद के प्रोसेसर, दोनों पूर्णांक और फ्लोटिंग पॉइंट रजिस्टरों को अब एक एकीकृत ऑक्टा-पोर्टेड (छह पढ़ने और दो लिखने) सामान्य-उद्देश्य रजिस्टर फ़ाइल (32-बिट में 8 + 8) में सम्मिलित किया गया है। 16 + 16 प्रति फ़ाइल x64 में), जबकि हाइपर थ्रेडिंग को निष्पादित करने के पसंदीदा में बढ़ी हुई शैडो रजिस्टर फ़ाइल आर्किटेक्चर के साथ रजिस्टर फ़ाइल को 2 तक बढ़ाया गया है और प्रत्येक थ्रेड अपने डिकोडर के लिए स्वतंत्र रजिस्टर फ़ाइलों का उपयोग करता है। बाद में सैंडी ब्रिज और आगे की जगह शैडो रजिस्टर टेबल और आर्किटेक्चरल रजिस्टरों को रीऑर्डर बफर को डिकोड करने से पहले बहुत बड़ी और अभी तक अधिक उन्नत भौतिक रजिस्टर फ़ाइल के साथ बदल दिया गया। रैंडर्ड ने कहा कि सैंडी ब्रिज और आगे अब एक वास्तुशिल्प रजिस्टर नहीं है।
बॉननेल (माइक्रोआर्किटेक्चर) लाइन पर P5 का आधुनिक सरलीकृत संशोधन था। इसमें थ्रेड और डिकोडर के साथ रजिस्टर फाइल शेयर की एकल प्रतियां सम्मिलित हैं। रजिस्टर फ़ाइल एक डुअल-पोर्ट डिज़ाइन है, 8/16 प्रविष्टियाँ GPRS, 8/16 प्रविष्टियाँ डीबग रजिस्टर और 8/16 प्रविष्टियाँ स्थिति कोड एक ही फ़ाइल में एकीकृत हैं। हालाँकि इसमें आठ-प्रविष्टियाँ 64 बिट शैडो आधारित रजिस्टर और आठ-प्रविष्टियाँ 64 बिट अनाम रजिस्टर हैं जो अब मूल P5 डिज़ाइन के विपरीत मुख्य GPRs से अलग हैं और निष्पादन इकाई के बाद स्थित हैं, और इन रजिस्टरों की फ़ाइल सिंगल-पोर्टेड है और Core/Core2 पर पाई गई स्केल्ड शैडो रजिस्टर फाइल जैसे निर्देश के संपर्क में नहीं आता (शैडो रजिस्टर फाइल आर्किटेक्चरल रजिस्टरों से बनी होती है और बॉननेल में शैडो रजिस्टर फाइल आर्किटेक्चर नहीं होने के कारण नहीं था), हालांकि फाइल का उपयोग कमी के कारण नाम बदलने के उद्देश्य से किया जा सकता है बॉननेल आर्किटेक्चर पर ऑर्डर के बाहर निष्पादन पाया गया। इसमें एक्सएमएम फ़्लोटिंग पॉइंट रजिस्टर फ़ाइल प्रति थ्रेड की एक प्रति भी थी। नेहलेम (माइक्रोआर्किटेक्चर) से अंतर यह है कि बॉननेल के पास एकीकृत रजिस्टर फ़ाइल नहीं है और इसके हाइपर थ्रेडिंग के लिए कोई समर्पित रजिस्टर फ़ाइल नहीं है। इसके बजाय, बॉननेल अपने थ्रेड के लिए एक अलग नाम रजिस्टर का उपयोग करता है, भले ही यह क्रम से बाहर न हो। Bonnell, Larrabee (माइक्रोआर्किटेक्चर) और Xeon Phi के समान ही प्रत्येक के पास केवल एक सामान्य-उद्देश्य पूर्णांक रजिस्टर फ़ाइल है, लेकिन Larrabee में 16 XMM रजिस्टर फ़ाइलें (प्रति फ़ाइल 8 प्रविष्टियाँ) हैं, और Xeon Phi में 128 AVX- तक हैं। 512 रजिस्टर फाइलें, प्रत्येक में वेक्टर इंस्ट्रक्शन स्टोरेज के लिए 32 512-बिट ZMM रजिस्टर होते हैं, जो L2 कैश जितना बड़ा हो सकता है।
इंटेल की कुछ अन्य x86 लाइनें हैं जिनके आंतरिक डिज़ाइन, MediaGX और Vortex86 में एक रजिस्टर फ़ाइल नहीं है और कई एम्बेडेड प्रोसेसर हैं जो पेंटियम-संगत या रिवर्स-इंजीनियर्ड प्रारंभिक 80x86 प्रोसेसर नहीं हैं। इसलिए, उनमें से ज्यादातर के पास रेगी नहीं हैster फ़ाइल उनके डिकोडर्स के लिए है, लेकिन उनके GPRs का अलग-अलग उपयोग किया जाता है। दूसरी ओर, नेटबर्स्ट (माइक्रोआर्किटेक्चर), इसके डिकोडर के लिए एक रजिस्टर फ़ाइल नहीं है, क्योंकि इसके x86 जीपीआर इसकी संरचना के भीतर सम्मिलित नहीं थे, एक भौतिक एकीकृत नाम बदलने वाली रजिस्टर फ़ाइल (सैंडी ब्रिज के समान, लेकिन) के प्रारम्भ के कारण आर्किटेक्चरल रजिस्टर फ़ाइल को बदलने और x86 डिकोडिंग योजना को छोड़ने के प्रयास के लिए पेंटियम 4 के नामकरण से पहले रजिस्टर का उपयोग करने में असमर्थता के कारण थोड़ा अलग)। इसके बजाय यह एएलयू से पहले पूर्णांक निष्पादन और भंडारण के लिए एसएसई का उपयोग करता है और परिणाम के बाद, एसएसई 2/एसएसई 3/एसएसएसई 3 उसी तंत्र का उपयोग अपने पूर्णांक ऑपरेशन के लिए भी करता है।
AMD के शुरुआती डिज़ाइन जैसे K6 में इंटेल की तरह एक रजिस्टर फ़ाइल नहीं है और यह शैडो रजिस्टर फ़ाइल आर्किटेक्चर का समर्थन नहीं करता है क्योंकि इसके संदर्भ स्विच की कमी और बाईपास इन्वर्टर जो एक रजिस्टर फ़ाइल को उचित रूप से कार्य करने के लिए आवश्यक हैं। इसके बजाय वे एक अलग जीपीआर का उपयोग करते हैं जो एक समर्पित पूर्णांक डिकोडर और फ्लोटिंग डिकोडर के साथ अपने ओओओई सीपीयू के लिए एक नाम रजिस्टर तालिका से सीधे लिंक करता है। तंत्र इंटेल के प्री-पेंटियम प्रोसेसर लाइन के समान है। उदाहरण के लिए, AMD K6 प्रोसेसर में चार int (एक आठ-प्रविष्टियाँ अस्थायी स्क्रैच रजिस्टर फ़ाइल + एक आठ-प्रविष्टियाँ भविष्य की रजिस्टर फ़ाइल + एक आठ-प्रविष्टियाँ प्राप्त की गई रजिस्टर फ़ाइल + एक आठ-प्रविष्टियाँ अनाम रजिस्टर फ़ाइल) और दो FP नाम बदलने वाली रजिस्टर फ़ाइलें होती हैं। (दो आठ-प्रविष्टियाँ x87 ST फ़ाइल एक fadd जाती है और एक fmov जाती है) जो पूर्णांक नाम बदलने के लिए अपने x86 EAX के साथ सीधे लिंक करती है और फ्लोटिंग पॉइंट रीनेमिंग के लिए XMM0 रजिस्टर करती है, लेकिन बाद में AMD K7 ने इसके फ्रंट एंड में शैडो रजिस्टर सम्मिलित किया, इसे बढ़ाया गया डिकोड होने से पहले क्रम पूर्णांक संचालन के लिए 40 प्रविष्टियाँ एकीकृत रजिस्टर फ़ाइल, रजिस्टर फ़ाइल में 8 प्रविष्टियाँ स्क्रैच रजिस्टर + 16 भविष्य की GPRs रजिस्टर फ़ाइल + 16 अनाम GPRs रजिस्टर फ़ाइल होती हैं। बाद के एएमडी डिजाइनों में यह छाया रजिस्टर डिजाइन को छोड़ देता है और व्यक्तिगत जीपीआर डायरेक्ट लिंक डिजाइन के साथ के6 आर्किटेक्चर का समर्थन करता है। आमद फेनम की तरह, इसमें तीन इंट रजिस्टर फाइलें और दो एसएसई रजिस्टर फाइलें हैं जो सीधे जीपीआर से जुड़ी भौतिक रजिस्टर फाइल में स्थित हैं। हालाँकि, यह बुलडोजर (माइक्रोआर्किटेक्चर) पर एक पूर्णांक + एक फ़्लोटिंग-पॉइंट तक मापता है। शुरुआती एएमडी डिजाइनों की तरह, अधिकांश x86 निर्माताओं जैसे कि सिरिक्स, वीआईए, डीएम एंड पी, और एसआईएस ने भी उसी तंत्र का उपयोग किया, जिसके परिणामस्वरूप उनके इन-ऑर्डर सीपीयू के नाम बदलने के बिना पूर्णांक प्रदर्शन की कमी हुई। सिरिक्स और एएमडी जैसी कंपनियों को बाधाओं को कम करने की आशा में कैश आकार में वृद्धि करनी पड़ी। एएमडी का एसएसई पूर्णांक ऑपरेशन कोर 2 और पेंटियम 4 की तुलना में एक अलग तरीके से काम करता है; यह डीकोड चरण से पहले मान को सीधे लोड करने के लिए अपने अलग नाम बदलने वाले पूर्णांक रजिस्टर का उपयोग करता है। हालांकि सैद्धांतिक रूप से इसे इंटेल के एसएसई कार्यान्वयन की तुलना में केवल एक छोटी पाइपलाइन की आवश्यकता होगी, लेकिन सामान्यतः शाखा भविष्यवाणी की लागत इंटेल की तुलना में बहुत अधिक और उच्च लापता दर होती है, और इसके एसएसई निर्देश को निष्पादित करने के लिए कम से कम दो चक्र लेने होंगे चाहे कोई भी हो विस्तृत निर्देश, जैसा कि शुरुआती एएमडी कार्यान्वयन एसएसई निर्देश सेट में एफपी और इंट दोनों को निष्पादित नहीं कर सका जैसे इंटेल के कार्यान्वयन ने किया था।
अल्फा 21264 के विपरीत, स्पार्क, और एमआईपीएस आर्किटेक्चर जो एक समय में एक ऑपरेंड को लोड/लाने के लिए केवल एक रजिस्टर फ़ाइल की अनुमति देता है; सुपरस्केल प्राप्त करने के लिए इसे कई रजिस्टर फाइलों की आवश्यकता होगी। दूसरी तरफ एआरएम वास्तुकला प्रोसेसर निर्देशों को लोड/लाने के लिए एकाधिक रजिस्टर फाइलों को एकीकृत नहीं करता है। एआरएम जीपीआर का निर्देश सेट के लिए कोई विशेष उद्देश्य नहीं है (एआरएम आईएसए को संचायक, सूचकांक और स्टैक/बेस पॉइंट की आवश्यकता नहीं है। रजिस्टरों में एक संचायक नहीं है और बेस/स्टैक पॉइंट केवल थंब मोड में उपयोग किया जा सकता है)। कोई भी जीपीआर छोटे कोड आकार में स्वतंत्र रूप से कई निर्देशों को प्रचारित और संग्रहीत कर सकता है जो एक रजिस्टर में फिट होने में सक्षम होने के लिए काफी छोटा है और इसका वास्तु रजिस्टर एक टेबल के रूप में कार्य करता है और सभी डिकोडर/निर्देशों के साथ सरल बैंक स्विचिंग के साथ साझा किया जाता है।ओडर। एआरएम और अन्य डिजाइनों के बीच प्रमुख अंतर यह है कि एआरएम सुपरस्केलर में अतिरिक्त रजिस्टर फ़ाइल की आवश्यकता के बिना त्वरित बैंक स्विचिंग के साथ समान सामान्य-उद्देश्य रजिस्टर पर चलने की अनुमति देता है। एआरएम के साथ एक ही तंत्र साझा करने वाले x86 के बावजूद कि इसके जीपीआर व्यक्तिगत रूप से किसी भी डेटा को स्टोर कर सकते हैं, यदि तीन से अधिक गैर-संबंधित निर्देश संग्रहीत किए जाते हैं, तो x86 डेटा निर्भरता का सामना करेगा, क्योंकि इसकी जीपीआर प्रति फ़ाइल बहुत छोटी है (32 बिट मोड में आठ और 16 बिट मोड में) डेटा के लिए ARM के 13 में 32 बिट और 31 में 64 बिट की तुलना में 64 बिट, और इसके डिकोडर को फीड करने के लिए कई रजिस्टर फ़ाइलों के बिना सुपरस्क्लेर होना असंभव है (x86 कोड ARM की तुलना में बड़ा और जटिल है)। क्योंकि प्रतिस्पर्धी होने के लिए अधिकांश x86 के फ्रंट-एंड एआरएम प्रोसेसर की तुलना में बहुत बड़े और अधिक शक्ति वाले हो गए हैं (उदाहरण: पेंटियम एम एंड कोर 2 डुओ, बे ट्रेल)। कोई समर्पित रजिस्टर-फाइल आर्किटेक्चर न होने के कारण कुछ तृतीय-पक्ष x86 समतुल्य प्रोसेसर ARM के साथ गैर-प्रतिस्पर्धी भी बन गए। विशेष रूप से एएमडी, साइरिक्स और वीआईए के लिए जो रजिस्टर का नाम बदलने और आदेश निष्पादन के बिना कोई उचित प्रदर्शन नहीं ला सकता है, जो मोबाइल प्रतिस्पर्धा में केवल इंटेल एटम को क्रम में x86 प्रोसेसर कोर होने के लिए छोड़ देता है। यह तब तक था जब तक कि x86 नेहलेम प्रोसेसर ने अपने पूर्णांक और फ़्लोटिंग पॉइंट रजिस्टर दोनों को एक ही फ़ाइल में विलय कर दिया, और इसके आउट-ऑफ-ऑर्डर आंतरिक कोर में नाम बदलने से पहले एक बड़े भौतिक रजिस्टर टेबल और इसके फ्रंट-एंड में एन्हांस्ड एलोकेटर टेबल का परिचय दिया। .
नाम बदलने का पंजीकरण करें
रजिस्टर रीनेमिंग करने वाले प्रोसेसर भौतिक रजिस्टर फ़ाइल के सबसेट में लिखने के लिए प्रत्येक कार्यात्मक इकाई के लिए व्यवस्था कर सकते हैं। यह व्यवस्था क्षेत्र में बड़ी बचत के लिए प्रति बिट सेल में कई राइट पोर्ट की आवश्यकता को समाप्त कर सकती है। परिणामी रजिस्टर फाइल, प्रभावी रूप से सिंगल राइट पोर्ट के साथ रजिस्टर फाइलों का ढेर, फिर रीड पोर्ट्स की प्रतिकृति और सबसेटिंग से लाभ होता है। सीमा पर, यह तकनीक प्रत्येक कार्यात्मक इकाई के इनपुट पर 1-राइट, 2-रीड रेगफाइल्स का ढेर लगाती है। चूंकि कम संख्या में पोर्टों के साथ regfiles में प्रायः ट्रांजिस्टर क्षेत्र का प्रभुत्व होता है, इसलिए इस तकनीक को इस सीमा तक नहीं धकेलना सबसे अच्छा है, लेकिन यह सभी के लिए उपयोगी है।
विंडोज़ पंजीकृत करें
स्पार्क ISA रजिस्टर विंडो को परिभाषित करता है, जिसमें रजिस्टरों के 5-बिट आर्किटेक्चरल नाम वास्तव में सैकड़ों प्रविष्टियों के साथ एक बहुत बड़ी रजिस्टर फ़ाइल पर एक विंडो की ओर इशारा करते हैं। सैकड़ों प्रविष्टियों के साथ मल्टीपोर्टेड रजिस्टर फाइलों को लागू करने के लिए बड़े क्षेत्र की आवश्यकता होती है। जब स्थानांतरित किया जाता है तो रजिस्टर विंडो 16 रजिस्टरों से स्लाइड करती है, ताकि प्रत्येक आर्किटेक्चरल रजिस्टर नाम बड़े सरणी में केवल कुछ ही रजिस्टरों को संदर्भित कर सके, उदा। आर्किटेक्चरल रजिस्टर r20 केवल भौतिक रजिस्टरों #20, #36, #52, #68, #84, #100, #116 को संदर्भित कर सकता है, अगर भौतिक फ़ाइल में सिर्फ सात विंडो हैं।
क्षेत्र को बचाने के लिए, कुछ स्पार्क कार्यान्वयन 32-प्रविष्टि रजिस्टर फ़ाइल को लागू करते हैं, जिसमें प्रत्येक सेल में सात बिट होते हैं। बाहरी पोर्टों के माध्यम से केवल एक ही पढ़ा और लिखा जा सकता है, लेकिन बिट्स की सामग्री को घुमाया जा सकता है। एक रोटेशन एक चक्र में रजिस्टर विंडो के एक आंदोलन को पूरा करता है। क्योंकि राज्य संचलन को पूरा करने वाले अधिकांश तार स्थानीय हैं, कम शक्ति के साथ जबरदस्त बैंडविड्थ संभव है।
इसी तकनीक का उपयोग R10000 रजिस्टर रीनेमिंग मैपिंग फ़ाइल में किया जाता है, जो प्रत्येक भौतिक रजिस्टर के लिए 6-बिट वर्चुअल रजिस्टर नंबर संग्रहीत करता है। नाम बदलने वाली फ़ाइल में, जब भी कोई शाखा ली जाती है, तो नाम बदलने की स्थिति की जाँच की जाती है, ताकि जब किसी शाखा के गलत होने का पता चले, तो पुराने नाम बदलने की स्थिति को एक ही चक्र में पुनर्प्राप्त किया जा सके। (रजिस्टर नाम बदलें देखें।)
यह भी देखें
संदर्भ
- ↑ Wikibooks: Microprocessor Design/Register File#Register Bank.
- ↑ "ARM Architecture Reference Manual" (PDF). ARM Limited. July 2005. Retrieved 13 October 2021.
- ↑ 3.0 3.1 Johan Janssen. "Compiler Strategies for Transport Triggered Architectures". 2001. p. 169. p. 171-173.
- ↑ "Energy efficient asymmetrically ported register files" by Aneesh Aggarwal and M. Franklin. 2003.
बाहरी संबंध
- रजिस्टर file design considerations in dynamically scheduled processors - Farkas, Jouppi, Chow - 1995