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

From Vigyanwiki
Revision as of 11:23, 5 June 2023 by alpha>Neetua08

कंप्यूटर हार्डवेयर के इतिहास में कुछ शुरुआती कम किए गए निर्देश सेट कंप्यूटर सेंट्रल प्रोसेसिंग यूनिट (आर आई एस सी सीपीयू) ने एक बहुत ही समान स्थापत्य समाधान का उपयोग किया, जिसे अब क्लासिक आर आई एस सी संपंक्ति कहा जाता है। वे सीपीयू एमआईपीएस स्थापत्य, एसपीएआरसी, मोटोरोला 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 निर्देशों के बीच एक अतिरिक्त नो-ऑपरेशन निर्देश (एनओपी) डाला गया है।

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

Bypassing backwards in time Problem resolved using a bubble
Data Forwarding (Two Stage, error).svg Data Forwarding (Two Stage).svg

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

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

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

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

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

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

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

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

विलंबित ब्रांचओं की आलोचना की गई है[by whom?] ISA प्रारुप में खराब अल्पकालिक विकल्प के रूप में:

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

अपवाद

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

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

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

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

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

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

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

कैश मिस हैंडलिंग

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

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

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

यह भी देखें

संदर्भ

  • 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.