रजिस्टर का नाम परिवर्तन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
कंप्यूटर वास्तुकला में, रजिस्टर का नाम बदलना ऐसी विधि है जो तार्किक [[प्रोसेसर रजिस्टर]] को भौतिक रजिस्टरों से अलग करती है। प्रत्येक तार्किक रजिस्टर के साथ भौतिक रजिस्टरों का सेट जुड़ा होता है। जब [[मशीन भाषा]] निर्देश विशेष तार्किक रजिस्टर को संदर्भित करता है, तो प्रोसेसर तुरंत इस नाम को विशिष्ट भौतिक रजिस्टर में स्थानांतरित कर देता है। भौतिक रजिस्टर अपारदर्शी हैं और उन्हें सीधे संदर्भित नहीं किया जा सकता है, किंतु केवल विहित नामों के माध्यम से संदर्भित किया जा सकता है।
कंप्यूटर आर्किटेक्चर में, '''रजिस्टर का नाम परिवर्तन''' ऐसी विधि है जो तार्किक [[प्रोसेसर रजिस्टर]] को भौतिक रजिस्टरों से भिन्न करती है। प्रत्येक तार्किक रजिस्टर के साथ भौतिक रजिस्टरों का सेट जुड़ा होता है। जब [[मशीन भाषा|मशीन लैंग्वेज]] निर्देश विशेष तार्किक रजिस्टर को संदर्भित करता है, तो प्रोसेसर शीघ्र इस नाम को विशिष्ट भौतिक रजिस्टर में स्थानांतरित कर देता है। भौतिक रजिस्टर अपारदर्शी हैं और उन्हें सीधे संदर्भित नहीं किया जा सकता है, किंतु केवल विहित नामों के माध्यम से संदर्भित किया जा सकता है।


इस विधि का उपयोग क्रमिक [[निर्देश (कंप्यूटर विज्ञान)]] द्वारा रजिस्टरों के पुन: उपयोग से उत्पन्न होने वाले गलत [[डेटा निर्भरता]] को समाप्त करने के लिए किया जाता है, जिनके बीच कोई वास्तविक डेटा निर्भरता नहीं होती है। इन गलत डेटा निर्भरताओं के उन्मूलन से निर्देश स्ट्रीम में अधिक निर्देश-स्तरीय समानता का पता चलता है, जिसका उपयोग श्रेष्ठ कंप्यूटर प्रदर्शन के लिए [[सुपरस्केलर]] और आउट-ऑफ-ऑर्डर निष्पादन जैसी विभिन्न और पूरक विधि द्वारा किया जा सकता है।
इस विधि का उपयोग क्रमिक [[निर्देश (कंप्यूटर विज्ञान)]] द्वारा रजिस्टरों के पुन: उपयोग से उत्पन्न होने वाले गलत [[डेटा निर्भरता]] को समाप्त करने के लिए किया जाता है, जिनके बीच कोई वास्तविक डेटा निर्भरता नहीं होती है। इन गलत डेटा निर्भरताओं के उन्मूलन से निर्देश स्ट्रीम में अधिक निर्देश-स्तरीय समानता का पता चलता है, जिसका उपयोग श्रेष्ठ कंप्यूटर प्रदर्शन के लिए [[सुपरस्केलर]] और आउट-ऑफ-ऑर्डर निष्पादन जैसी विभिन्न और पूरक विधि द्वारा किया जा सकता है।
'''लिए [[सुपरस्केलर]] और आउट-ऑफ-ऑर्डर निष्पादन जैसी विभिन्न'''
== समस्या दृष्टिकोण ==
== समस्या दृष्टिकोण ==
एक [[रजिस्टर मशीन]] में, प्रोग्राम निर्देशों से बने होते हैं जो मूल्यों पर काम करते हैं। निर्देशों को इन मानों को एक दूसरे से अलग करने के लिए नाम दिया जाता है। एक विशिष्ट निर्देश कह सकता है: ”<math>x</math> और <math>y</math> “जोड़ें” और परिणाम को <math>z</math> डालें”। इस निर्देश में, <math>x</math>, <math>y</math> और <math>z</math> स्टोरेज स्थानों के नाम हैं।
[[रजिस्टर मशीन]] में, प्रोग्राम निर्देशों से बने होते हैं जो मूल्यों पर कार्य करते हैं। निर्देशों को इन मानों को दूसरे से भिन्न  करने के लिए नाम दिया जाता है। विशिष्ट निर्देश कह सकता है: यदि ”<math>x</math> और <math>y</math> “जोड़ें” और परिणाम को <math>z</math> डालें”। इस निर्देश में, <math>x</math>, <math>y</math> और <math>z</math> स्टोरेज स्थानों के नाम हैं।


एक कॉम्पैक्ट इंस्ट्रक्शन एन्कोडिंग के लिए, अधिकांश प्रोसेसर इंस्ट्रक्शन समुच्चय में विशेष स्थानों का छोटा सा समुच्चय होता है जिसे विशेष नाम रजिस्टर द्वारा संदर्भित किया जा सकता है। उदाहरण के लिए, x86 इंस्ट्रक्शन समुच्चय आर्किटेक्चर में 8 पूर्णांक रजिस्टर हैं, [[x86-64]] में 16, कई [[ अल्प निर्देश सेट कंप्यूटर | अल्प निर्देश समुच्चय कंप्यूटर]] में 32 और IA-64 में 128 हैं। छोटे प्रोसेसर में, इन स्थानों के नाम सीधे [[फ़ाइल पंजीकृत करें|रजिस्टर फ़ाइल]] के तत्वों से मेल खाते हैं।
कॉम्पैक्ट इंस्ट्रक्शन एन्कोडिंग के लिए, अधिकांश प्रोसेसर इंस्ट्रक्शन समुच्चय में विशेष स्थानों का छोटा सा समुच्चय होता है जिसे विशेष नाम रजिस्टर द्वारा संदर्भित किया जा सकता है। उदाहरण के लिए, x86 इंस्ट्रक्शन समुच्चय आर्किटेक्चर में 8 पूर्णांक रजिस्टर हैं, [[x86-64]] में 16, अनेक [[ अल्प निर्देश सेट कंप्यूटर |अल्प निर्देश समुच्चय कंप्यूटर]] में 32 और IA-64 में 128 हैं। छोटे प्रोसेसर में, इन स्थानों के नाम सीधे [[फ़ाइल पंजीकृत करें|रजिस्टर फ़ाइल]] के तत्वों से मेल खाते हैं।


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


आउट-ऑफ-ऑर्डर सीपीयू पर चल रहे कोड के इस टुकड़े पर विचार करें:
आउट-ऑफ-ऑर्डर सीपीयू पर चल रहे कोड के इस टुकड़े पर विचार करें:
Line 21: Line 18:
m[2056] ≔ r1
m[2056] ≔ r1
</syntaxhighlight>
</syntaxhighlight>
अंतिम तीन पंक्तियों के निर्देश पहले तीन निर्देशों से स्वतंत्र हैं, किंतु प्रोसेसर <syntaxhighlight lang="asm" inline>r1 ≔ m[2048]</syntaxhighlight> को तब तक समाप्त नहीं कर सकता जब तक की पूर्ववर्ती <syntaxhighlight lang="asm" inline>m[1032] ≔ r1</syntaxhighlight> पूरा नही हो जाता है (ऐसा करने से अन्यथा गलत मान लिखा जाएगा)।
अंतिम तीन पंक्तियों के निर्देश प्रथम तीन निर्देशों से स्वतंत्र हैं, किंतु प्रोसेसर <syntaxhighlight lang="asm" inline>r1 ≔ m[2048]</syntaxhighlight> को तब तक समाप्त नहीं कर सकता जब तक की पूर्ववर्ती <syntaxhighlight lang="asm" inline>m[1032] ≔ r1</syntaxhighlight> पूरा नही हो जाता है (ऐसा करने से अन्यथा गलत मान लिखा जाएगा)।


कुछ रजिस्टरों के नाम बदलने से यह प्रतिबंध समाप्त हो जाता है:
कुछ रजिस्टरों रिनेमिंग से यह प्रतिबंध समाप्त हो जाता है:
<syntaxhighlight lang="asm" line>
<syntaxhighlight lang="asm" line>
r1 ≔ m[1024]
r1 ≔ m[1024]
Line 32: Line 29:
m[2056] ≔ r2
m[2056] ≔ r2
</syntaxhighlight>
</syntaxhighlight>
अब अंतिम तीन निर्देशों को पहले तीन के समानांतर निष्पादित किया जा सकता है। गलत डेटा निर्भरता के कारण किसी भी रुकावट को दूर करके प्रोग्राम पहले की तुलना में तेजी से चलने लगता है।
अब अंतिम तीन निर्देशों को पहले तीन के समानांतर निष्पादित किया जा सकता है। गलत डेटा निर्भरता के कारण किसी भी रुकावट को दूर करके प्रोग्राम पहले की तुलना में तीव्रता से चलने लगता है।


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


== डेटा ख़तरे ==
== डेटा हैजर्ड                                                            ==
{{main|Data hazard}}
{{main|डेटा हैजर्ड }}
जब एक से अधिक निर्देश किसी विशेष स्थान को ऑपरेंड के रूप में संदर्भित करते हैं, या तो इसे पढ़कर (इनपुट के रूप में) या इसे लिखकर (आउटपुट के रूप में), उन निर्देशों को मूल प्रोग्राम ऑर्डर से भिन्न क्रम में निष्पादित करने से तीन प्रकार के '''डेटा खतरों''' हो सकते हैं:
जब से अधिक निर्देश किसी विशेष स्थान को ऑपरेंड के रूप में संदर्भित करते हैं, या तो इसे पढ़कर (इनपुट के रूप में) या इसे लिखकर (आउटपुट के रूप में), उन निर्देशों को मूल प्रोग्राम ऑर्डर से भिन्न क्रम में निष्पादित करने से तीन प्रकार के डेटा हैजर्ड हो सकते हैं:
; रीड-आफ्टर-राइट (आरएडब्लू )
; रीड-आफ्टर-राइट (आरएडब्लू )
: किसी रजिस्टर या मेमोरी लोकेशन से रीड की गई चीज़ को प्रोग्राम ऑर्डर में अंतिम राइट द्वारा वहां रखा गया मान लौटाना चाहिए, न कि किसी अन्य राइट द्वारा। इसे सच्ची निर्भरता या प्रवाह निर्भरता के रूप में संदर्भित किया जाता है, और प्रोग्राम क्रम में निष्पादित करने के लिए निर्देशों की आवश्यकता होती है।
: किसी रजिस्टर या मेमोरी लोकेशन से रीड की गई चीज़ को प्रोग्राम ऑर्डर में अंतिम राइट द्वारा वहां रखा गया मान लौटाना चाहिए, न कि किसी अन्य राइट द्वारा। इसे सच्ची निर्भरता या प्रवाह निर्भरता के रूप में संदर्भित किया जाता है, और प्रोग्राम क्रम में निष्पादित करने के लिए निर्देशों की आवश्यकता होती है।
Line 44: Line 41:
: किसी विशेष रजिस्टर या मेमोरी स्थान पर क्रमिक राइट को दूसरे राइट के परिणाम वाले उस स्थान को छोड़ना होता है। यदि आवश्यक हो तो पहले राइट को स्क्वैश करके (जिसे निरस्त करना, निरस्त करना या म्यूट करना भी कहा जाता है) इसे हल किया जा सकता है। डब्लूएडब्लू निर्भरता को आउटपुट निर्भरता के रूप में भी जाना जाता है।
: किसी विशेष रजिस्टर या मेमोरी स्थान पर क्रमिक राइट को दूसरे राइट के परिणाम वाले उस स्थान को छोड़ना होता है। यदि आवश्यक हो तो पहले राइट को स्क्वैश करके (जिसे निरस्त करना, निरस्त करना या म्यूट करना भी कहा जाता है) इसे हल किया जा सकता है। डब्लूएडब्लू निर्भरता को आउटपुट निर्भरता के रूप में भी जाना जाता है।
; राइट-आफ्टर-रीड (डब्लूएआर)
; राइट-आफ्टर-रीड (डब्लूएआर)
: किसी रजिस्टर या मेमोरी स्थान से रीड को उस स्थान पर लिखा गया अंतिम पूर्व मान लौटाना चाहिए, न कि पढ़ने के बाद प्रोग्रामेटिक रूप से लिखा जाता है। यह एक प्रकार के गलत निर्भरता है जिसे नाम बदलकर हल किया जा सकता है। डब्लूएआर निर्भरता को विरोधी निर्भरता के रूप में भी जाना जाता है।
: किसी रजिस्टर या मेमोरी स्थान से रीड को उस स्थान पर लिखा गया अंतिम पूर्व मान लौटाना चाहिए, न कि पढ़ने के पश्चात प्रोग्रामेटिक रूप से लिखा जाता है। यह प्रकार के गलत निर्भरता है जिसे नाम परिवर्तन हल किया जा सकता है। डब्लूएआर निर्भरता को विरोधी निर्भरता के रूप में भी जाना जाता है।


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


जो कुछ भी पढ़ा और लिखा गया है उसका नाम बदला जा सकता है। जबकि सामान्य प्रयोजन और फ़्लोटिंग-पॉइंट रजिस्टरों पर सबसे अधिक चर्चा की जाती है, फ़्लैग और स्टेटस रजिस्टर या यहां तक ​​कि व्यक्तिगत स्टेटस बिट्स का भी सामान्यतः नाम बदल दिया जाता है।
जो कुछ भी पढ़ा और लिखा गया है उसका नाम परिवर्तन किया जा सकता है। जबकि सामान्य प्रयोजन और फ़्लोटिंग-पॉइंट रजिस्टरों पर सबसे अधिक चर्चा की जाती है, फ़्लैग और स्टेटस रजिस्टर या यहां तक ​​कि व्यक्तिगत स्टेटस बिट्स का भी सामान्यतः नाम परिवर्तन कर दिया जाता है।


मेमोरी स्थानों का नाम भी बदला जा सकता है, चूँकि यह सामान्यतः रजिस्टर रिनेमिंग की प्रथा की सीमा तक नहीं किया जाता है।[[ ट्रांसम्यूटेशनल क्रूसो ]] प्रोसेसर का गेटेड स्टोर बफ़र मेमोरी रजिस्टर रिनेमिंग का रूप है।
मेमोरी स्थानों का नाम भी परिवर्तन जा सकता है, चूँकि यह सामान्यतः रजिस्टर रिनेमिंग की प्रथा की सीमा तक नहीं किया जाता है।[[ ट्रांसम्यूटेशनल क्रूसो | ट्रांसम्यूटेशनल क्रूसो]] प्रोसेसर का गेटेड स्टोर बफ़र मेमोरी रजिस्टर रिनेमिंग का रूप है।


यदि प्रोग्राम तुरंत रजिस्टरों का पुन: उपयोग करने से बचते करते हैं, तो रजिस्टर रिनेमिंग की कोई आवश्यकता नहीं होती है। कुछ निर्देश समुच्चय (जैसे, [[IA-64]]) विशेष रूप से इसी कारण से बहुत बड़ी संख्या में रजिस्टर निर्दिष्ट करते हैं। चूँकि, इस दृष्टिकोण की सीमाएँ हैं:
यदि प्रोग्राम शीघ्र रजिस्टरों का पुन: उपयोग करने से बचते करते हैं, तो रजिस्टर रिनेमिंग की कोई आवश्यकता नहीं होती है। कुछ निर्देश समुच्चय (जैसे, [[IA-64]]) विशेष रूप से इसी कारण से अधिक उच्च संख्या में रजिस्टर निर्दिष्ट करते हैं। चूँकि, इस दृष्टिकोण की सीमाएँ हैं:
* कंपाइलर के लिए बड़े कोड आकार में वृद्धि के बिना रजिस्टरों का पुन: उपयोग करने से बचना बहुत जटिल है। उदाहरण के लिए, लूप में, क्रमिक पुनरावृत्तियों को अलग-अलग रजिस्टरों का उपयोग करना होगा, जिसके लिए [[ लूप का खुलना | लूप अनरोलिंग]] नामक प्रक्रिया में कोड को दोहराने की आवश्यकता होती है, या प्रत्येक पुनरावृत्ति में ऑपरेंड लक्ष्य को बदलने के लिए [[स्व-संशोधित कोड]] का उपयोग करना होता है।
* कंपाइलर के लिए उच्च कोड आकार में वृद्धि के बिना रजिस्टरों का पुन: उपयोग करने से बचना अधिक सम्मिश्र है। उदाहरण के लिए, लूप में, क्रमिक पुनरावृत्तियों को भिन्न -भिन्न  रजिस्टरों का उपयोग करना होगा, जिसके लिए [[ लूप का खुलना |लूप अनरोलिंग]] नामक प्रक्रिया में कोड को दोहराने की आवश्यकता होती है, या प्रत्येक पुनरावृत्ति में ऑपरेंड लक्ष्य के परिवर्तन के लिए [[स्व-संशोधित कोड]] का उपयोग करना होता है।
* बड़ी संख्या में रजिस्टरों को निर्देश में ऑपरेंड के रूप में रजिस्टर को निर्दिष्ट करने के लिए अधिक बिट्स की आवश्यकता होती है, जिसके परिणामस्वरूप कोड का आकार बढ़ जाता है।
* उच्च संख्या में रजिस्टरों को निर्देश में ऑपरेंड के रूप में रजिस्टर को निर्दिष्ट करने के लिए अधिक बिट्स की आवश्यकता होती है, जिसके परिणामस्वरूप कोड का आकार बढ़ जाता है।
* कई निर्देश समुच्चय ऐतिहासिक रूप से छोटी संख्या में रजिस्टर निर्दिष्ट करते हैं और बैकवर्ड संगतता बनाए रखते हुए इन्हें बदला नहीं जा सकता है।
* अनेक निर्देश समुच्चय ऐतिहासिक रूप से लघु संख्या में रजिस्टर निर्दिष्ट करते हैं और बैकवर्ड संगतता बनाए रखते हुए इन्हें परिवर्तन नहीं जा सकता है।


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


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


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


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


सभी नामकरण योजनाओं में, मशीन निर्देश स्ट्रीम में संदर्भित वास्तुशिल्प रजिस्टरों को टैग में परिवर्तित करती है।
सभी नामकरण योजनाओं में, मशीन निर्देश स्ट्रीम में संदर्भित वास्तुशिल्प रजिस्टरों को टैग में परिवर्तित करती है। जहां वास्तुशिल्प रजिस्टरों को 3 से 5 बिट्स द्वारा निर्दिष्ट किया जा सकता है, टैग सामान्यतः 6 से 8 बिट संख्या में होते हैं। रिनेमिंग फ़ाइल में प्रत्येक चक्र के रिनेमिंग प्रत्येक निर्देश के प्रत्येक इनपुट के लिए रीड पोर्ट होना चाहिए, और प्रत्येक चक्र रिनेमिंग प्रत्येक निर्देश के प्रत्येक आउटपुट के लिए राइट पोर्ट होना चाहिए। क्योंकि रजिस्टर फ़ाइल का आकार सामान्यतः पोर्ट की संख्या के वर्ग के रूप में बढ़ता है, रिनेमिंग फ़ाइल सामान्यतः भौतिक रूप से बड़ी होती है और महत्वपूर्ण विद्युत् की खपत करती है।
जहां वास्तुशिल्प रजिस्टरों को 3 से 5 बिट्स द्वारा निर्दिष्ट किया जा सकता है, टैग सामान्यतः 6 से 8 बिट संख्या में होते हैं।
नाम बदलने वाली फ़ाइल में प्रत्येक चक्र का नाम बदलने वाले प्रत्येक निर्देश के प्रत्येक इनपुट के लिए रीड पोर्ट होना चाहिए, और प्रत्येक चक्र का नाम बदलने वाले प्रत्येक निर्देश के प्रत्येक आउटपुट के लिए लेखन पोर्ट होना चाहिए।
क्योंकि रजिस्टर फ़ाइल का आकार सामान्यतः पोर्ट की संख्या के वर्ग के रूप में बढ़ता है, नाम बदलने वाली फ़ाइल सामान्यतः भौतिक रूप से बड़ी होती है और महत्वपूर्ण बिजली की खपत करती है।


टैग-अनुक्रमित रजिस्टर फ़ाइल शैली में, डेटा मानों के लिए बड़ी रजिस्टर फ़ाइल होती है, जिसमें प्रत्येक टैग के लिए रजिस्टर होता है।
टैग-अनुक्रमित रजिस्टर फ़ाइल शैली में, डेटा मानों के लिए बड़ी रजिस्टर फ़ाइल होती है, जिसमें प्रत्येक टैग के लिए रजिस्टर होता है। उदाहरण के लिए, यदि मशीन में 80 भौतिक रजिस्टर हैं, तो यह 7 बिट टैग का उपयोग करती है। इस स्थितियों में संभावित टैग मानों में से 48 अप्रयुक्त हैं।
उदाहरण के लिए, यदि मशीन में 80 भौतिक रजिस्टर हैं, तो यह 7 बिट टैग का उपयोग करेगी।
इस मामले में संभावित टैग मानों में से 48 अप्रयुक्त हैं।


इस शैली में, जब निष्पादन इकाई को निर्देश जारी किया जाता है, तो स्रोत रजिस्टरों के टैग भौतिक रजिस्टर फ़ाइल में भेजे जाते हैं, जहां उन टैगों से संबंधित मान पढ़े जाते हैं और निष्पादन इकाई को भेजे जाते हैं।
इस शैली में, जब निष्पादन इकाई को निर्देश प्रवृत्त किया जाता है, तो स्रोत रजिस्टरों के टैग भौतिक रजिस्टर फ़ाइल में भेजे जाते हैं, जहां उन टैगों से संबंधित मान पढ़े जाते हैं और निष्पादन इकाई को भेजे जाते हैं।                                                                            


आरक्षण स्टेशन शैली में, कई छोटी सहयोगी रजिस्टर फ़ाइलें होती हैं, सामान्यतः प्रत्येक निष्पादन इकाई के इनपुट पर एक।
आरक्षण स्टेशन शैली में, अनेक छोटी सहयोगी रजिस्टर फ़ाइलें होती हैं, जो सामान्यतः प्रत्येक निष्पादन इकाई के इनपुट पर होती है। किसी समस्या पंक्ति में प्रत्येक निर्देश के प्रत्येक ऑपरेंड में इन रजिस्टर फ़ाइलों में से में मान के लिए स्थान होता है।
किसी समस्या कतार में प्रत्येक निर्देश के प्रत्येक ऑपरेंड में इन रजिस्टर फ़ाइलों में से एक में मान के लिए स्थान होता है।


इस शैली में, जब किसी निष्पादन इकाई को कोई निर्देश जारी किया जाता है, तो समस्या कतार प्रविष्टि के अनुरूप रजिस्टर फ़ाइल प्रविष्टियाँ पढ़ी जाती हैं और निष्पादन इकाई को अग्रेषित की जाती हैं।
इस शैली में, जब किसी निष्पादन इकाई को कोई निर्देश प्रवृत्त किया जाता है, तो समस्या पंक्ति प्रविष्टि के अनुरूप रजिस्टर फ़ाइल प्रविष्टियाँ पढ़ी जाती हैं और निष्पादन इकाई को अग्रेषित की जाती हैं।                                                                                          


; वास्तुशिल्प रजिस्टर फ़ाइल या सेवानिवृत्ति रजिस्टर फ़ाइल (आरआरएफ)
; वास्तुशिल्प रजिस्टर फ़ाइल या सेवानिवृत्ति रजिस्टर फ़ाइल (आरआरएफ)                                                                        
: मशीन की प्रतिबद्ध रजिस्टर स्थिति। रैम को तार्किक रजिस्टर संख्या द्वारा अनुक्रमित किया गया। आम तौर पर परिणाम के रूप में लिखा जाता है, जिसे पुनः ऑर्डर बफ़र से हटा दिया जाता है या प्रतिबद्ध किया जाता है।
: मशीन की प्रतिबद्ध रजिस्टर स्थिति। रैम को तार्किक रजिस्टर संख्या द्वारा अनुक्रमित किया गया है। सामान्यतः परिणाम के रूप में लिखा जाता है, जिसे पुनः ऑर्डर बफ़र से हटा दिया जाता है या प्रतिबद्ध किया जाता है।
; भविष्य की फ़ाइल
; फ्यूचर फ़ाइल                                      
: मशीन की सबसे सट्टा रजिस्टर स्थिति। रैम को तार्किक रजिस्टर संख्या द्वारा अनुक्रमित किया गया।
: मशीन रैम की अधिक काल्पनिक रजिस्टर स्थिति को तार्किक रजिस्टर संख्या द्वारा अनुक्रमित किया जाता है।
; सक्रिय रजिस्टर फ़ाइल
; एक्टिव रजिस्टर फ़ाइल
: फ्यूचर फ़ाइल के लिए Intel P6 समूह का शब्द।
: फ्यूचर फ़ाइल के लिए इंटेल P6 समूह का शब्द।
; इतिहास बफ़र
; हिस्ट्री बफ़र
: सामान्यतः भविष्य की फ़ाइल के साथ संयोजन में उपयोग किया जाता है। इसमें रजिस्टरों के पुराने मान शामिल हैं जिन्हें अधिलेखित कर दिया गया है। यदि निर्माता अभी भी उड़ान में है तो यह इतिहास बफर संख्या द्वारा रैम अनुक्रमित हो सकता है। शाखा की गलत भविष्यवाणी के बाद इतिहास बफ़र से परिणामों का उपयोग करना चाहिए - या तो उन्हें कॉपी किया जाता है, या भविष्य की फ़ाइल लुकअप अक्षम कर दिया जाता है और इतिहास बफ़र तार्किक रजिस्टर नंबर द्वारा अनुक्रमित सामग्री-पता योग्य मेमोरी (सीएएम) होता है।
: सामान्यतः हिस्ट्री फ़ाइल के साथ संयोजन में उपयोग किया जाता है। इसमें रजिस्टरों के पुराने मान सम्मिलित हैं जिन्हें अधिलेखित कर दिया गया है। यदि निर्माता अभी भी उड़ान में है तो यह हिस्ट्री बफर संख्या द्वारा रैम अनुक्रमित हो सकता है। शाखा की असत्य भविष्यवाणी के पश्चात् हिस्ट्री बफ़र से परिणामों का उपयोग करना चाहिए - या तो उन्हें प्रतिलिपि  किया जाता है, या हिस्ट्री फ़ाइल लुकअप अक्षम कर दिया जाता है और हिस्ट्री बफ़र तार्किक रजिस्टर नंबर द्वारा अनुक्रमित कंटेंट-एड्रेसेबल मेमोरी (सीएएम) होती है।
; पुनः क्रमित बफ़र (आरओबी)
; रिओर्देर बफ़र (आरओबी)
: एक संरचना जो उड़ान में निर्देशों के लिए, प्रति-ऑपरेशन के आधार पर क्रमिक रूप से (गोलाकार) अनुक्रमित होती है। यह इतिहास बफ़र से भिन्न है क्योंकि पुनर्क्रमित बफ़र आम तौर पर भविष्य की फ़ाइल (यदि यह मौजूद है) के बाद और आर्किटेक्चरल रजिस्टर फ़ाइल से पहले आता है।
: संरचना जो उड़ान में निर्देशों के लिए, प्रति-ऑपरेशन के आधार पर क्रमिक रूप से (वृत्ताकार ) अनुक्रमित होती है। यह हिस्ट्री बफ़र से भिन्न है क्योंकि रिओर्देर बफ़र सामान्यतः हिस्ट्री फ़ाइल (यदि यह उपस्थित है) के पश्चात और आर्किटेक्चरल रजिस्टर फ़ाइल से पहले आता है।
:रेओrder बफ़र्स डेटा-रहित या डेटा-पूर्ण हो सकते हैं।
:रिओर्देर बफ़र्स डेटा-रहित या डेटा-पूर्ण हो सकते हैं।
: विलमेट के आरओबी में, आरओबी प्रविष्टियाँ भौतिक रजिस्टर फ़ाइल (पीआरएफ) में रजिस्टरों को इंगित करती हैं, और इसमें अन्य बहीखाता भी शामिल होता है।
: विलमेट के आरओबी में, आरओबी प्रविष्टियाँ हिस्ट्री रजिस्टर फ़ाइल (पीआरएफ) में रजिस्टरों को सांकेतिक करती हैं, और इसमें अन्य बहीखाता भी सम्मिलित होता है।
: यह एचएआरआरएम के साथ इलिनोइस में एंडी ग्लेव द्वारा किया गया पहला आउट ऑफ ऑर्डर डिजाइन भी था।
: यह एचएआरआरएम के साथ इलिनोइस में एंडी ग्लेव द्वारा किया गया पहला आउट ऑफ ऑर्डर डिजाइन भी था।
: पी6 का आरओबी, आरओबी प्रविष्टियों में डेटा होता है; कोई अलग पीआरएफ नहीं है.
: पी6 का आरओबी, आरओबी प्रविष्टियों में डेटा होता है; कोई भिन्न  पीआरएफ नहीं है.
: आरओबी से डेटा मान सेवानिवृत्ति के समय आरओबी से आरआरएफ में कॉपी किए जाते हैं।
: आरओबी से डेटा मान सेवानिवृत्ति के समय आरओबी से आरआरएफ में प्रतिलिपि  किए जाते हैं।
: एक छोटा विवरण: यदि आरओबी प्रविष्टियों में अस्थायी स्थानीयता है (यानी, यदि वॉन न्यूमैन अनुदेश अनुक्रम में निर्देश एक साथ बंद हो जाते हैं तो समय में एक साथ वापस लिखते हैं, तो आरओबी प्रविष्टियों पर लेखन संयोजन करना संभव हो सकता है और इसलिए कम पोर्ट होते हैं) अलग आरओबी/पीआरएफ होगा)।
: छोटा विवरण: यदि आरओबी प्रविष्टियों में अस्थायी स्थानीयता है (अर्थात, यदि वॉन न्यूमैन अनुदेश अनुक्रम में निर्देश साथ विवृत हो जाते हैं तो समय में साथ वापस लिखते हैं, तो आरओबी प्रविष्टियों पर लेखन संयोजन करना संभव हो सकता है और इसलिए कम पोर्ट होते हैं तो भिन्न  आरओबी/पीआरएफ होगा)।
: यह स्पष्ट नहीं है कि इससे कोई फर्क पड़ता है या नहीं, क्योंकि पीआरएफ को बैंक किया जाना चाहिए।
: यह स्पष्ट नहीं है कि इससे कोई फर्क पड़ता है या नहीं, क्योंकि पीआरएफ को बैंक किया जाना चाहिए।
: आरओबी में सामान्यतः सहयोगी तर्क नहीं होते हैं, और निश्चित रूप से एंडी ग्लेव द्वारा डिजाइन किए गए किसी भी आरओबी में सीएएम नहीं है।
: आरओबी में सामान्यतः सहयोगी तर्क नहीं होते हैं, और निश्चित रूप से एंडी ग्लेव द्वारा डिजाइन किए गए किसी भी आरओबी में सीएएम नहीं है।
: [[कीथ डाइफेंडॉर्फ]] ने जोर देकर कहा कि आरओबी में कई वर्षों से जटिल सहयोगी तर्क हैं।
: [[कीथ डाइफेंडॉर्फ]] ने जोर देकर कहा कि आरओबी में अनेक वर्षों से सम्मिश्र सहयोगी तर्क हैं।
: पहले आरओबी प्रस्ताव में सीएएम हो सकता है।
: पहले आरओबी प्रस्ताव में सीएएम हो सकता है।


=== टैग-अनुक्रमित रजिस्टर फ़ाइल ===
=== टैग-अनुक्रमित रजिस्टर फ़ाइल                             ===
यह नाम बदलने की शैली है जिसका उपयोग MIPS [[R10000]], अल्फा 21264 और [[AMD]] [[Athlon]] के FP अनुभाग में किया जाता है।
यह रिनेमिंग शैली है जिसका उपयोग एमआईपीएस [[R10000]], अल्फा 21264 और [[AMD|एएमडी]] [[Athlon|एथलॉन]] के एफपी अनुभाग में किया जाता है।


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


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


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


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


=== आरक्षण स्टेशन ===
=== आरक्षण स्टेशन ===
{{Main|Reservation station}}
{{Main|आरक्षण स्टेशन}}
यह AMD K7 और K8 डिज़ाइन के पूर्णांक अनुभाग में उपयोग की जाने वाली शैली है।
यह एएमडी K7 और K8 डिज़ाइन के पूर्णांक अनुभाग में उपयोग की जाने वाली शैली है।


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


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


जारी किए गए निर्देश आरक्षण स्टेशन से उनके तर्क पढ़ते हैं, बस-प्रसारित ऑपरेंड को बायपास करते हैं, और फिर निष्पादित करते हैं।
प्रवृत्त किए गए निर्देश आरक्षण स्टेशन से उनके तर्क पढ़ते हैं, निष्पक्ष-प्रसारित ऑपरेंड को उपमार्ग करते हैं, और फिर निष्पादित करते हैं। जैसा कि पहले उल्लेख किया गया है, आरक्षण स्टेशन रजिस्टर फ़ाइलें सामान्यतः छोटी होती हैं, जिनमें संभवतः आठ प्रविष्टियाँ होती हैं।
जैसा कि पहले उल्लेख किया गया है, आरक्षण स्टेशन रजिस्टर फ़ाइलें सामान्यतः छोटी होती हैं, जिनमें शायद आठ प्रविष्टियाँ होती हैं।


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


ग्रेजुएशन रीऑर्डर बफ़र से मान को आर्किटेक्चरल रजिस्टर फ़ाइल में कॉपी करता है।
ग्रेजुएशन रीऑर्डर बफ़र से मान को आर्किटेक्चरल रजिस्टर फ़ाइल में प्रतिलिपि  करता है। आर्किटेक्चरल रजिस्टर फ़ाइल का एकमात्र उपयोग अपवादों और शाखा गलत पूर्वानुमानों से बचाना है।
आर्किटेक्चरल रजिस्टर फ़ाइल का एकमात्र उपयोग अपवादों और शाखा गलत पूर्वानुमानों से उबरना है।


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


===योजनाओं के बीच तुलना ===
===योजनाओं के बीच तुलना ===
दोनों योजनाओं में, निर्देशों को समस्या कतारों में क्रम से डाला जाता है, किंतु क्रम से बाहर हटा दिया जाता है।
दोनों योजनाओं में, निर्देशों को समस्या पंक्ति ों में क्रम से डाला जाता है, किंतु क्रम से बाहर हटा दिया जाता है। यदि पंक्ति ें खाली स्लॉटों को ध्वस्त नहीं करती हैं, तो उनमें या तो अनेक अप्रयुक्त प्रविष्टियाँ होंगी, या जब अनेक निर्देश साथ जाने के लिए तैयार हों तो किसी प्रकार की परिवर्तनीय प्राथमिकता एन्कोडिंग की आवश्यकता होती है। छिद्रों को ढहाने वाली पंक्ति ों में सरल प्राथमिकता एन्कोडिंग होती है, किंतु पंक्ति के माध्यम से निर्देशों को आगे बढ़ाने के लिए सरल किंतु बड़ी परिपथरी की आवश्यकता होती है।
यदि कतारें खाली स्लॉटों को ध्वस्त नहीं करती हैं, तो उनमें या तो कई अप्रयुक्त प्रविष्टियाँ होंगी, या जब कई निर्देश एक साथ जाने के लिए तैयार हों तो किसी प्रकार की परिवर्तनीय प्राथमिकता एन्कोडिंग की आवश्यकता होगी।
छिद्रों को ढहाने वाली कतारों में सरल प्राथमिकता एन्कोडिंग होती है, किंतु कतार के माध्यम से निर्देशों को आगे बढ़ाने के लिए सरल किंतु बड़ी सर्किटरी की आवश्यकता होती है।


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


आरक्षण स्टेशनों में निर्देश जारी करने से लेकर निष्पादन तक श्रेष्ठ विलंबता होती है, क्योंकि प्रत्येक स्थानीय रजिस्टर फ़ाइल टैग-अनुक्रमित योजना की बड़ी केंद्रीय फ़ाइल से छोटी होती है।
आरक्षण स्टेशनों में निर्देश प्रवृत्त करने से लेकर निष्पादन तक श्रेष्ठ विलंबता होती है, क्योंकि प्रत्येक स्थानीय रजिस्टर फ़ाइल टैग-अनुक्रमित योजना की बड़ी केंद्रीय फ़ाइल से छोटी होती है।आरक्षण स्टेशन योजना में टैग जनरेशन और अपवाद प्रसंस्करण भी सरल है, जैसा कि नीचे चर्चा की गई है।
आरक्षण स्टेशन योजना में टैग जनरेशन और अपवाद प्रसंस्करण भी सरल है, जैसा कि नीचे चर्चा की गई है।


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


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


== इतिहास ==
== इतिहास ==
आईबीएम सिस्टम/360 मॉडल 91 प्रारंभिक मशीन थी जो निर्देशों के आउट-ऑफ़-ऑर्डर निष्पादन का समर्थन करती थी; इसमें [[टोमासुलो एल्गोरिदम]] का उपयोग किया गया, जो रजिस्टर नाम बदलने का उपयोग करता है।
आईबीएम सिस्टम/360 मॉडल 91 प्रारंभिक मशीन थी जो निर्देशों के आउट-ऑफ़-ऑर्डर निष्पादन का समर्थन करती थी; इसमें [[टोमासुलो एल्गोरिदम]] का उपयोग किया गया, जो रजिस्टर '''रिनेमिंग''' का उपयोग करता है।


[[POWER1]] पहला [[माइक्रोप्रोसेसर]] है जिसने 1990 में रजिस्टर नाम बदलने और आउट-ऑफ़-ऑर्डर निष्पादन का उपयोग किया था।
[[POWER1|पॉवर1]] पहला [[माइक्रोप्रोसेसर]] है जिसने 1990 में रजिस्टर रिनेमिंग और आउट-ऑफ़-ऑर्डर निष्पादन का उपयोग किया था।


मूल R10000 डिज़ाइन में न तो ढहने वाली समस्या कतारें थीं और न ही परिवर्तनीय प्राथमिकता एन्कोडिंग, और परिणामस्वरूप भुखमरी की समस्याओं का सामना करना पड़ा - कतार में सबसे पुराना निर्देश कभी-कभी तब तक जारी नहीं किया जाता था जब तक कि नाम बदलने वाले रजिस्टरों की कमी के कारण दोनों निर्देश डिकोड पूरी तरह से बंद नहीं हो जाते थे, और हर दूसरे निर्देश में जारी किया जा चुका।
मूल R10000 डिज़ाइन में न तो ढहने वाली समस्या पंक्ति ें थीं और न ही परिवर्तनीय प्राथमिकता एन्कोडिंग, और परिणामस्वरूप अप्राप्ति की समस्याओं का सामना करना पड़ा - पंक्ति में सबसे पुराना निर्देश कभी-कभी तब तक प्रवृत्त नहीं किया जाता था जब तक कि रिनेमिंग रजिस्टरों की कमी के कारण दोनों निर्देश डिकोड पूरी तरह से विवृत नहीं हो जाते थे, और हर दूसरे निर्देश में प्रवृत्त किया जा चुका था। R10000 और R12000 से प्रारंभ होने वाले डिज़ाइन के पश्चात के संशोधनों में इस समस्या को कम करने के लिए आंशिक रूप से परिवर्तनीय प्राथमिकता एनकोडर का उपयोग किया गया था।                         
R10000#R12000 से शुरू होने वाले डिज़ाइन के बाद के संशोधनों में इस समस्या को कम करने के लिए आंशिक रूप से परिवर्तनीय प्राथमिकता एनकोडर का उपयोग किया गया।


शुरुआती आउट-ऑफ-ऑर्डर मशीनों ने नाम बदलने और आरओबी/पीआरएफ स्टोरेज कार्यों को अलग नहीं किया।
प्रारंभिक आउट-ऑफ-ऑर्डर मशीनों ने रिनेमिंग और आरओबी/पीआरएफ स्टोरेज कार्यों को भिन्न  नहीं किया था। उस स्थितियों के लिए, कुछ प्रारंभिक, जैसे कि सोही का आरयूयू या मेटाफ्लो डीसीएएफ, संयुक्त शेड्यूलिंग, नामकरण और स्टोरेज सभी ही संरचना में होते है।
उस मामले के लिए, कुछ शुरुआती, जैसे कि सोही का आरयूयू या मेटाफ्लो डीसीएएफ, संयुक्त शेड्यूलिंग, नामकरण और स्टोरेज सभी एक ही संरचना में।


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


चूँकि, पहले की मशीनें रीनेमर में कंटेंट-एड्रेसेबल मेमोरी (CAM) का उपयोग करती थीं।
चूँकि, पहले की मशीनें रीनेमर में कंटेंट-एड्रेसेबल मेमोरी (सीएएम) का उपयोग करती थीं। उदाहरण के लिए, एचपीएसएम आरएटी, या रजिस्टर उपनाम तालिका, अनिवार्य रूप से रजिस्टर के विभिन्न संस्करणों के संयोजन में तार्किक रजिस्टर संख्या पर सीएएम का उपयोग करती है।
उदाहरण के लिए, HPSM RAT, या रजिस्टर उपनाम तालिका, अनिवार्य रूप से रजिस्टर के विभिन्न संस्करणों के संयोजन में तार्किक रजिस्टर संख्या पर CAM का उपयोग करती है।


कई मायनों में, आउट-ऑफ़-ऑर्डर माइक्रोआर्किटेक्चर की कहानी यह है कि कैसे इन सीएएम को उत्तरोत्तर समाप्त कर दिया गया है।
अनेक प्रकार से, आउट-ऑफ़-ऑर्डर माइक्रोआर्किटेक्चर की कहानी यह है कि कैसे इन सीएएम को उत्तरोत्तर समाप्त कर दिया गया है। छोटे सीएएम उपयोगी हैं; बड़े सीएएम अव्यावहारिक हैं।                                                
छोटे सीएएम उपयोगी हैं; बड़े सीएएम अव्यावहारिक हैं।{{Citation needed|date=October 2010}}


P6 (माइक्रोआर्किटेक्चर) इंटेल द्वारा आउट-ऑफ-ऑर्डर निष्पादन और रजिस्टर नाम बदलने दोनों को क्रियान्वित करने वाला पहला माइक्रोआर्किटेक्चर था।
P6 (माइक्रोआर्किटेक्चर) इंटेल द्वारा आउट-ऑफ-ऑर्डर निष्पादन और रजिस्टर रिनेमिंग दोनों को क्रियान्वित करने वाला पहला माइक्रोआर्किटेक्चर था। [[पी6 (माइक्रोआर्किटेक्चर)]] का उपयोग पेंटियम प्रो, पेंटियम II, पेंटियम III, पेंटियम एम, कोर और कोर 2 माइक्रोप्रोसेसरों में किया गया था। [[साइरिक्स 6x86]], 2 अक्टूबर 1995 को रिलीज़ हुई थी,<ref name="cyrix"/> रजिस्टर रिनेमिंग और आउट-ऑफ़-ऑर्डर निष्पादन का उपयोग करने वाला पहला x86 प्रोसेसर था। 1996 में प्रवृत्त किए गए अन्य x86 प्रोसेसर (जैसे [[NexGen|नेक्सजेन]] Nx686 और [[AMD K5|एएमडी K5]]) में आरआईएससी μ-ऑपरेशंस (मूल x86 निर्देशों के अतिरिक्त) के रजिस्टर रिनेमिंग और आउट-ऑफ-ऑर्डर निष्पादन की सुविधा भी सम्मिलित थी।<ref name="nx686"/><ref name="barr"/>                                                                                
[[पी6 (माइक्रोआर्किटेक्चर)]] का उपयोग पेंटियम प्रो, पेंटियम II, पेंटियम III, पेंटियम एम, कोर और कोर 2 माइक्रोप्रोसेसरों में किया गया था।
== संदर्भ                       ==
[[साइरिक्स 6x86]], 2 अक्टूबर 1995 को रिलीज़ हुई,<ref name="cyrix"/>रजिस्टर नाम बदलने और आउट-ऑफ़-ऑर्डर निष्पादन का उपयोग करने वाला पहला x86 प्रोसेसर था।
1996 में जारी किए गए अन्य x86 प्रोसेसर (जैसे [[NexGen]] Nx686 और [[AMD K5]]) में RISC माइक्रो-ऑपरेशन|μ-ऑपरेशंस (मूल x86 निर्देशों के अतिरिक्त) के रजिस्टर नाम बदलने और आउट-ऑफ-ऑर्डर निष्पादन की सुविधा भी शामिल थी।<ref name="nx686"/><ref name="barr"/>
== संदर्भ ==
<references>
<references>
<ref name="cyrix">{{cite web
<ref name="cyrix">{{cite web
Line 265: Line 210:
{{CPU technologies}}
{{CPU technologies}}


{{DEFAULTSORT:Register Renaming}}[[Category: कंप्यूटर आर्किटेक्चर]]
{{DEFAULTSORT:Register Renaming}}
 
 


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Register Renaming]]
[[Category:Created On 10/07/2023]]
[[Category:Collapse templates|Register Renaming]]
[[Category:Created On 10/07/2023|Register Renaming]]
[[Category:Machine Translated Page|Register Renaming]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Register Renaming]]
[[Category:Pages with script errors|Register Renaming]]
[[Category:Sidebars with styles needing conversion|Register Renaming]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Register Renaming]]
[[Category:Templates generating microformats|Register Renaming]]
[[Category:Templates that are not mobile friendly|Register Renaming]]
[[Category:Templates using TemplateData|Register Renaming]]
[[Category:Wikipedia metatemplates|Register Renaming]]
[[Category:कंप्यूटर आर्किटेक्चर|Register Renaming]]

Latest revision as of 10:19, 4 August 2023

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

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

समस्या दृष्टिकोण

रजिस्टर मशीन में, प्रोग्राम निर्देशों से बने होते हैं जो मूल्यों पर कार्य करते हैं। निर्देशों को इन मानों को दूसरे से भिन्न करने के लिए नाम दिया जाता है। विशिष्ट निर्देश कह सकता है: यदि ” और “जोड़ें” और परिणाम को डालें”। इस निर्देश में, , और स्टोरेज स्थानों के नाम हैं।

कॉम्पैक्ट इंस्ट्रक्शन एन्कोडिंग के लिए, अधिकांश प्रोसेसर इंस्ट्रक्शन समुच्चय में विशेष स्थानों का छोटा सा समुच्चय होता है जिसे विशेष नाम रजिस्टर द्वारा संदर्भित किया जा सकता है। उदाहरण के लिए, x86 इंस्ट्रक्शन समुच्चय आर्किटेक्चर में 8 पूर्णांक रजिस्टर हैं, x86-64 में 16, अनेक अल्प निर्देश समुच्चय कंप्यूटर में 32 और IA-64 में 128 हैं। छोटे प्रोसेसर में, इन स्थानों के नाम सीधे रजिस्टर फ़ाइल के तत्वों से मेल खाते हैं।

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

आउट-ऑफ-ऑर्डर सीपीयू पर चल रहे कोड के इस टुकड़े पर विचार करें:

	r1  m[1024]
	r1  r1 + 2
	m[1032]  r1
	r1  m[2048]
	r1  r1 + 4
	m[2056]  r1

अंतिम तीन पंक्तियों के निर्देश प्रथम तीन निर्देशों से स्वतंत्र हैं, किंतु प्रोसेसर r1  m[2048] को तब तक समाप्त नहीं कर सकता जब तक की पूर्ववर्ती m[1032]  r1 पूरा नही हो जाता है (ऐसा करने से अन्यथा गलत मान लिखा जाएगा)।

कुछ रजिस्टरों रिनेमिंग से यह प्रतिबंध समाप्त हो जाता है:

	r1  m[1024]
	r1  r1 + 2
	m[1032]  r1
	r2  m[2048]
	r2  r2 + 4
	m[2056]  r2

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

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

डेटा हैजर्ड

जब से अधिक निर्देश किसी विशेष स्थान को ऑपरेंड के रूप में संदर्भित करते हैं, या तो इसे पढ़कर (इनपुट के रूप में) या इसे लिखकर (आउटपुट के रूप में), उन निर्देशों को मूल प्रोग्राम ऑर्डर से भिन्न क्रम में निष्पादित करने से तीन प्रकार के डेटा हैजर्ड हो सकते हैं:

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

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

जो कुछ भी पढ़ा और लिखा गया है उसका नाम परिवर्तन किया जा सकता है। जबकि सामान्य प्रयोजन और फ़्लोटिंग-पॉइंट रजिस्टरों पर सबसे अधिक चर्चा की जाती है, फ़्लैग और स्टेटस रजिस्टर या यहां तक ​​कि व्यक्तिगत स्टेटस बिट्स का भी सामान्यतः नाम परिवर्तन कर दिया जाता है।

मेमोरी स्थानों का नाम भी परिवर्तन जा सकता है, चूँकि यह सामान्यतः रजिस्टर रिनेमिंग की प्रथा की सीमा तक नहीं किया जाता है। ट्रांसम्यूटेशनल क्रूसो प्रोसेसर का गेटेड स्टोर बफ़र मेमोरी रजिस्टर रिनेमिंग का रूप है।

यदि प्रोग्राम शीघ्र रजिस्टरों का पुन: उपयोग करने से बचते करते हैं, तो रजिस्टर रिनेमिंग की कोई आवश्यकता नहीं होती है। कुछ निर्देश समुच्चय (जैसे, IA-64) विशेष रूप से इसी कारण से अधिक उच्च संख्या में रजिस्टर निर्दिष्ट करते हैं। चूँकि, इस दृष्टिकोण की सीमाएँ हैं:

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

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

वास्तुशिल्प बनाम भौतिक रजिस्टर

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

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

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

सभी नामकरण योजनाओं में, मशीन निर्देश स्ट्रीम में संदर्भित वास्तुशिल्प रजिस्टरों को टैग में परिवर्तित करती है। जहां वास्तुशिल्प रजिस्टरों को 3 से 5 बिट्स द्वारा निर्दिष्ट किया जा सकता है, टैग सामान्यतः 6 से 8 बिट संख्या में होते हैं। रिनेमिंग फ़ाइल में प्रत्येक चक्र के रिनेमिंग प्रत्येक निर्देश के प्रत्येक इनपुट के लिए रीड पोर्ट होना चाहिए, और प्रत्येक चक्र रिनेमिंग प्रत्येक निर्देश के प्रत्येक आउटपुट के लिए राइट पोर्ट होना चाहिए। क्योंकि रजिस्टर फ़ाइल का आकार सामान्यतः पोर्ट की संख्या के वर्ग के रूप में बढ़ता है, रिनेमिंग फ़ाइल सामान्यतः भौतिक रूप से बड़ी होती है और महत्वपूर्ण विद्युत् की खपत करती है।

टैग-अनुक्रमित रजिस्टर फ़ाइल शैली में, डेटा मानों के लिए बड़ी रजिस्टर फ़ाइल होती है, जिसमें प्रत्येक टैग के लिए रजिस्टर होता है। उदाहरण के लिए, यदि मशीन में 80 भौतिक रजिस्टर हैं, तो यह 7 बिट टैग का उपयोग करती है। इस स्थितियों में संभावित टैग मानों में से 48 अप्रयुक्त हैं।

इस शैली में, जब निष्पादन इकाई को निर्देश प्रवृत्त किया जाता है, तो स्रोत रजिस्टरों के टैग भौतिक रजिस्टर फ़ाइल में भेजे जाते हैं, जहां उन टैगों से संबंधित मान पढ़े जाते हैं और निष्पादन इकाई को भेजे जाते हैं।

आरक्षण स्टेशन शैली में, अनेक छोटी सहयोगी रजिस्टर फ़ाइलें होती हैं, जो सामान्यतः प्रत्येक निष्पादन इकाई के इनपुट पर होती है। किसी समस्या पंक्ति में प्रत्येक निर्देश के प्रत्येक ऑपरेंड में इन रजिस्टर फ़ाइलों में से में मान के लिए स्थान होता है।

इस शैली में, जब किसी निष्पादन इकाई को कोई निर्देश प्रवृत्त किया जाता है, तो समस्या पंक्ति प्रविष्टि के अनुरूप रजिस्टर फ़ाइल प्रविष्टियाँ पढ़ी जाती हैं और निष्पादन इकाई को अग्रेषित की जाती हैं।

वास्तुशिल्प रजिस्टर फ़ाइल या सेवानिवृत्ति रजिस्टर फ़ाइल (आरआरएफ)
मशीन की प्रतिबद्ध रजिस्टर स्थिति। रैम को तार्किक रजिस्टर संख्या द्वारा अनुक्रमित किया गया है। सामान्यतः परिणाम के रूप में लिखा जाता है, जिसे पुनः ऑर्डर बफ़र से हटा दिया जाता है या प्रतिबद्ध किया जाता है।
फ्यूचर फ़ाइल
मशीन रैम की अधिक काल्पनिक रजिस्टर स्थिति को तार्किक रजिस्टर संख्या द्वारा अनुक्रमित किया जाता है।
एक्टिव रजिस्टर फ़ाइल
फ्यूचर फ़ाइल के लिए इंटेल P6 समूह का शब्द।
हिस्ट्री बफ़र
सामान्यतः हिस्ट्री फ़ाइल के साथ संयोजन में उपयोग किया जाता है। इसमें रजिस्टरों के पुराने मान सम्मिलित हैं जिन्हें अधिलेखित कर दिया गया है। यदि निर्माता अभी भी उड़ान में है तो यह हिस्ट्री बफर संख्या द्वारा रैम अनुक्रमित हो सकता है। शाखा की असत्य भविष्यवाणी के पश्चात् हिस्ट्री बफ़र से परिणामों का उपयोग करना चाहिए - या तो उन्हें प्रतिलिपि किया जाता है, या हिस्ट्री फ़ाइल लुकअप अक्षम कर दिया जाता है और हिस्ट्री बफ़र तार्किक रजिस्टर नंबर द्वारा अनुक्रमित कंटेंट-एड्रेसेबल मेमोरी (सीएएम) होती है।
रिओर्देर बफ़र (आरओबी)
संरचना जो उड़ान में निर्देशों के लिए, प्रति-ऑपरेशन के आधार पर क्रमिक रूप से (वृत्ताकार ) अनुक्रमित होती है। यह हिस्ट्री बफ़र से भिन्न है क्योंकि रिओर्देर बफ़र सामान्यतः हिस्ट्री फ़ाइल (यदि यह उपस्थित है) के पश्चात और आर्किटेक्चरल रजिस्टर फ़ाइल से पहले आता है।
रिओर्देर बफ़र्स डेटा-रहित या डेटा-पूर्ण हो सकते हैं।
विलमेट के आरओबी में, आरओबी प्रविष्टियाँ हिस्ट्री रजिस्टर फ़ाइल (पीआरएफ) में रजिस्टरों को सांकेतिक करती हैं, और इसमें अन्य बहीखाता भी सम्मिलित होता है।
यह एचएआरआरएम के साथ इलिनोइस में एंडी ग्लेव द्वारा किया गया पहला आउट ऑफ ऑर्डर डिजाइन भी था।
पी6 का आरओबी, आरओबी प्रविष्टियों में डेटा होता है; कोई भिन्न पीआरएफ नहीं है.
आरओबी से डेटा मान सेवानिवृत्ति के समय आरओबी से आरआरएफ में प्रतिलिपि किए जाते हैं।
छोटा विवरण: यदि आरओबी प्रविष्टियों में अस्थायी स्थानीयता है (अर्थात, यदि वॉन न्यूमैन अनुदेश अनुक्रम में निर्देश साथ विवृत हो जाते हैं तो समय में साथ वापस लिखते हैं, तो आरओबी प्रविष्टियों पर लेखन संयोजन करना संभव हो सकता है और इसलिए कम पोर्ट होते हैं तो भिन्न आरओबी/पीआरएफ होगा)।
यह स्पष्ट नहीं है कि इससे कोई फर्क पड़ता है या नहीं, क्योंकि पीआरएफ को बैंक किया जाना चाहिए।
आरओबी में सामान्यतः सहयोगी तर्क नहीं होते हैं, और निश्चित रूप से एंडी ग्लेव द्वारा डिजाइन किए गए किसी भी आरओबी में सीएएम नहीं है।
कीथ डाइफेंडॉर्फ ने जोर देकर कहा कि आरओबी में अनेक वर्षों से सम्मिश्र सहयोगी तर्क हैं।
पहले आरओबी प्रस्ताव में सीएएम हो सकता है।

टैग-अनुक्रमित रजिस्टर फ़ाइल

यह रिनेमिंग शैली है जिसका उपयोग एमआईपीएस R10000, अल्फा 21264 और एएमडी एथलॉन के एफपी अनुभाग में किया जाता है।

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

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

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

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

आरक्षण स्टेशन

यह एएमडी K7 और K8 डिज़ाइन के पूर्णांक अनुभाग में उपयोग की जाने वाली शैली है।

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

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

प्रवृत्त किए गए निर्देश आरक्षण स्टेशन से उनके तर्क पढ़ते हैं, निष्पक्ष-प्रसारित ऑपरेंड को उपमार्ग करते हैं, और फिर निष्पादित करते हैं। जैसा कि पहले उल्लेख किया गया है, आरक्षण स्टेशन रजिस्टर फ़ाइलें सामान्यतः छोटी होती हैं, जिनमें संभवतः आठ प्रविष्टियाँ होती हैं।

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

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

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

योजनाओं के बीच तुलना

दोनों योजनाओं में, निर्देशों को समस्या पंक्ति ों में क्रम से डाला जाता है, किंतु क्रम से बाहर हटा दिया जाता है। यदि पंक्ति ें खाली स्लॉटों को ध्वस्त नहीं करती हैं, तो उनमें या तो अनेक अप्रयुक्त प्रविष्टियाँ होंगी, या जब अनेक निर्देश साथ जाने के लिए तैयार हों तो किसी प्रकार की परिवर्तनीय प्राथमिकता एन्कोडिंग की आवश्यकता होती है। छिद्रों को ढहाने वाली पंक्ति ों में सरल प्राथमिकता एन्कोडिंग होती है, किंतु पंक्ति के माध्यम से निर्देशों को आगे बढ़ाने के लिए सरल किंतु बड़ी परिपथरी की आवश्यकता होती है।

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

आरक्षण स्टेशनों में निर्देश प्रवृत्त करने से लेकर निष्पादन तक श्रेष्ठ विलंबता होती है, क्योंकि प्रत्येक स्थानीय रजिस्टर फ़ाइल टैग-अनुक्रमित योजना की बड़ी केंद्रीय फ़ाइल से छोटी होती है।आरक्षण स्टेशन योजना में टैग जनरेशन और अपवाद प्रसंस्करण भी सरल है, जैसा कि नीचे चर्चा की गई है।

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

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

इतिहास

आईबीएम सिस्टम/360 मॉडल 91 प्रारंभिक मशीन थी जो निर्देशों के आउट-ऑफ़-ऑर्डर निष्पादन का समर्थन करती थी; इसमें टोमासुलो एल्गोरिदम का उपयोग किया गया, जो रजिस्टर रिनेमिंग का उपयोग करता है।

पॉवर1 पहला माइक्रोप्रोसेसर है जिसने 1990 में रजिस्टर रिनेमिंग और आउट-ऑफ़-ऑर्डर निष्पादन का उपयोग किया था।

मूल R10000 डिज़ाइन में न तो ढहने वाली समस्या पंक्ति ें थीं और न ही परिवर्तनीय प्राथमिकता एन्कोडिंग, और परिणामस्वरूप अप्राप्ति की समस्याओं का सामना करना पड़ा - पंक्ति में सबसे पुराना निर्देश कभी-कभी तब तक प्रवृत्त नहीं किया जाता था जब तक कि रिनेमिंग रजिस्टरों की कमी के कारण दोनों निर्देश डिकोड पूरी तरह से विवृत नहीं हो जाते थे, और हर दूसरे निर्देश में प्रवृत्त किया जा चुका था। R10000 और R12000 से प्रारंभ होने वाले डिज़ाइन के पश्चात के संशोधनों में इस समस्या को कम करने के लिए आंशिक रूप से परिवर्तनीय प्राथमिकता एनकोडर का उपयोग किया गया था।

प्रारंभिक आउट-ऑफ-ऑर्डर मशीनों ने रिनेमिंग और आरओबी/पीआरएफ स्टोरेज कार्यों को भिन्न नहीं किया था। उस स्थितियों के लिए, कुछ प्रारंभिक, जैसे कि सोही का आरयूयू या मेटाफ्लो डीसीएएफ, संयुक्त शेड्यूलिंग, नामकरण और स्टोरेज सभी ही संरचना में होते है।

अधिकांश आधुनिक मशीनें तार्किक रजिस्टर संख्या के साथ मानचित्र तालिका को अनुक्रमित करके रैम द्वारा नामकरण करती हैं। उदाहरण के लिए, P6 ने ऐसा किया; फ्यूचर फाइल ऐसा करती हैं, और उनमें उसी संरचना में डेटा स्टोरेज होता है।

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

अनेक प्रकार से, आउट-ऑफ़-ऑर्डर माइक्रोआर्किटेक्चर की कहानी यह है कि कैसे इन सीएएम को उत्तरोत्तर समाप्त कर दिया गया है। छोटे सीएएम उपयोगी हैं; बड़े सीएएम अव्यावहारिक हैं।

P6 (माइक्रोआर्किटेक्चर) इंटेल द्वारा आउट-ऑफ-ऑर्डर निष्पादन और रजिस्टर रिनेमिंग दोनों को क्रियान्वित करने वाला पहला माइक्रोआर्किटेक्चर था। पी6 (माइक्रोआर्किटेक्चर) का उपयोग पेंटियम प्रो, पेंटियम II, पेंटियम III, पेंटियम एम, कोर और कोर 2 माइक्रोप्रोसेसरों में किया गया था। साइरिक्स 6x86, 2 अक्टूबर 1995 को रिलीज़ हुई थी,[1] रजिस्टर रिनेमिंग और आउट-ऑफ़-ऑर्डर निष्पादन का उपयोग करने वाला पहला x86 प्रोसेसर था। 1996 में प्रवृत्त किए गए अन्य x86 प्रोसेसर (जैसे नेक्सजेन Nx686 और एएमडी K5) में आरआईएससी μ-ऑपरेशंस (मूल x86 निर्देशों के अतिरिक्त) के रजिस्टर रिनेमिंग और आउट-ऑफ-ऑर्डर निष्पादन की सुविधा भी सम्मिलित थी।[2][3]

संदर्भ

  1. "Cyrix 6x86 Processor".
  2. "NexGen Nx686".
  3. "PC Mag Dec 6, 1994". Ziff Davis. 1994-12-06.