क्लासिक आरआईएससी पाइपलाइन

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

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

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

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

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

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

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

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

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

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

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

बिट शिफ्टर शिफ्ट और रोटेशन के लिए जिम्मेदार होता है।

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


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

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

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

सीधे मैप किए गए और वस्तुतः टैग किए गए डेटा कैशिंग के लिए, सीपीयू कैश के सबसे सरल, दो स्टेटिक रैम का उपयोग किया जाता है, एक स्टोरिंग डेटा और दूसरा स्टोरिंग टैग।

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

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

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

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

उत्कृष्ट आरआईएससी संपंक्ति   में, डेटा खतरों को दो तरीकों से टाला जाता है:

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

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

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

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

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

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

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



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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

 * प्रोसेसर के प्रदर्शन का लौह नियम

संदर्भ


fa : خط لوله کلاسیک