क्लासिक आरआईएससी पाइपलाइन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Instruction pipeline}}
{{Short description|Instruction pipeline}}


कंप्यूटर हार्डवेयर के इतिहास में कुछ शुरुआती कम किए गए निर्देश सेट कंप्यूटर [[सेंट्रल प्रोसेसिंग यूनिट]] (आर आई एस सी सीपीयू) ने एक बहुत ही समान स्थापत्य समाधान का उपयोग किया, जिसे अब क्लासिक आर आई एस सी संपंक्ति कहा जाता है। वे सीपीयू एमआईपीएस स्थापत्य, [[SPARC|एसपीएआरसी]], [[Motorola 88000|मोटोरोला 88000]] थे और बाद में शिक्षा के लिए आविष्कृत सांकेतिक सीपीयू [[DLX|डीएलएक्स]]
कंप्यूटर हार्डवेयर के इतिहास में कुछ प्रारंभिक कम किए गए निर्देश सेट कंप्यूटर [[सेंट्रल प्रोसेसिंग यूनिट]] (आर आई एस सी सीपीयू) ने बहुत ही समान स्थापत्य समाधान का उपयोग किया था, जिसे अब क्लासिक आर आई एस सी संपंक्ति कहा जाता है। वे सीपीयू एमआईपीएस स्थापत्य [[SPARC|एसपीएआरसी]], [[Motorola 88000|मोटोरोला 88000]] थे और बाद में शिक्षा के लिए आविष्कृत सांकेतिक सीपीयू [[DLX|डीएलएक्स]] है।


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


== क्लासिक पांच चरण आरआईएससी संपंक्ति  ==
== क्लासिक पांच चरण आरआईएससी संपंक्ति  ==
[[Image:Fivestagespipeline.png|thumb|400px|[[ जोखिम | आरआईएससी]] यंत्र में मूल पांच-चरण संपंक्ति (आईएफ = निर्देश प्राप्त करना, आईडी = निर्देश डिकोड, ईएक्स = ऍक्ज़ीक्यूट् , एमईएम = मेमोरी एक्सेस, डब्ल्यूबी = रजिस्टर पुनः लेखन)। वर्टीकल एक्सिस क्रमिक निर्देश है; क्षैतिज एक्सिस अवधि है। तो हरे स्तंभ में सबसे पुराना निर्देश डब्लूबी चरण में है, और नवीनतम निर्देश, निर्देश प्राप्ति के स्थिति मै चल रही है।]]
[[Image:Fivestagespipeline.png|thumb|400px|[[ जोखिम |आरआईएससी]] यंत्र में मूल पांच-चरण संपंक्ति (आईएफ = इंस्ट्रक्शन फेत्च, आईडी = इंस्ट्रक्शन डिकोड, ईएक्स = कार्यान्वित , एमईएम = मेमोरी एक्सेस, डब्ल्यूबी = रजिस्टर पुनः लेखन)। वर्टीकल एक्सिस क्रमिक निर्देश है; क्षैतिज एक्सिस अवधि है। तो हरे स्तंभ में सबसे पुराना निर्देश डब्लूबी चरण में है, और नवीनतम निर्देश, निर्देश प्राप्ति के स्थिति मे चल रहा है।]]


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


[[ कार्यक्रम गणक |प्रोग्राम गणक]] या पीसी एक रजिस्टर है जो उस स्थान को रखता है एवं निर्देश मैमोरी को प्रस्तुत करता है। एक आवर्तन के प्रारंभ में निर्देश मैमोरी के स्थान को प्रस्तुत करता है। पुनः आवर्तन की अवधि मे निर्देश मैमोरी से निर्देश पढ़ा जाता है, और साथ ही आगामी पीसी को निर्धारित करने के लिए गणना की जाती है। आगामी पीसी की गणना पीसी को 4 से वृद्धि की जाती है, और यह चयन करके कि आगामी पीसी के रूप में लेना है या आगामी पीसी के रूप में उपखंड/सम्मलित गणना का परिणाम लेना है। ध्यान दें कि क्लासिक आरआईएससी में सभी निर्देशों की लंबाई समान होती है। (यह एक कारण है जो आरआईएससी को सीआईएससी से पृथक करती है)।<ref>{{cite web |first=David |last=Patterson| title=RISC I: A Reduced Instruction Set VLSI Computer |series=Isca '81|date=12 May 1981|pages=443–457|url=https://dl.acm.org/doi/10.5555/800052.801895}}</ref> मूल आरआईएससी प्रारुप में एक निर्देश का आकार 4 बाइट्स होता है, इसलिए निर्देश के स्थान में सदैव 4 योग, लेकिन किसी ब्रांच, प्रगति या अपवाद के मामले में पीसी + 4 का उपयोग न करें (नीचे विलंबित ब्रांच देखें)। (ध्यान दें कि कुछ आधुनिक यंत्र आगामी निर्देश स्थान का अनुमान लगाने के लिए अधिक जटिल एल्गोरिदम ([[शाखा भविष्यवाणी|ब्रांच पूर्वकथन]] और [[शाखा लक्ष्य भविष्यवक्ता|ब्रांच क्षेत्र]] [[शाखा भविष्यवाणी|पूर्वकथन]]) का उपयोग करती हैं।)
[[ कार्यक्रम गणक |प्रोग्राम काउंटर]] या पीसी रजिस्टर है जो उस स्थान को रखता है जो निर्देश मैमोरी को प्रस्तुत करता है। आवर्तन के प्रारंभ में ही निर्देश मैमोरी के स्थान को प्रस्तुत करता है। पुनः आवर्तन की अवधि मे निर्देश मैमोरी से निर्देश पढ़ा जाता है, और साथ ही आगामी पीसी को निर्धारित करने के लिए गणना की जाती है। आगामी पीसी की गणना मे पीसी को 4 से वृद्धि की जाती है, और यह चयन करके कि आगामी पीसी के रूप में लेना है या आगामी पीसी के रूप में उपखंड/सम्मलित गणना का परिणाम लेना है। ध्यान दें कि क्लासिक आरआईएससी में सभी निर्देशों की लंबाई समान होती है। (यह कारण है जो आरआईएससी को सीआईएससी से पृथक करती है)।<ref>{{cite web |first=David |last=Patterson| title=RISC I: A Reduced Instruction Set VLSI Computer |series=Isca '81|date=12 May 1981|pages=443–457|url=https://dl.acm.org/doi/10.5555/800052.801895}}</ref> मूल आरआईएससी प्रारुप में निर्देश का आकार 4 बाइट्स होता है, इसलिए निर्देश के स्थान में सदैव 4 योग है, किन्तु किसी उपमार्ग, प्रगति या अपवाद के स्थितियों में पीसी + 4 का उपयोग न करें (नीचे विलंबित उपमार्ग देखें)। (ध्यान दें कि कुछ आधुनिक यंत्र आगामी निर्देश स्थान का अनुमान लगाने के लिए अधिक जटिल एल्गोरिदम ( [[शाखा भविष्यवाणी|उपमार्ग पूर्वकथन]] और [[शाखा लक्ष्य भविष्यवक्ता|उपमार्ग क्षेत्र]] [[शाखा भविष्यवाणी|पूर्वकथन]]) का उपयोग करती हैं।)


=== निर्देश डिकोड ===
=== निर्देश डिकोड ===
एक और कारण जो प्रथम आर आई एस सी यंत्रो को पूर्व की सीआईएससी यंत्रो से पृथक करती है, वह यह है कि आर आई एस सी का कोई [[माइक्रोकोड]] नहीं है।<ref>{{cite web |first=David |last=Patterson| title=RISC I: A Reduced Instruction Set VLSI Computer |series=Isca '81|date=12 May 1981|pages=443–457|url=https://dl.acm.org/doi/10.5555/800052.801895}}</ref> सीआईएससी माइक्रो-कोडेड निर्देश के मामले में, एक बार निर्देश कैश से प्राप्त करने के बाद, निर्देश बिट्स को संपंक्ति के नीचे स्थानांतरित कर दिया जाता है, जहां प्रत्येक संपंक्ति चरण में सरल संयोजन तर्क निर्देश बिट्स से प्रत्यक्ष डेटापथ के लिए नियंत्रण संकेत उत्पन्न करता है। उन सीआईएससी डिजाइनोंओ में पारंपरिक रूप से डिकोड चरण कहे जाने वाले चरण में बहुत कम डिकोडिंग किया जाता है। डिकोडिंग की इस कमी का एक परिणाम यह है कि निर्देश क्या करता है यह निर्दिष्ट करने के लिए अधिक निर्देश बिट्स का उपयोग किया जाना है। रजिस्टर रजिस्टर जैसी कारणों के लिए यह कम बिट्स छोड़ता है।
एक और कारण जो प्रथम आर आई एस सी यंत्रो को पूर्व की सीआईएससी यंत्रो से पृथक करती है, वह यह है कि आर आई एस सी का कोई [[माइक्रोकोड]] नहीं है।<ref>{{cite web |first=David |last=Patterson| title=RISC I: A Reduced Instruction Set VLSI Computer |series=Isca '81|date=12 May 1981|pages=443–457|url=https://dl.acm.org/doi/10.5555/800052.801895}}</ref> सीआईएससी माइक्रो-कोडेड निर्देश के स्थितियों में, एक बार निर्देश केचे से प्राप्त करने के बाद, निर्देश बिट्स को संपंक्ति के नीचे स्थानांतरित कर दिया जाता है, जहां प्रत्येक संपंक्ति चरण में सरल संयोजन तर्क निर्देश बिट्स से प्रत्यक्ष डेटापथ के लिए नियंत्रण संकेत उत्पन्न करता है। उन सीआईएससी प्रारुपों में पारंपरिक रूप से डिकोड चरण कहे जाने वाले चरण में बहुत कम डिकोडिंग किया जाता है। डिकोडिंग की इस कमी का परिणाम यह है कि निर्देश क्या करता है यह निर्दिष्ट करने के लिए अधिक निर्देश बिट्स का उपयोग किया जाना है। रजिस्टर सूचियाँ जैसी कारणों के लिए यह कम बिट्स छोड़ता है।


सभी एमआईपीएस, एसपीएआरसी और डीएलएक्स निर्देश में अधिकतम दो रजिस्टर इनपुट होते हैं। डिकोड चरण के अवधि , इन दो रजिस्टर के सूचियाँ को निर्देश के भीतर पहचाना जाता है, और सूचियाँ को रजिस्टर मेमोरी में स्थान के रूप में प्रस्तुत किया जाता है। इस प्रकार नामित दो रजिस्टरों को [[रजिस्टर फ़ाइल]] से पढ़ा जाता है। एमआईपीएस प्रारुप में, रजिस्टर फ़ाइल में 32 प्रविष्टियाँ थीं।
सभी एमआईपीएस, एसपीएआरसी और डीएलएक्स निर्देश में अधिकतम दो रजिस्टर इनपुट होते हैं। डिकोड चरण के अवधि मे इन दो रजिस्टर के सूचियाँ को निर्देश के अंदर पहचाना जाता है, और सूचियाँ को रजिस्टर मेमोरी में स्थान के रूप में प्रस्तुत किया जाता है। इस प्रकार नामित दो रजिस्टरों को [[रजिस्टर फ़ाइल]] से पढ़ा जाता है। एमआईपीएस प्रारुप में रजिस्टर फ़ाइल में 32 प्रविष्टियाँ थीं।


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


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


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


=== ऍक्ज़ीक्यूट् ===
=== कार्यान्वित ===
ऍक्ज़ीक्यूट् चरण वह स्थान है जहां वास्तविक गणना होती है। आमतौर पर इस चरण में एक एएलयू शिफ्टर भी होता है। इसमें एक बहु आवर्तन गुणक और डिवाडर भी शामिल हो सकता है।
कार्यान्वित चरण वह स्थान है जहां वास्तविक गणना होती है। सामान्यतः इस चरण में एएलयू शिफ्टर भी होता है। इसमें बहु आवर्तन गुणक और डिवाडर भी सम्मिलित हो सकता है।


एएलयू बूलियन संचालन करने के लिए उत्तरदायी है (एवं, और, नॉट, नंद, नोर, एक्सओआर, एक्सएनओआर) और पूर्णांक जोड़ और घटाव करने के लिए भी। परिणाम के अतिरिक्त, एएलयू आमतौर पर स्थिति बिट्स प्रदान करता है जैसे परिणाम 0 था या नहीं, या यदि कोई अतिप्रवाह हुआ।
एएलयू बूलियन संचालन करने के लिए उत्तरदायी है (एवं, और, नॉट, नंद, नोर, एक्सओआर, एक्सएनओआर) और पूर्णांक जोड़ और घटाव करने के लिए भी है। परिणाम के अतिरिक्त एएलयू सामान्यतः स्थिति बिट्स प्रदान करता है जैसे परिणाम 0 था या नहीं, या यदि कोई अतिप्रवाह हुआ है।


बिट शिफ्टर शिफ्ट और रोटेशन के लिए उत्तरदायी होता है।
बिट शिफ्टर परिवर्तन और क्रमावर्तन के लिए उत्तरदायी होता है।


संचालन के प्रकार के अनुसार इन सरल आरआईएससी यंत्रो पर निर्देश को तीन विलंबता वर्गों में विभाजित किया जा सकता है:
संचालन के प्रकार के अनुसार इन सरल आरआईएससी यंत्रो पर निर्देश को तीन विलंबता वर्गों में विभाजित किया जा सकता है:


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


=== मेमोरी एक्सेस ===
=== मेमोरी एक्सेस ===
Line 41: Line 41:
यदि डेटा मेमोरी को एक्सेस करने की आवश्यकता है, तो यह निम्म चरण में किया जाता है।
यदि डेटा मेमोरी को एक्सेस करने की आवश्यकता है, तो यह निम्म चरण में किया जाता है।


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


प्रत्यक्ष प्रतिचित्र किए गए और यथार्थ चिह्नित किए गए डेटा कैशिंग के लिए [[सीपीयू कैश]] के सबसे सरल दो [[स्टेटिक रैम]] का उपयोग किया जाता है, एक स्टोरिंग डेटा और दूसरा स्टोरिंग टैग है।
प्रत्यक्ष प्रतिचित्र किए गए और यथार्थ चिह्नित किए गए डेटा केचेिंग के लिए [[सीपीयू कैश|सीपीयू केचे]] के सबसे सरल दो [[स्टेटिक रैम]] का उपयोग किया जाता है, स्टोरिंग डेटा और दूसरा स्टोरिंग टैग है।


=== राइटबैक ===
=== राइटबैक ===


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


== जोखिम ==
== परिस्थिति ==


हेनेसी और पैटरसन ने हज़ार्ड (जोखिम) शब्द को उन स्थितियों के लिए गढ़ा जहां एक संपंक्ति में निर्देश गलत उत्तर देंगे।
हेनेसी और पैटरसन ने हज़ार्ड (परिस्थिति) शब्द को उन स्थितियों के लिए गढ़ा जहां संपंक्ति में निर्देश गलत उत्तर देते है।


=== संरचनात्मक जोखिम ===
=== संरचनात्मक परिस्थिति ===


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


=== डेटा जोखिम ===
=== डेटा को खतरा ===


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


क्लासिक आरआईएससी संपंक्ति में, डेटा खतरों मे दो तरीकों से बचा जा जाता है:
क्लासिक आरआईएससी संपंक्ति में डेटा खतरों मे दो विधियों से बचा जा जाता है:


==== समाधान A. बाइपास करना ====
==== समाधान A. बाइपास करना ====


बायपासिंग को [[ ऑपरेंड अग्रेषण |ऑपरेंड फॉरवार्डिंग]] के रूप में भी जाना जाता है।
बायपासिंग को [[ ऑपरेंड अग्रेषण |ऑपरेंड अग्रेषण]] के रूप में भी जाना जाता है।


मान लीजिए कि सीपीयू निम्नलिखित कोड का ऍक्ज़ीक्यूट् कर रहा है:
मान लीजिए कि सीपीयू निम्नलिखित कोड का कार्यान्वित कर रहा है:
<syntaxhighlight lang="nasm">
<syntaxhighlight lang="nasm">
SUB r3,r4 -> r10    ; Writes r3 - r4 to r10
SUB r3,r4 -> r10    ; Writes r3 - r4 to r10
AND r10,r3 -> r11    ; Writes r10 & r3 to r11
AND r10,r3 -> r11    ; Writes r10 & r3 to r11
</syntaxhighlight>
</syntaxhighlight>
निर्देश प्राप्ति और डिकोड करने के चरण पूर्व के बाद दूसरा निर्देश आवर्तन भेजते हैं। वे इस आरेख में दिखाए अनुसार संपंक्ति में प्रवाहित होते हैं:
निर्देश प्राप्ति और डिकोड करने के चरण पूर्व के बाद दूसरा निर्देश आवर्तन भेजते हैं। वे इस आरेख में दिखाए अनुसार संपंक्ति में प्रवाहित होते हैं:


[[File:Pipeline Data Hazard.svg|center]]एक सहज संपंक्ति में जोखिम पर विचार किए बिना डेटा जोखिम निम्नानुसार बढ़ता है:
[[File:Pipeline Data Hazard.svg|center]]सहज संपंक्ति में परिस्थिति पर विचार किए बिना डेटा परिस्थिति निम्नानुसार बढ़ता है:


आवर्तन 3 में, <code>SUB</code> निर्देश <code>r10</code> के लिए नए मान की गणना करता है। इसी आवर्तन में <code>AND</code> संचालन डीकोड किया गया जाता है, और<code>r10</code> का मान रजिस्टर फ़ाइल से प्राप्त किया जाता है। हालांकि <code>SUB</code> निर्देश ने अभी तक इसका परिणाम <code>r10</code> को नहीं लिखा है। इसका राइट-बैक सामान्य रूप से आवर्तन 5 (हरा कक्ष) में होता है। इसलिए मान रजिस्टर फ़ाइल मे पढ़ा गया मान और एएलयू ( <code>AND</code> संचालन लाल कक्ष के ऍक्ज़ीक्यूट् चरण में) को दिया गया मान गलत है।
आवर्तन 3 में, <code>SUB</code> निर्देश <code>r10</code> के लिए नए मान की गणना करता है। इसी आवर्तन में <code>AND</code> संचालन डीकोड किया गया जाता है, और<code>r10</code> का मान रजिस्टर फ़ाइल से प्राप्त किया जाता है। चूंकि <code>SUB</code> निर्देश ने अभी तक इसका परिणाम <code>r10</code> को नहीं लिखा है। इसका राइट-बैक सामान्य रूप से आवर्तन 5 (हरा कक्ष) में होता है। इसलिए मान रजिस्टर फ़ाइल मे पढ़ा गया मान और एएलयू ( <code>AND</code> संचालन लाल कक्ष के कार्यान्वित चरण में) को दिया गया मान गलत है।


इसके बजाय हमें सामान्य रूप से लिखे जाने से पूर्व <code>SUB</code> से गणना किए गए डेटा को <code>AND</code> संचालन के ऍक्ज़ीक्यूट् चरण (अथार्त आरेख में लाल वृत्त में) पुनः भेजना होगा। इस समस्या का समाधान बाईपास बहुसंकेतक की एक जोड़ी है। ये बहुसंकेतक डिकोड चरण के अंत में होते हैं, और उनके फ्लॉप आउटपुट एएलयू के इनपुट होते हैं। यह प्रत्येक मल्टीप्लेक्सर के बीच चयन करता है:
इसके अतिरिक्त हमें सामान्य रूप से लिखे जाने से पूर्व <code>SUB</code> से गणना किए गए डेटा को <code>AND</code> संचालन के कार्यान्वित चरण (अथार्त आरेख में लाल वृत्त में) पुनः भेजना होगा। इस समस्या का समाधान बाईपास बहुसंकेतक की जोड़ी है। ये बहुसंकेतक डिकोड चरण के अंत में होते हैं, और उनके फ्लॉप आउटपुट एएलयू के इनपुट होते हैं। यह प्रत्येक बहुसंकेतक के बीच चयन करता है:
# एक रजिस्टर फाइल रीड पोर्ट (अथार्त डिकोड चरण का आउटपुट अनुभवहीन संपंक्ति में है): {{red|लाल}} तीर है।  
# रजिस्टर फाइल रीड पोर्ट (अथार्त डिकोड चरण का आउटपुट अनुभवहीन संपंक्ति में है): {{red|लाल}} तीर है।  
# एएलयू की वर्तमान रजिस्टर संपंक्ति (एक चरण से बाईपास करने के लिए) {{blue|नीला }} तीर है।  
# एएलयू की वर्तमान रजिस्टर संपंक्ति ( चरण से बाईपास करने के लिए) {{blue|नीला }} तीर है।  
# एक्सेस चरण की वर्तमान रजिस्टर संपंक्ति (जो या तो एक लोडेड मान है या   अग्रेषित एएलयू परिणाम है, यह दो चरणों को बाईपास करता है) {{purple|बैंगनी}} तीर है। ध्यान दें कि इसके लिए डेटा को एक आवर्तन से अवधि में पीछे की ओर भेजने की आवश्यकता होती है। यदि ऐसा होता है तो डेटा तत्पर होने तक <code>AND</code> संचालन को रोकने के लिए एक  [[बुलबुला (कंप्यूटिंग)|बबल (कंप्यूटिंग)]] डाला जाना चाहिए।
# एक्सेस चरण की वर्तमान रजिस्टर संपंक्ति (जो या तो लोडेड मान है या अग्रेषित एएलयू परिणाम है, यह दो चरणों को बाईपास करता है) {{purple|बैंगनी}} तीर है। ध्यान दें कि इसके लिए डेटा को एक आवर्तन से अवधि में पीछे की ओर भेजने की आवश्यकता होती है। यदि ऐसा होता है तो डेटा तत्पर होने तक <code>AND</code> संचालन को रोकने के लिए [[बुलबुला (कंप्यूटिंग)|बबल (कंप्यूटिंग)]] डाला जाना चाहिए।


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


ध्यान दें कि डेटा को मात्र उस अवधि मे आगे भेजा जा सकता है। डेटा को पूर्व के चरण में वापस बाईपास नहीं किया जा सकता हैयदि इसे अभी तक संसाधित नहीं किया गया है। उपरोक्त मामले में, डेटा को आगे बढ़ाया जाता है (जब तक <code>AND</code> एएलयू में रजिस्टर के लिए तत्पर होता है जब तक <code>SUB</code> पूर्व मे ही इसकी गणना कर चुका होता है)।
ध्यान दें कि डेटा को मात्र उस अवधि मे आगे भेजा जा सकता है। डेटा को पूर्व के चरण में पुनः बाईपास नहीं किया जा सकता है यदि इसे अभी तक संसाधित नहीं किया गया है। उपरोक्त स्थितियों में, डेटा को आगे बढ़ाया जाता है (जब तक <code>AND</code> एएलयू में रजिस्टर के लिए तत्पर होता है जब तक <code>SUB</code> पूर्व मे ही इसकी गणना कर चुका होता है)।


[[File:Data Forwarding (One Stage).svg|center]]
[[File:Data Forwarding (One Stage).svg|center]]


==== समाधान बी- संपंक्ति इंटरलॉक ====
==== समाधान बी- पाइपलाइन इंटरलॉक ====


हालाँकि, निम्नलिखित निर्देशों पर विचार करें:
चूंकि, निम्नलिखित निर्देशों पर विचार करें:
<syntaxhighlight lang="nasm">
<syntaxhighlight lang="nasm">
LD  adr    -> r10
LD  adr    -> r10
AND r10,r3 -> r11
AND r10,r3 -> r11
</syntaxhighlight>
</syntaxhighlight>
स्थान <code>adr</code> से पढ़ा गया डेटा <code>LD</code> निर्देश के मेमोरी एक्सेस चरण के बाद तक डेटा कैश में मौजूद नहीं है। इस अवधि तक, <code>AND</code> निर्देश पूर्व से ही एएलयू के माध्यम से है। इसे हल करने के लिए एएलयू में इनपुट के लिए मैमोरी से डेटा को अवधि पर पीछे की ओर पारित करने की आवश्यकता होगी,यह संभव नहीं है। समाधान <code>AND</code> निर्देश को एक आवर्तन से विलंबित करना है देरी करना है। डिकोड चरण में डेटा जोखिम का पता लगाया जाता है, और प्राप्ति और डिकोड करने के चरणों को रोक दिया जाता है - उन्हें अपने इनपुट को फ़्लॉप करने से रोका जाता है और इसलिए एक आवर्तन उसी स्थिति में रहते हैं। ऍक्ज़ीक्यूट् एक्सेस और राइट-बैक चरणों के डाउनस्ट्रीम में <code>LD</code> और <code>AND</code> निर्देशों के बीच एक अतिरिक्त नो-ऑपरेशन निर्देश (एनओपी) डाला गया है।   
स्थान <code>adr</code> से पढ़ा गया डेटा <code>LD</code> निर्देश के मेमोरी एक्सेस चरण के बाद तक डेटा केचे में उपस्थित नहीं है। इस अवधि तक, <code>AND</code> निर्देश पूर्व से ही एएलयू के माध्यम से है। इसे समाधान करने के लिए एएलयू में इनपुट के लिए मैमोरी से डेटा को अवधि पर पीछे की ओर पारित करने की आवश्यकता होगी,यह संभव नहीं है। समाधान <code>AND</code> निर्देश को एक आवर्तन से विलंबित करना है देरी करना है। डिकोड चरण में डेटा परिस्थिति का पता लगाया जाता है, और प्राप्ति और डिकोड करने के चरणों को रोक दिया जाता है - उन्हें अपने इनपुट को फ़्लॉप करने से रोका जाता है और इसलिए एक आवर्तन उसी स्थिति में रहते हैं। कार्यान्वित एक्सेस और राइट-बैक चरणों के अनुप्रवाह में <code>LD</code> और <code>AND</code> निर्देशों के बीच एक अतिरिक्त नो-ऑपरेशन इंस्ट्रक्शन (एनओपी) डाला गया है।   


इस एनओपी को संपंक्ति बबल (कंप्यूटिंग) कहा जाता है क्योंकि यह संपंक्ति में तैरता है़ जैसे पानी के पाइप में हवा का बुलबुला संसाधनों को घेरता है लेकिन उपयोगी परिणाम नहीं देता है। डेटा जोखिम का पता लगाने और जोखिम को दूर करने तक संपंक्ति को रोकने के लिए हार्डवेयर को ' संपंक्ति इंटरलॉक' कहा जाता है।
इस एनओपी को संपंक्ति बबल (कंप्यूटिंग) कहा जाता है क्योंकि यह संपंक्ति में तैरता है़ जैसे पानी के पाइप में हवा का बुलबुला संसाधनों को घेरता है किन्तु उपयोगी परिणाम नहीं देता है। डेटा परिस्थिति का पता लगाने और परिस्थिति को दूर करने तक संपंक्ति को रोकने के लिए हार्डवेयर को ' पाइपलाइन इंटरलॉक' कहा जाता है।


{| align=center style="text-align:center"
{| align=center style="text-align:center"
|'''Bypassing backwards in time'''
|'''समय को पीछे छोड़ते हुए'''
|'''Problem resolved using a bubble'''
|'''बबल का उपयोग करके समस्या हल की गई'''
|-
|-
|[[File:Data Forwarding (Two Stage, error).svg]]
|[[File:Data Forwarding (Two Stage, error).svg]]
|[[File:Data Forwarding (Two Stage).svg]]
|[[File:Data Forwarding (Two Stage).svg]]
|}
|}
हालाँकि किसी भी डेटा फॉरवार्डिंग के साथ एक संपंक्ति इंटरलॉक का उपयोग नहीं किया जाना चाहिए। <code>SUB</code> के पहले उदाहरण बाद <code>AND</code> और <code>LD</code> के दूसरे उदाहरण के बाद <code>AND</code> को पहले चरण को तीन चक्रों तक रोककर हल किया जा सकता है जब तक कि राइट-बैक प्राप्त नहीं हो जाता है और रजिस्टर फ़ाइल में डेटा सही रजिस्टर मान के कारण सही होता है <code>AND</code> के डिकोड चरण से प्राप्त किया जा सकता है। यह सम्पूर्ण सफल प्रदर्शन का कारण बनता है, क्योंकि प्रोसेसर कुछ भी संसाधित करने में बहुत अवधि व्यतीत करता है, लेकिन घड़ी की गति बढ़ाई जा सकती है क्योंकि प्रतीक्षा करने के लिए कम अग्रेषण तर्क है।
चूंकि किसी भी डेटा अग्रेषण के साथ एक पाइपलाइन इंटरलॉक का उपयोग नहीं किया जाना चाहिए। <code>SUB</code> के प्रथम उदाहरण बाद <code>AND</code> और <code>LD</code> के दूसरे उदाहरण के बाद <code>AND</code> को प्रथम चरण को तीन चक्रों तक रोककर समाधान किया जा सकता है जब तक कि राइट-बैक प्राप्त नहीं हो जाता है और रजिस्टर फ़ाइल में डेटा सही रजिस्टर मान के कारण सही होता है <code>AND</code> के डिकोड चरण से प्राप्त किया जा सकता है। यह सम्पूर्ण सफल प्रदर्शन का कारण बनता है, क्योंकि प्रोसेसर कुछ भी संसाधित करने में बहुत अवधि व्यतीत करता है, किन्तु घड़ी की गति बढ़ाई जा सकती है क्योंकि प्रतीक्षा करने के लिए कम अग्रेषण तर्क है।


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


=== जोखिम पर नियंत्रण  ===
=== खतरों पर नियंत्रण  ===


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


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


ब्रांच के साथ इस प्रदर्शन की समस्या को समाधान करने के लिए चार योजनाएँ हैं:
उपमार्ग के साथ इस प्रदर्शन की समस्या को समाधान करने के लिए चार योजनाएँ हैं:


* अनुमान नहीं लिया गया: निर्देश कैश से ब्रांच के बाद सदैव निर्देश प्राप्त करें, लेकिन ब्रांच न लेने पर ही इसे कार्यान्वित करें। टहनी नहीं ली तो पाइप लाइन भरी रहती है। यदि ब्रांच ली जाती है, तो निर्देश फ़्लश हो जाता है (चिन्हित किया जाता है जैसे कि यह एक NOP था), और एक आवर्तन का एक निर्देश समाप्त करने का अवसर खो जाता है।
* पूर्वानुमान नहीं लिया गया: निर्देश केचे से उपमार्ग के बाद सदैव निर्देश प्राप्त करें, किन्तु उपमार्ग न लेने पर ही इसे कार्यान्वित करें। यदि उपमार्ग नहीं ली तो संपंक्ति पूर्ण रहती है। यदि उपमार्ग ली जाती है, तो निर्देश फ़्लश हो जाता है (चिन्हित किया जाता है जैसे कि यह एक एनओपी था), और एक आवर्तन का निर्देश समाप्त करने का अवसर खो जाता है।
* ब्रांच की संभावना: निर्देश कैश से ब्रांच के बाद सदैव निर्देश प्राप्त करें, लेकिन ब्रांच लेने पर ही इसे कार्यान्वित करें। संकलक सदैव ऐसी ब्रांच पर [[शाखा विलंब स्लॉट|ब्रांच विलंब स्लॉट]] को भर सकता है, और चूंकि ब्रांचओं को अधिक बार नहीं लिया जाता है, ऐसी ब्रांचओं में पिछले प्रकार की तुलना में एक छोटा IPC जुर्माना होता है।
* संभावित उपमार्ग: निर्देश केचे से उपमार्ग के बाद सदैव निर्देश प्राप्त करें, किन्तु उपमार्ग निष्पादन ही इसे कार्यान्वित करें। संकलक सदैव ऐसी उपमार्ग पर [[शाखा विलंब स्लॉट|उपमार्ग विलंब चिह्न]] को भर सकता है, और चूंकि उपमार्गों को अधिक बार नहीं लिया जाता है, ऐसी उपमार्गों में पिछले प्रकार की तुलना में छोटा आईपीसी जुर्माना होता है।
* ब्रांच विलंब स्लॉट: निर्देश कैश से सदैव ब्रांच के बाद निर्देश प्राप्त करें, और सदैव इसे कार्यान्वित करें, भले ही ब्रांच ली गई हो। ब्रांचओं के कुछ अंश (शायद 60%) या नहीं लिए गए (शायद 40%) के लिए आईपीसी जुर्माना लेने के बजाय, ब्रांच देरी स्लॉट उन ब्रांचओं के लिए आईपीसी जुर्माना लेते हैं जिनमें संकलक ब्रांच देरी स्लॉट को शेड्यूल नहीं कर सका। एसपीएआरसी, एमआईपीएस और MC88K डिजाइनों रों ने अपने ISAs में एक ब्रांच विलंब स्लॉट तत्पर किया।
* उपमार्ग विलंब चिह्न: निर्देश केचे से सदैव उपमार्ग के बाद निर्देश प्राप्त करें, और उपमार्ग निष्पादन पर भी इसे सदैव कार्यान्वित करें। उपमार्गों के कुछ अंश (संभवतः 60%) या नहीं लिए गए (संभवतः 40%) के लिए आईपीसी जुर्माना लेने के अतिरिक्त, उपमार्ग विलंब चिह्न उन उपमार्गों जिनमें संकलक उपमार्ग विलंब चिह्न को अनुसूची नहीं कर सका के लिए आईपीसी जुर्माना लेते हैं। एसपीएआरसी, एमआईपीएस और एमसी88के प्रारुपों ने अपने आईएसएएस में उपमार्ग विलंब चिह्न तत्पर किया।
* [[शाखा भविष्यवाणी|ब्रांच पूर्वकथन]]: प्रत्येक निर्देश को प्राप्ति के समानांतर में, अनुमान लगाएं कि क्या निर्देश एक ब्रांच या प्रगति है, और यदि ऐसा है, तो लक्ष्य का अनुमान लगाएं। एक ब्रांच या प्रगति के बाद साइकिल पर, अनुमानित लक्ष्य पर निर्देश प्राप्त करें। जब अनुमान गलत हो, तो गलत तरीके से प्राप्त लक्ष्य को फ्लश करें।
* [[शाखा भविष्यवाणी|उपमार्ग पूर्वकथन]]: प्रत्येक निर्देश को लाने के साथ-साथ यह अनुमान लगाएं कि क्या निर्देश एक उपमार्ग या विषयांतर है और यदि ऐसा है तो लक्ष्य का अनुमान लगाएं। चक्र पर उपमार्ग या विषयांतर के बाद अनुमानित लक्ष्य पर निर्देश प्राप्त करें। जब अनुमान गलत हो, तो असत्य से प्राप्त लक्ष्य को फ्लश करें।


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


विलंबित ब्रांचओं की आलोचना की गई है{{By whom|date=May 2012}} ISA प्रारुप में खराब अल्पकालिक विकल्प के रूप में:
विलंबित उपमार्गों की आईएसए प्रारुप में खराब अल्पकालिक विकल्प के रूप में आलोचना की गई है:
* कंपाइलर्स को आमतौर पर ब्रांच के बाद तार्किक रूप से स्वतंत्र निर्देश खोजने में कुछ कठिनाई होती है (ब्रांच के बाद के निर्देश को विलंब स्लॉट कहा जाता है), ताकि उन्हें NOPs को विलंब स्लॉट में सम्मिलित करना पड़े।
* संकलनकर्ता को सामान्यतः उपमार्ग के बाद तार्किक रूप से स्वतंत्र निर्देश खोजने में कुछ कठिनाई होती है ( उपमार्ग के बाद के निर्देश को विलंब चिह्न कहा जाता है), जिससे उन्हें एनओपीएस को विलंब चिह्न में सम्मिलित करना पड़े।
* [[ सुपरस्कालर | सुपरस्कालर]] प्रोसेसर, जो प्रति आवर्तन अनेक निर्देश प्राप्त करते हैं और ब्रांच पूर्वकथन के कुछ रूप होने चाहिए, विलंबित ब्रांचओं से लाभ नहीं होता है। [[डीईसी अल्फा]] आईएसए ने विलंबित ब्रांचओं को छोड़ दिया, क्योंकि यह सुपरअदिष्ट प्रोसेसर के लिए अभिप्रेत था।
* [[ सुपरस्कालर | सुपरस्केलर]] प्रोसेसर जो प्रति आवर्तन अनेक निर्देश प्राप्त करते हैं और जो उपमार्ग पूर्वकथन के कुछ रूप होने चाहिए, विलंबित उपमार्गों से लाभ नहीं होता है। [[डीईसी अल्फा]] आईएसए ने विलंबित उपमार्गों को छोड़ दिया, क्योंकि यह सुपरस्केलर प्रोसेसर के लिए अभिप्रेत था।
* विलंबित ब्रांचओं की सबसे गंभीर कमी उनके से  आवश्यक अतिरिक्त नियंत्रण जटिलता है। यदि देरी स्लॉट निर्देश अपवाद लेता है, तो प्रोसेसर को उस आगामी निर्देश के बजाय ब्रांच पर पुनरारंभ करना होगा। अपवादों में अनिवार्य रूप से दो स्थान होते हैं, अपवाद स्थान और पुनरारंभ स्थान, और सभी मामलों में सही ढंग से दोनों के बीच उत्पन्न और अंतर करना बाद के डिजाइनों ों के लिए बग का स्रोत रहा है।
* विलंबित उपमार्गों की सबसे गंभीर कमी उनके आवश्यक अतिरिक्त नियंत्रण जटिलता है। यदि विलंब चिह्न निर्देश अपवाद लेता है, तो प्रोसेसर को उस आगामी निर्देश के अतिरिक्त उपमार्ग पर रीस्टार्ट् करना होगा। अपवादों में अनिवार्य रूप से दो स्थान होते हैं, अपवाद स्थान और रीस्टार्ट् स्थान, और सभी स्थितियों में सही ढंग से दोनों के बीच उत्पन्न और अंतर करना बाद के प्रारुपों के लिए बग का स्रोत रहा है।


== अपवाद ==
== अपवाद ==


मान लीजिए कि 32-बिट आरआईएससी एक एडीडी निर्देश को संसाधित करता है जो दो [[बड़ी संख्या]]एं जोड़ता है, और परिणाम 32 बिट्स में फिट नहीं होता है।
मान लीजिए कि 32-बिट आरआईएससी एडीडी निर्देश को संसाधित करता है जो दो [[बड़ी संख्या]] जोड़ता है, और परिणाम 32 बिट्स में उपयुक्त नहीं होता है।


अधिकांश स्थापत्य से प्रदान किया जाने वाला सबसे सरल समाधान रैपिंग अंकगणित है। अधिकतम संभव एन्कोडेड मान से अधिक संख्या में उनके सबसे महत्वपूर्ण बिट्स फिट होने तक काट दिए जाते हैं। सामान्य पूर्णांक संख्या प्रणाली में, 3000000000+3000000000=6000000000। अहस्ताक्षरित 32 बिट रैपिंग अंकगणित के साथ, 3000000000+3000000000=1705032704 (6000000000 मॉड 2^32)। यह बहुत उपयोगी नहीं लग सकता है। अंकगणित को लपेटने का सबसे बड़ा लाभ यह है कि प्रत्येक संक्रिया का एक सुपरिभाषित परिणाम होता है।
अधिकांश स्थापत्य से प्रदान किया जाने वाला सबसे सरल समाधान आवरण अंकगणित है। अधिकतम संभव एन्कोडेड मान से अधिक संख्या में उनके सबसे महत्वपूर्ण बिट्स उपयुक्त होने तक हटा दिए जाते हैं। सामान्य पूर्णांक संख्या सिस्टम में 3000000000+3000000000=6000000000 है। अहस्ताक्षरित 32 बिट आवरण अंकगणित के साथ,3000000000+3000000000=1705032704 (6000000000 मॉड 2^32)। यह बहुत उपयोगी नहीं हो सकता है। अंकगणित को सम्मलित का सबसे बड़ा लाभ यह है कि प्रत्येक संचालन का सुपरिभाषित परिणाम होता है।


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


क्लासिक आरआईएससी यंत्रो में से एक पर सबसे आम प्रकार का सॉफ़्टवेयर-दिखने वाला अपवाद एक ट्रांसलेशन_लुकसाइड_बफ़र#टीएलबी-मिस_हैंडलिंग है।
क्लासिक आरआईएससी यंत्रो में से एक पर सबसे प्रत्यक्ष सॉफ़्टवेयर दृश्यमान अपवाद टीएलबी मिस (ट्रांसलेशन लुकसाइड बफ़र) है।


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


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


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


== कैश मिस हैंडलिंग ==
== केचे क्षति प्रबंधन ==


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


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


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


== यह भी देखें ==
== यह भी देखें ==
Line 167: Line 167:


{{CPU technologies}}
{{CPU technologies}}
[[fa : خط لوله کلاسیک]][[Category: निर्देश प्रसंस्करण | पाइपलाइन क्लासिक आरआईएससी]] [[Category: सुपरस्केलर माइक्रोप्रोसेसर]]  
[[fa : خط لوله کلاسیک]]


 
[[Category:Collapse templates]]
 
[[Category: Machine Translated Page]]
[[Category:Created On 31/05/2023]]
[[Category:Created On 31/05/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia metatemplates]]
[[Category:निर्देश प्रसंस्करण| पाइपलाइन क्लासिक आरआईएससी]]
[[Category:सुपरस्केलर माइक्रोप्रोसेसर]]

Latest revision as of 11:54, 28 June 2023

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

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

क्लासिक पांच चरण आरआईएससी संपंक्ति

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

निर्देश प्राप्त करना

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

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

निर्देश डिकोड

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

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

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

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

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

कार्यान्वित

कार्यान्वित चरण वह स्थान है जहां वास्तविक गणना होती है। सामान्यतः इस चरण में एएलयू शिफ्टर भी होता है। इसमें बहु आवर्तन गुणक और डिवाडर भी सम्मिलित हो सकता है।

एएलयू बूलियन संचालन करने के लिए उत्तरदायी है (एवं, और, नॉट, नंद, नोर, एक्सओआर, एक्सएनओआर) और पूर्णांक जोड़ और घटाव करने के लिए भी है। परिणाम के अतिरिक्त एएलयू सामान्यतः स्थिति बिट्स प्रदान करता है जैसे परिणाम 0 था या नहीं, या यदि कोई अतिप्रवाह हुआ है।

बिट शिफ्टर परिवर्तन और क्रमावर्तन के लिए उत्तरदायी होता है।

संचालन के प्रकार के अनुसार इन सरल आरआईएससी यंत्रो पर निर्देश को तीन विलंबता वर्गों में विभाजित किया जा सकता है:

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

मेमोरी एक्सेस

यदि डेटा मेमोरी को एक्सेस करने की आवश्यकता है, तो यह निम्म चरण में किया जाता है।

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

प्रत्यक्ष प्रतिचित्र किए गए और यथार्थ चिह्नित किए गए डेटा केचेिंग के लिए सीपीयू केचे के सबसे सरल दो स्टेटिक रैम का उपयोग किया जाता है, स्टोरिंग डेटा और दूसरा स्टोरिंग टैग है।

राइटबैक

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

परिस्थिति

हेनेसी और पैटरसन ने हज़ार्ड (परिस्थिति) शब्द को उन स्थितियों के लिए गढ़ा जहां संपंक्ति में निर्देश गलत उत्तर देते है।

संरचनात्मक परिस्थिति

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

डेटा को खतरा

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

क्लासिक आरआईएससी संपंक्ति में डेटा खतरों मे दो विधियों से बचा जा जाता है:

समाधान A. बाइपास करना

बायपासिंग को ऑपरेंड अग्रेषण के रूप में भी जाना जाता है।

मान लीजिए कि सीपीयू निम्नलिखित कोड का कार्यान्वित कर रहा है:

SUB r3,r4 -> r10     ; Writes r3 - r4 to r10
AND r10,r3 -> r11    ; Writes r10 & r3 to r11

निर्देश प्राप्ति और डिकोड करने के चरण पूर्व के बाद दूसरा निर्देश आवर्तन भेजते हैं। वे इस आरेख में दिखाए अनुसार संपंक्ति में प्रवाहित होते हैं:

Pipeline Data Hazard.svg

सहज संपंक्ति में परिस्थिति पर विचार किए बिना डेटा परिस्थिति निम्नानुसार बढ़ता है:

आवर्तन 3 में, SUB निर्देश r10 के लिए नए मान की गणना करता है। इसी आवर्तन में AND संचालन डीकोड किया गया जाता है, औरr10 का मान रजिस्टर फ़ाइल से प्राप्त किया जाता है। चूंकि SUB निर्देश ने अभी तक इसका परिणाम r10 को नहीं लिखा है। इसका राइट-बैक सामान्य रूप से आवर्तन 5 (हरा कक्ष) में होता है। इसलिए मान रजिस्टर फ़ाइल मे पढ़ा गया मान और एएलयू ( AND संचालन लाल कक्ष के कार्यान्वित चरण में) को दिया गया मान गलत है।

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

  1. रजिस्टर फाइल रीड पोर्ट (अथार्त डिकोड चरण का आउटपुट अनुभवहीन संपंक्ति में है): लाल तीर है।
  2. एएलयू की वर्तमान रजिस्टर संपंक्ति ( चरण से बाईपास करने के लिए) नीला तीर है।
  3. एक्सेस चरण की वर्तमान रजिस्टर संपंक्ति (जो या तो लोडेड मान है या अग्रेषित एएलयू परिणाम है, यह दो चरणों को बाईपास करता है) बैंगनी तीर है। ध्यान दें कि इसके लिए डेटा को एक आवर्तन से अवधि में पीछे की ओर भेजने की आवश्यकता होती है। यदि ऐसा होता है तो डेटा तत्पर होने तक AND संचालन को रोकने के लिए बबल (कंप्यूटिंग) डाला जाना चाहिए।

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

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

Data Forwarding (One Stage).svg

समाधान बी- पाइपलाइन इंटरलॉक

चूंकि, निम्नलिखित निर्देशों पर विचार करें:

LD  adr    -> r10
AND r10,r3 -> r11

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

इस एनओपी को संपंक्ति बबल (कंप्यूटिंग) कहा जाता है क्योंकि यह संपंक्ति में तैरता है़ जैसे पानी के पाइप में हवा का बुलबुला संसाधनों को घेरता है किन्तु उपयोगी परिणाम नहीं देता है। डेटा परिस्थिति का पता लगाने और परिस्थिति को दूर करने तक संपंक्ति को रोकने के लिए हार्डवेयर को ' पाइपलाइन इंटरलॉक' कहा जाता है।

समय को पीछे छोड़ते हुए बबल का उपयोग करके समस्या हल की गई
Data Forwarding (Two Stage, error).svg Data Forwarding (Two Stage).svg

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

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

खतरों पर नियंत्रण

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

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

उपमार्ग के साथ इस प्रदर्शन की समस्या को समाधान करने के लिए चार योजनाएँ हैं:

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

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

विलंबित उपमार्गों की आईएसए प्रारुप में खराब अल्पकालिक विकल्प के रूप में आलोचना की गई है:

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

अपवाद

मान लीजिए कि 32-बिट आरआईएससी एडीडी निर्देश को संसाधित करता है जो दो बड़ी संख्या जोड़ता है, और परिणाम 32 बिट्स में उपयुक्त नहीं होता है।

अधिकांश स्थापत्य से प्रदान किया जाने वाला सबसे सरल समाधान आवरण अंकगणित है। अधिकतम संभव एन्कोडेड मान से अधिक संख्या में उनके सबसे महत्वपूर्ण बिट्स उपयुक्त होने तक हटा दिए जाते हैं। सामान्य पूर्णांक संख्या सिस्टम में 3000000000+3000000000=6000000000 है। अहस्ताक्षरित 32 बिट आवरण अंकगणित के साथ,3000000000+3000000000=1705032704 (6000000000 मॉड 2^32)। यह बहुत उपयोगी नहीं हो सकता है। अंकगणित को सम्मलित का सबसे बड़ा लाभ यह है कि प्रत्येक संचालन का सुपरिभाषित परिणाम होता है।

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

क्लासिक आरआईएससी यंत्रो में से एक पर सबसे प्रत्यक्ष सॉफ़्टवेयर दृश्यमान अपवाद टीएलबी मिस (ट्रांसलेशन लुकसाइड बफ़र) है।

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

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

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

केचे क्षति प्रबंधन

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

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

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

यह भी देखें

संदर्भ

  • Hennessy, John L.; Patterson, David A. (2011). Computer Architecture, A Quantitative Approach (5th ed.). Morgan Kaufmann. ISBN 978-0123838728.
  1. Patterson, David (12 May 1981). "RISC I: A Reduced Instruction Set VLSI Computer". Isca '81. pp. 443–457.
  2. Patterson, David (12 May 1981). "RISC I: A Reduced Instruction Set VLSI Computer". Isca '81. pp. 443–457.