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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

समाधान A. बाइपास करना
बायपासिंग को ऑपरेंड फॉरवार्डिंग के रूप में भी जाना जाता है।

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

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

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

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

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

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



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

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

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

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

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


 * ब्रांच रिजॉल्यूशन रिकरेंस काफी सर्किट्री से होकर गुजरता है: इंस्ट्रक्शन कैश रीड, पंजिका फाइल रीड, ब्रांच कंडीशन कंप्यूट (जिसमें एमआईपीएस 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 : خط لوله کلاسیک