आउट-ऑफ-ऑर्डर निष्पादन

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

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

सुपरकंप्यूटर में प्रारंभिक उपयोग
सीडीसी 6600 (1964), जिसे जेम्स ई. थॉर्नटन द्वारा डिज़ाइन किया गया था, ऑर्डर-ऑफ़-ऑर्डर निष्पादन का उपयोग करने वाली पहली मशीन थी, जो संघर्षों से बचने के लिए स्कोरबोर्डिंग का उपयोग करती है। यह एक निर्देश को निष्पादित करने की अनुमति देता है यदि इसके स्रोत ऑपरेंड (रीड) पतों को किसी भी पूर्व निष्पादित निर्देश (सच्ची निर्भरता) द्वारा नहीं लिखा जाना है और गंतव्य (लिखना) पता किसी भी पूर्व निष्पादित निर्देश (झूठी निर्भरता) द्वारा उपयोग किया जाने वाला पता नहीं है ). 6600 में झूठी निर्भरताओं पर एक निष्पादन इकाई को रोकने से बचने के साधनों का अभाव है (Hazard_(कंप्यूटर_आर्किटेक्चर)#Write_after_write_(WAW) (WAW) और Hazard_(कंप्यूटर_आर्किटेक्चर)#Write_after_read_(WAR) (WAR) संघर्ष, क्रमशः पहले आदेश संघर्ष और तीसरे क्रम को कहा जाता है थॉर्नटन द्वारा संघर्ष, जिन्होंने सच्ची निर्भरता (हैज़र्ड_(कंप्यूटर_आर्किटेक्चर) #रीड_आफ्टर_राइट_(रॉ) (रॉ)) को दूसरे क्रम के संघर्ष के रूप में करार दिया, क्योंकि प्रत्येक पते में केवल एक ही स्थान होता है जो इसके द्वारा संदर्भित होता है। WAW 6600 के लिए WAR से भी बदतर है, क्योंकि जब एक निष्पादन इकाई का सामना WAR से होता है, तो अन्य निष्पादन इकाइयां अभी भी निर्देश प्राप्त करती हैं और निष्पादित करती हैं, लेकिन WAW पर निष्पादन इकाइयों को निर्देश देना बंद हो जाता है, और वे आगे कोई निर्देश प्राप्त नहीं कर सकते हैं जब तक कि WAW-कारण निर्देश के गंतव्य रजिस्टर को पहले के निर्देश द्वारा नहीं लिखा गया हो। लगभग दो साल बाद, आईबीएम सिस्टम/360 मॉडल 91 (1966) ने टोमासुलो के एल्गोरिथम के साथ नाम बदलने वाले रजिस्टर की शुरुआत की, जो झूठी निर्भरता (WAW और WAR) को भंग कर देता है, जिससे पूर्ण आउट-ऑफ-ऑर्डर निष्पादन संभव हो जाता है। एक रजिस्टर आर में लिखने के लिए एक निर्देशnरजिस्टर आर का उपयोग करके पहले के निर्देश से पहले निष्पादित किया जा सकता हैnनिष्पादित किया जाता है, वास्तव में एक वैकल्पिक (बदला हुआ) रजिस्टर alt-r में लिखकरn, जो एक सामान्य (आर्किटेक्चरल) रजिस्टर आर में बदल गया हैnकेवल तभी जब पहले के सभी निर्देश rnनिष्पादित किया गया है, लेकिन तब तक rnपहले के निर्देशों और alt-r के लिए दिया गया हैnबाद में आर को संबोधित करने वालों के लिएn. मॉडल 91 में रजिस्टर का नाम बदलने को कॉमन डेटा बस (CDB) और मेमोरी सोर्स ऑपरेंड बफ़र्स नामक एक ऑपरेंड अग्रेषण द्वारा कार्यान्वित किया जाता है, जिससे कई चक्रों के लिए अप्रयुक्त भौतिक वास्तु रजिस्टरों को छोड़ दिया जाता है, क्योंकि किसी भी अनपेक्षित निर्देश द्वारा संबोधित रजिस्टरों की सबसे पुरानी स्थिति पाई जाती है। सीडीबी। मॉडल 91 का 6600 से अधिक का एक अन्य लाभ यह है कि वह उसी निष्पादन इकाई पर ऑर्डर से बाहर के निर्देशों को निष्पादित करने की क्षमता रखता है, न कि केवल 6600 जैसी इकाइयों के बीच। यह आरक्षण स्टेशनों द्वारा पूरा किया जाता है, जहां से निर्देश निष्पादन के लिए जाते हैं। इकाई तैयार होने पर, 6600 की प्रत्येक निष्पादन इकाई की FIFO कतार के विपरीत। मॉडल 91 लोड को फिर से ऑर्डर करने और पूर्ववर्ती लोड और स्टोर से पहले निष्पादित करने के लिए स्टोर करने में भी सक्षम है, 6600 के विपरीत, जिसमें पिछले लोड को स्थानांतरित करने की सीमित क्षमता है, और पिछले स्टोर को स्टोर करता है, लेकिन पिछले स्टोर को लोड नहीं करता है और पिछले लोड को स्टोर करता है। मॉडल 91 के केवल फ़्लोटिंग-पॉइंट रजिस्टरों का नाम बदला गया है, जो निश्चित-बिंदु कोड चलाते समय सीडीसी 6600 के समान WAW और WAR सीमाओं के अधीन है। 91 और 6600 दोनों भी टोमासुलो के एल्गोरिदम # अपवादों से पीड़ित हैं, जिन्हें आउट-ऑफ-ऑर्डर निष्पादन से पहले हल करने की आवश्यकता होती है, जिसे आम तौर पर लागू किया जा सकता है और सुपर कंप्यूटर के बाहर व्यावहारिक बनाया जा सकता है।

सटीक अपवाद
सटीक अपवादों के लिए, प्रोग्राम के निष्पादन की उचित क्रम में स्थिति एक अपवाद पर उपलब्ध होनी चाहिए। 1985 तक जेम्स ई. स्मिथ (इंजीनियर) | जेम्स ई. स्मिथ और एंड्रयू आर. प्लेस्ज़कुन द्वारा वर्णित विभिन्न दृष्टिकोण विकसित किए गए थे। सीडीसी साइबर # साइबर 200 श्रृंखला एक अग्रदूत थी, क्योंकि एक वर्चुअल मेमोरी प्रोसेसर की पूरी स्थिति को बाधित करती है (आंशिक रूप से निष्पादित निर्देशों की जानकारी सहित) एक अदृश्य एक्सचेंज पैकेज में सहेजी जाती है, ताकि यह उसी स्थिति में फिर से शुरू हो सके निष्पादन का। हालाँकि, सभी अपवादों को सटीक बनाने के लिए, निर्देशों के प्रभावों को रद्द करने का एक तरीका होना चाहिए। सीडीसी साइबर 990 (1984) एक इतिहास बफ़र का उपयोग करके सटीक व्यवधानों को लागू करता है, जो रजिस्टरों के पुराने (अधिलेखित) मूल्यों को रखता है जो एक अपवाद के निर्देशों को वापस करने की आवश्यकता होने पर बहाल हो जाते हैं। स्मिथ ने अनुकरण किया कि Cray-1|Cray-1S में एक रीऑर्डर बफ़र (या इतिहास बफ़र या समतुल्य) जोड़ने से पहले 14 लिवरमोर लूप्स (अनवेक्टराइज़्ड) को निष्पादित करने का प्रदर्शन केवल 3% कम हो जाएगा। इस विषय में महत्वपूर्ण अकादमिक शोध का नेतृत्व येल पैट ने अपने एचपीएसएम सिम्युलेटर के साथ किया था। 1980 के दशक में मोटोरोला 88100 जैसे कई शुरुआती अल्प निर्देश सेट कंप्यूटर  माइक्रोप्रोसेसरों में रजिस्टरों में आउट-ऑफ-ऑर्डर राइटबैक था, जिसके परिणामस्वरूप गलत अपवाद थे। निर्देशों ने क्रम में निष्पादन शुरू किया, लेकिन कुछ (जैसे फ़्लोटिंग-पॉइंट) ने निष्पादन को पूरा करने के लिए अधिक चक्र लगाए। हालांकि सीडीसी 6600 की तुलना में सबसे बुनियादी निर्देशों के एकल-चक्र निष्पादन ने समस्या के दायरे को बहुत कम कर दिया।

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

अनुसंधान सफल होता है
POWER1 (1990) के साथ IBM आउट-ऑफ़-ऑर्डर निष्पादन पर लौट आया। यह सटीक अपवादों के साथ रजिस्टर रीनेमिंग (हालांकि फिर से केवल फ्लोटिंग-पॉइंट रजिस्टर) को संयोजित करने वाला पहला प्रोसेसर था। यह डेटाफुल रीऑर्डर बफ़र के बजाय एक भौतिक रजिस्टर फ़ाइल (अर्थात अप्रतिबंधित और प्रतिबद्ध मान दोनों के साथ एक गतिशील रूप से रीमैप की गई फ़ाइल) का उपयोग करता है, लेकिन निर्देशों को रद्द करने की क्षमता केवल शाखा इकाई में आवश्यक है, जो एक इतिहास बफर (प्रोग्राम काउंटर स्टैक नामित) को लागू करता है आईबीएम द्वारा) गिनती, लिंक और स्थिति रजिस्टरों में परिवर्तन पूर्ववत करने के लिए। यहां तक ​​कि फ़्लोटिंग-पॉइंट निर्देशों की पुनर्क्रमित करने की क्षमता अभी भी बहुत सीमित है; फ़्लोटिंग-पॉइंट अंकगणितीय निर्देशों (परिणाम इन-ऑर्डर उपलब्ध हो गए) को पुन: व्यवस्थित करने में POWER1 की अक्षमता के कारण, उनके गंतव्य रजिस्टरों का नाम नहीं बदला गया है। POWER1 में समान निष्पादन इकाई के आउट-ऑफ-ऑर्डर उपयोग के लिए आवश्यक आरक्षण स्टेशन भी नहीं हैं। अगले साल आईबीएम के आईबीएम सिस्टम/390 | ईएस/9000 मॉडल 900 में सामान्य-उद्देश्य वाले रजिस्टरों के लिए भी नाम बदलने का पंजीकरण किया गया था। इसमें दोहरे पूर्णांक इकाई के लिए छह प्रविष्टियों के साथ आरक्षण स्टेशन भी हैं (प्रत्येक चक्र, छह निर्देशों से लेकर दो तक का चयन किया जा सकता है और फिर निष्पादित किया जा सकता है) और FPU के लिए छह प्रविष्टियाँ। अन्य इकाइयों में सरल फीफो कतारें होती हैं। री-ऑर्डरिंग दूरी 32 निर्देशों तक है। 1991 में यूनिसिस के बरोज़ लार्ज सिस्टम्स | ए-सीरीज़ ऑफ़ मेनफ्रेम को भी जारी किया गया था और दावा किया गया था कि यह आउट-ऑफ-ऑर्डर निष्पादन है, और एक विश्लेषक ने A19 की तकनीक को प्रतियोगिता से तीन से पांच साल आगे बताया।

व्यापक रूप से अपनाना
पहला सुपरस्केलर प्रोसेसर माइक्रोप्रोसेसर | सिंगल-चिप प्रोसेसर (1989 में इंटेल i960CA) ने सीडीसी 6600 की तरह एक साधारण स्कोरबोर्डिंग शेड्यूलिंग का इस्तेमाल किया था, जो एक सदी पहले था, लेकिन 1992-1996 में मूर के कानून द्वारा सक्षम तकनीकों की तेजी से उन्नति ने प्रसार देखा व्यक्तिगत कंप्यूटरों के लिए नीचे। Motorola 88110 (1992) ने निर्देशों को वापस करने के लिए इतिहास बफ़र का उपयोग किया। भार पूर्ववर्ती दुकानों के आगे निष्पादित किया जा सकता है। जबकि स्टोर और शाखाएं निष्पादन शुरू करने की प्रतीक्षा कर रही थीं, अन्य प्रकार के बाद के निर्देश राइटबैक सहित सभी पाइपलाइन चरणों के माध्यम से प्रवाहित हो सकते हैं। इतिहास बफ़र की 12-प्रवेश क्षमता ने पुनःक्रमित दूरी पर एक सीमा लगा दी।  PowerPC_600#PowerPC_601 (1993) RISC सिंगल चिप का विकास था, जो स्वयं POWER1 का सरलीकरण था। 601 अनुमत शाखा और फ़्लोटिंग-पॉइंट निर्देश पहले से ही प्राप्त-निर्देश-कतार में पूर्णांक निर्देशों से आगे निकलने के लिए, जिनमें से सबसे कम चार प्रविष्टियाँ प्रेषण के लिए स्कैन की गई थीं। कैश मिस होने की स्थिति में, लोड और स्टोर को फिर से व्यवस्थित किया जा सकता है। केवल लिंक और काउंट रजिस्टर का नाम बदला जा सकता है। 1994 के पतन में NexGen और AIM गठजोड़ ने सामान्य-उद्देश्य वाले रजिस्टरों का नाम बदलकर सिंगल-चिप CPU कर दिया। NexGen का Nx586 पहला x86 प्रोसेसर था जो आउट-ऑफ़-ऑर्डर निष्पादन में सक्षम था, जिसे  माइक्रो आपरेशन  | माइक्रो-ऑप्स के साथ पूरा किया गया था। री-ऑर्डरिंग दूरी 14 माइक्रो-ओपी तक है। PowerPC_600#PowerPC_603 ने सामान्य-उद्देश्य और FP दोनों रजिस्टरों का नाम बदला। चार गैर-शाखा निष्पादन इकाइयों में से प्रत्येक के पास अन्य इकाइयों के निर्देश प्रवाह को अवरुद्ध किए बिना इसके सामने एक निर्देश प्रतीक्षा हो सकती है। पांच-एंट्री पुन: आदेश बफर एक अनपेक्षित निर्देश को ओवरटेक करने के लिए चार से अधिक निर्देशों की अनुमति नहीं देता है। स्टोर बफ़र के कारण, लोड पिछले स्टोर के आगे कैश तक पहुँच सकता है। PowerPC_600#PowerPC_604 (1995) यूनिट-लेवल री-ऑर्डरिंग के साथ पहला सिंगल-चिप प्रोसेसर था, क्योंकि इसकी छह इकाइयों में से तीन में दो-एंट्री रिजर्वेशन स्टेशन था, जो नई एंट्री को पुराने से पहले निष्पादित करने की अनुमति देता था। री-ऑर्डर बफर क्षमता 16 निर्देश है। एक चार-प्रविष्टि लोड कतार और एक छह-प्रविष्टि स्टोर कतार कैश मिस होने पर लोड और स्टोर के पुन: क्रम को ट्रैक करती है। HAL SPARC64 (1995) ने IBM System/390|ES/9000 मॉडल 900 की री-ऑर्डरिंग क्षमता को पार कर लिया है, जिसमें पूर्णांक, फ्लोटिंग-पॉइंट और एड्रेस जनरेशन यूनिट के लिए तीन 8-एंट्री रिजर्वेशन स्टेशन और 12-एंट्री रिजर्वेशन स्टेशन है। लोड/स्टोर के लिए, जो पिछले प्रोसेसर की तुलना में कैश/मेमोरी एक्सेस की अधिक पुनर्व्यवस्था की अनुमति देता है। एक समय में अधिकतम 64 निर्देश पुनः क्रमित अवस्था में हो सकते हैं पेंटियम प्रो (1995) ने एक आरक्षण स्टेशन की शुरुआत की, जो 20 माइक्रो-ओपी क्षमता पर बहुत ही लचीले री-ऑर्डरिंग की अनुमति देता है, जो 40-एंट्री री-ऑर्डर बफर द्वारा समर्थित है। लोड और स्टोर दोनों के आगे लोड को फिर से ऑर्डर किया जा सकता है। प्रति चक्र व्यावहारिक रूप से प्राप्य निर्देश | निष्पादन की प्रति-चक्र दर और अधिक बढ़ गई क्योंकि 1996 में सिलिकॉन ग्राफिक्स/एमआईपीएस टेक्नोलॉजीज (आर10000) और हेवलेट पैकर्ड  पीए-जोखिम (पीए-8000) द्वारा पूर्ण आउट-ऑफ-ऑर्डर निष्पादन को अपनाया गया था। उसी वर्ष साइरिक्स 6x86 और एएमडी K5 ने मुख्यधारा के व्यक्तिगत कंप्यूटरों में उन्नत री-ऑर्डरिंग तकनीकें लाईं। चूंकि डीईसी अल्फा ने 1998 (अल्फा 21264) में आउट-ऑफ-ऑर्डर निष्पादन प्राप्त किया था, शीर्ष-प्रदर्शन वाले आउट-ऑफ-ऑर्डर प्रोसेसर कोर हेवलेट-पैकार्ड/इंटेल इटेनियम 2 और आईबीएम शक्ति6 6 के अलावा इन-ऑर्डर कोर द्वारा बेजोड़ हैं, हालांकि उत्तरार्द्ध में एक आउट-ऑफ-ऑर्डर फ्लोटिंग-पॉइंट यूनिट थी। अन्य हाई-एंड इन-ऑर्डर प्रोसेसर बहुत पीछे रह गए, अर्थात् सन माइक्रोसिस्टम्स का UltraSPARC III/UltraSPARC IV, और IBM का  मेनफ़्रेम कंप्यूटर, जो दूसरी बार आउट-ऑफ-ऑर्डर निष्पादन क्षमता खो चुके थे, IBM z10 में क्रम में शेष थे। पीढ़ी। बाद में बड़े इन-ऑर्डर प्रोसेसर मल्टीथ्रेडेड प्रदर्शन पर केंद्रित थे, लेकिन अंततः SPARC T सीरीज़ और Xeon Phi क्रमशः 2011 और 2016 में आउट-ऑफ-ऑर्डर निष्पादन में बदल गए।

फोन और अन्य निम्न-अंत अनुप्रयोगों के लिए लगभग सभी प्रोसेसर सी तक क्रम में बने रहे। 2010. सबसे पहले, क्वालकॉम का बिच्छू (प्रोसेसर)  (32 की री-ऑर्डरिंग दूरी)  कुयल्कोम्म अजगर का चित्र  में भेज दिया गया, और थोड़ी देर बाद Arm (कंपनी) का ARM Cortex-A9, ARM Cortex-A8 के बाद आया। लो-एंड x86 पर्सनल कंप्यूटरों के लिए बोननेल (माइक्रोआर्किटेक्चर) | इन-ऑर्डर अर्ली इंटेल एटम्स को सबसे पहले  उन्नत लघु उपकरण ेस के बॉबकैट (माइक्रोआर्किटेक्चर) द्वारा चुनौती दी गई थी, और 2013 में एक आउट-ऑफ-ऑर्डर सिल्वरमोंट द्वारा सफल किया गया था। क्योंकि आउट-ऑफ-ऑर्डर निष्पादन की जटिलता सबसे कम न्यूनतम बिजली की खपत, लागत और आकार को प्राप्त करने से रोकती है, इन-ऑर्डर निष्पादन अभी भी  microcontroller  और  अंतः स्थापित प्रणाली  में प्रचलित है, साथ ही फोन-क्लास कोर जैसे आर्म के एआरएम कॉर्टेक्स-ए 55 में भी प्रचलित है। और ARM में ARM Cortex-A510 big.LITTLE|big.LITTLE कॉन्फ़िगरेशन।

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

इन-ऑर्डर प्रोसेसर
पहले के प्रोसेसर में, निर्देशों का प्रसंस्करण एक निर्देश चक्र में किया जाता है जिसमें सामान्य रूप से निम्नलिखित चरण होते हैं:
 * 1) निर्देश (कंप्यूटर विज्ञान) लाने-निष्पादित चक्र।
 * 2) यदि इनपुट  ओपेरंड  उपलब्ध हैं (उदाहरण के लिए प्रोसेसर रजिस्टरों में), निर्देश उचित कार्यात्मक इकाई को भेजा जाता है। यदि वर्तमान घड़ी चक्र के दौरान एक या अधिक ऑपरेंड अनुपलब्ध हैं (आमतौर पर क्योंकि वे  स्मृति  से लाए जा रहे हैं), प्रोसेसर उपलब्ध होने तक स्टाल करता है।
 * 3) निर्देश उपयुक्त कार्यात्मक इकाई द्वारा निष्पादित किया जाता है।
 * 4) कार्यात्मक इकाई परिणाम को वापस रजिस्टर फ़ाइल में लिखती है।

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

आउट-ऑफ-ऑर्डर प्रोसेसर
यह नया प्रतिमान इन चरणों में निर्देशों के प्रसंस्करण को तोड़ता है:
 * 1) निर्देश प्राप्त करें।
 * 2) निर्देश कतार को निर्देश प्रेषण (जिसे निर्देश बफर या आरक्षण स्टेशन भी कहा जाता है)।
 * 3) निर्देश कतार में तब तक प्रतीक्षा करता है जब तक उसका इनपुट ऑपरेंड उपलब्ध नहीं हो जाता। निर्देश पुराने निर्देशों से पहले कतार छोड़ सकता है।
 * 4) निर्देश उपयुक्त कार्यात्मक इकाई को जारी किया जाता है और उस इकाई द्वारा निष्पादित किया जाता है।
 * 5) परिणाम कतारबद्ध हैं।
 * 6) सभी पुराने निर्देशों के बाद ही उनके परिणाम वापस रजिस्टर फ़ाइल में लिखे जाते हैं, तब यह परिणाम वापस रजिस्टर फ़ाइल में लिखा जाता है। इसे ग्रेजुएशन या रिटायर स्टेज कहा जाता है।

ओओओई प्रसंस्करण की मुख्य अवधारणा प्रोसेसर को स्टालों की एक श्रेणी से बचने की अनुमति देना है जो तब होती है जब ऑपरेशन करने के लिए आवश्यक डेटा अनुपलब्ध होता है। ऊपर की रूपरेखा में, OoOE प्रोसेसर इन-ऑर्डर प्रोसेसर के चरण (2) में होने वाले स्टॉल से बचता है जब लापता डेटा के कारण निर्देश पूरी तरह से संसाधित होने के लिए तैयार नहीं होता है।

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

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

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

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

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

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

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

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

पिछली शाखाओं को निर्देश जारी करने की क्षमता जो अभी तक हल नहीं हुई है, सट्टा निष्पादन के रूप में जानी जाती है।

माइक्रो-आर्किटेक्चरल विकल्प

 * क्या निर्देश एक केंद्रीकृत कतार या कई वितरित कतारों को भेजे गए हैं?


 * IBM PowerPC प्रोसेसर कतारों का उपयोग करते हैं जो विभिन्न कार्यात्मक इकाइयों के बीच वितरित की जाती हैं जबकि अन्य आउट-ऑफ-ऑर्डर प्रोसेसर एक केंद्रीकृत कतार का उपयोग करते हैं। आईबीएम अपनी वितरित कतारों के लिए आरक्षण स्टेशन शब्द का उपयोग करता है।


 * क्या कोई वास्तविक परिणाम कतार है या क्या परिणाम सीधे रजिस्टर फ़ाइल में लिखे गए हैं? उत्तरार्द्ध के लिए, कतारबद्ध कार्य को रजिस्टर मानचित्रों द्वारा नियंत्रित किया जाता है जो उड़ान में प्रत्येक निर्देश के लिए रजिस्टर का नाम बदलने की जानकारी रखते हैं।


 * प्रारंभिक इंटेल आउट-ऑफ-ऑर्डर प्रोसेसर एक परिणाम कतार का उपयोग करते हैं जिसे री-ऑर्डर बफर कहा जाता है, जबकि अधिकांश बाद के आउट-ऑफ-ऑर्डर प्रोसेसर रजिस्टर मैप्स का उपयोग करते हैं।


 * अधिक सटीक रूप से: Intel P6 (माइक्रोआर्किटेक्चर) परिवार के माइक्रोप्रोसेसरों में एक री-ऑर्डर बफर (ROB) और एक रजिस्टर रीनेमिंग (RAT) दोनों होते हैं। आरओबी मुख्य रूप से ब्रांच मिसप्रीडिक्शन रिकवरी से प्रेरित था।


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

यह भी देखें

 * निर्देश समयबद्धन
 * मेमोरी बाड़
 * रीप्ले सिस्टम
 * ठंडे बस्ते में डालने वाला बफर