क्लासिक आरआईएससी पाइपलाइन: Difference between revisions
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|डीएलएक्स]] है। | ||
इनमें से प्रत्येक क्लासिक अदिष्ट आरआईएससी | इनमें से प्रत्येक क्लासिक अदिष्ट आरआईएससी प्रारुपों को प्राप्त करता है और प्रति आवर्तन निर्देश कार्यान्वित करने का प्रयास करता है। प्रत्येक प्रारुपों की मुख्य सामान्य अवधारणा पांच-चरण कार्यान्वित [[निर्देश पाइपलाइन|निर्देश संपंक्ति]] है। संचालन की अवधि प्रत्येक संपंक्ति चरण एक अवधि में एक निर्देश पर काम करता है। इन चरणों में से प्रत्येक में क्षेत्र धारण करने के लिए [[फ्लिप-फ्लॉप (इलेक्ट्रॉनिक्स)]] का सेट होता है, और [[संयोजन तर्क]] जो उन फ्लिप-फ्लॉप के आउटपुट पर संचालित होता है। | ||
== क्लासिक पांच चरण आरआईएससी संपंक्ति == | == क्लासिक पांच चरण आरआईएससी संपंक्ति == | ||
[[Image:Fivestagespipeline.png|thumb|400px|[[ जोखिम | आरआईएससी]] यंत्र में मूल पांच-चरण संपंक्ति (आईएफ = | [[Image:Fivestagespipeline.png|thumb|400px|[[ जोखिम |आरआईएससी]] यंत्र में मूल पांच-चरण संपंक्ति (आईएफ = इंस्ट्रक्शन फेत्च, आईडी = इंस्ट्रक्शन डिकोड, ईएक्स = कार्यान्वित , एमईएम = मेमोरी एक्सेस, डब्ल्यूबी = रजिस्टर पुनः लेखन)। वर्टीकल एक्सिस क्रमिक निर्देश है; क्षैतिज एक्सिस अवधि है। तो हरे स्तंभ में सबसे पुराना निर्देश डब्लूबी चरण में है, और नवीनतम निर्देश, निर्देश प्राप्ति के स्थिति मे चल रहा है।]] | ||
=== निर्देश प्राप्त करना === | === निर्देश प्राप्त करना === | ||
निर्देश मेमोरी में रहते हैं जिसे पढ़ने में एक | निर्देश मेमोरी में रहते हैं जिसे पढ़ने में एक चक्र लगता है। यह मैमोरी एसआरएएम या निर्देश [[कैश (कंप्यूटिंग)|कैचे (कंप्यूटिंग)]] को समर्पित हो सकती है। विलंबता शब्द का प्रयोग कंप्यूटर विज्ञान में प्रायः किया जाता है और इसका अर्थ उस अवधि से है। जब कोई संचालन प्रारंभ होता है, एवं जब तक कि वह पूरा नहीं हो जाता है। इस प्रकार निर्देश प्राप्ति में [[घड़ी चक्र|घड़ी आवर्तन]] की विलंबता होती है (यदि एकल-आवर्तन एसआरएएम का उपयोग किया जाता है या यदि निर्देश कैचे में था)। इस प्रकार निर्देश प्राप्ति के चरण के अवधि मे निर्देश मैमोरी से 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 का उपयोग न करें (नीचे विलंबित उपमार्ग देखें)। (ध्यान दें कि कुछ आधुनिक यंत्र आगामी निर्देश स्थान का अनुमान लगाने के लिए अधिक जटिल एल्गोरिदम ( [[शाखा भविष्यवाणी|उपमार्ग पूर्वकथन]] और [[शाखा लक्ष्य भविष्यवक्ता|उपमार्ग क्षेत्र]] [[शाखा भविष्यवाणी|पूर्वकथन]]) का उपयोग करती हैं।) | ||
=== निर्देश डिकोड === | === निर्देश डिकोड === | ||
एक और कारण जो प्रथम आर आई एस सी यंत्रो को पूर्व की सीआईएससी यंत्रो से पृथक करती है, वह यह है कि आर आई एस सी का कोई [[माइक्रोकोड]] नहीं है।<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-बिट-चौड़ा ट्री श्रृंखला में चलता है। इसके माध्यम से चरण बहुत लंबा महत्वपूर्ण पथ बनाता है (जिसका अर्थ है प्रति सेकंड से कम आवर्तन)। इसके अतिरिक्त उपमार्ग लक्ष्य गणना के लिए सामान्यतः 16 बिट जोड़ और 14 बिट वर्धित्र की आवश्यकता होती है। डिकोड चरण में उपमार्ग को समाधान करने से यह संभव हो गया है कि मात्र -आवर्तन उपमार्ग गलत अनुमान लगा सकती है। चूँकि उपमार्ग बहुत बार ली जाती थीं (और इस प्रकार गलत पूर्वकथन की जाती थी) और इस जुर्माने को कम रखना बहुत महत्वपूर्ण था। | ||
=== | === कार्यान्वित === | ||
कार्यान्वित चरण वह स्थान है जहां वास्तविक गणना होती है। सामान्यतः इस चरण में एएलयू शिफ्टर भी होता है। इसमें बहु आवर्तन गुणक और डिवाडर भी सम्मिलित हो सकता है। | |||
एएलयू बूलियन संचालन करने के लिए उत्तरदायी है (एवं, और, नॉट, नंद, नोर, एक्सओआर, एक्सएनओआर) और पूर्णांक जोड़ और घटाव करने के लिए | एएलयू बूलियन संचालन करने के लिए उत्तरदायी है (एवं, और, नॉट, नंद, नोर, एक्सओआर, एक्सएनओआर) और पूर्णांक जोड़ और घटाव करने के लिए भी है। परिणाम के अतिरिक्त एएलयू सामान्यतः स्थिति बिट्स प्रदान करता है जैसे परिणाम 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> का मान रजिस्टर फ़ाइल से प्राप्त किया जाता है। | आवर्तन 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> संचालन के कार्यान्वित चरण (अथार्त आरेख में लाल वृत्त में) पुनः भेजना होगा। इस समस्या का समाधान बाईपास बहुसंकेतक की जोड़ी है। ये बहुसंकेतक डिकोड चरण के अंत में होते हैं, और उनके फ्लॉप आउटपुट एएलयू के इनपुट होते हैं। यह प्रत्येक बहुसंकेतक के बीच चयन करता है: | ||
# | # रजिस्टर फाइल रीड पोर्ट (अथार्त डिकोड चरण का आउटपुट अनुभवहीन संपंक्ति में है): {{red|लाल}} तीर है। | ||
# एएलयू की वर्तमान रजिस्टर संपंक्ति ( | # एएलयू की वर्तमान रजिस्टर संपंक्ति ( चरण से बाईपास करने के लिए) {{blue|नीला }} तीर है। | ||
# एक्सेस चरण की वर्तमान रजिस्टर संपंक्ति (जो या तो | # एक्सेस चरण की वर्तमान रजिस्टर संपंक्ति (जो या तो लोडेड मान है या अग्रेषित एएलयू परिणाम है, यह दो चरणों को बाईपास करता है) {{purple|बैंगनी}} तीर है। ध्यान दें कि इसके लिए डेटा को एक आवर्तन से अवधि में पीछे की ओर भेजने की आवश्यकता होती है। यदि ऐसा होता है तो डेटा तत्पर होने तक <code>AND</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> निर्देशों के बीच एक अतिरिक्त नो-ऑपरेशन इंस्ट्रक्शन (एनओपी) डाला गया है। | ||
इस एनओपी को संपंक्ति बबल (कंप्यूटिंग) कहा जाता है क्योंकि यह संपंक्ति में तैरता है़ जैसे पानी के पाइप में हवा का बुलबुला संसाधनों को घेरता है | इस एनओपी को संपंक्ति बबल (कंप्यूटिंग) कहा जाता है क्योंकि यह संपंक्ति में तैरता है़ जैसे पानी के पाइप में हवा का बुलबुला संसाधनों को घेरता है किन्तु उपयोगी परिणाम नहीं देता है। डेटा परिस्थिति का पता लगाने और परिस्थिति को दूर करने तक संपंक्ति को रोकने के लिए हार्डवेयर को ' पाइपलाइन इंटरलॉक' कहा जाता है। | ||
{| align=center style="text-align:center" | {| align=center style="text-align:center" | ||
|''' | |'''समय को पीछे छोड़ते हुए''' | ||
|''' | |'''बबल का उपयोग करके समस्या हल की गई''' | ||
|- | |- | ||
|[[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> के डिकोड चरण से प्राप्त किया जा सकता है। यह सम्पूर्ण सफल प्रदर्शन का कारण बनता है, क्योंकि प्रोसेसर कुछ भी संसाधित करने में बहुत अवधि व्यतीत करता है, किन्तु घड़ी की गति बढ़ाई जा सकती है क्योंकि प्रतीक्षा करने के लिए कम अग्रेषण तर्क है। | |||
जब प्रोग्राम का यंत्र कोड कंपाइलर से | जब प्रोग्राम का यंत्र कोड कंपाइलर से लिखा जाता है तो इस डेटा परिस्थिति का आसानी से पता लगाया जा सकता है। [[स्टैनफोर्ड एमआईपीएस]] यंत्र इस स्थितियों में एनओपी निर्देशों को जोड़ने के लिए संकलक पर निर्भर थी, इसके कि प्रथम दो संपंक्ति चरणों का पता लगाने के लिए सर्किट्री का पता लगाया जाए और (अधिक करबद्ध रूप से) स्टाल किया जाए। इसलिए नाम एमआईपीएस: माइक्रोप्रोसेसर इंटरलॉक्ड पाइपलाइन स्टेज है। यह पता चला कि संकलक से जोड़े गए अतिरिक्त एनओपी निर्देशों ने प्रोग्राम बायनेरिज़ को पर्याप्त रूप से विस्तारित किया कि निर्देश केचे सफल दर कम हो गई। स्टॉल हार्डवेयर चूंकि मूल्यवान था, बाद के प्रारुपों में निर्देश केचे सफल दर में सुधार करने के लिए पुनः रखा गया था, जिस बिंदु पर संक्षिप्त नाम अब समझ में नहीं आता है। | ||
=== | === खतरों पर नियंत्रण === | ||
खतरों पर नियंत्रण सशर्त और बिना शर्त उपमार्गो के कारण होते हैं। क्लासिक आरआईएससी संपंक्ति डिकोड चरण में उपमार्गो को समाधान करती है, जिसका अर्थ है कि उपमार्ग संकल्प पुनरावृत्ति दो चक्र लंबी है। इसके तीन निहितार्थ हैं: | |||
* | * उपमार्ग संकल्प पुनरावृत्ति अधिकतर सर्किट्री से होकर गुजरता है: निर्देश केचे रीड, रजिस्टर फाइल रीड, उपमार्ग शर्त कंप्यूट (जिसमें एमआईपीएस सीपीयू पर 32-बिट तुलना सम्मिलित है), और आगामी निर्देश स्थान बहुसंकेतक है। | ||
* क्योंकि | * क्योंकि उपमार्ग और अकस्मात वृद्धि लक्ष्यों की गणना रजिस्टर रीड के समानांतर में की जाती है, आरआईएससी आईएसए के पास सामान्यतः उस उपमार्ग को रजिस्टर + ऑफसेट स्थान पर निर्देश नहीं होते हैं। रजिस्टर करने के लिए अकस्मात वृद्धि समर्थित है। | ||
* किसी भी | * किसी भी उपमार्ग पर उपमार्ग के तुरंत बाद निर्देश लिया जाता है, सदैव निर्देश केचे से प्राप्त किया जाता है। यदि इस निर्देश की अनदेखी की जाती है, तो एक आवर्तन प्रति ली गई उपमार्ग आईपीसी जुर्माना है, जो पर्याप्त रूप से बड़ा है। | ||
उपमार्ग के साथ इस प्रदर्शन की समस्या को समाधान करने के लिए चार योजनाएँ हैं: | |||
* | * पूर्वानुमान नहीं लिया गया: निर्देश केचे से उपमार्ग के बाद सदैव निर्देश प्राप्त करें, किन्तु उपमार्ग न लेने पर ही इसे कार्यान्वित करें। यदि उपमार्ग नहीं ली तो संपंक्ति पूर्ण रहती है। यदि उपमार्ग ली जाती है, तो निर्देश फ़्लश हो जाता है (चिन्हित किया जाता है जैसे कि यह एक एनओपी था), और एक आवर्तन का निर्देश समाप्त करने का अवसर खो जाता है। | ||
* | * संभावित उपमार्ग: निर्देश केचे से उपमार्ग के बाद सदैव निर्देश प्राप्त करें, किन्तु उपमार्ग निष्पादन ही इसे कार्यान्वित करें। संकलक सदैव ऐसी उपमार्ग पर [[शाखा विलंब स्लॉट|उपमार्ग विलंब चिह्न]] को भर सकता है, और चूंकि उपमार्गों को अधिक बार नहीं लिया जाता है, ऐसी उपमार्गों में पिछले प्रकार की तुलना में छोटा आईपीसी जुर्माना होता है। | ||
* | * उपमार्ग विलंब चिह्न: निर्देश केचे से सदैव उपमार्ग के बाद निर्देश प्राप्त करें, और उपमार्ग निष्पादन पर भी इसे सदैव कार्यान्वित करें। उपमार्गों के कुछ अंश (संभवतः 60%) या नहीं लिए गए (संभवतः 40%) के लिए आईपीसी जुर्माना लेने के अतिरिक्त, उपमार्ग विलंब चिह्न उन उपमार्गों जिनमें संकलक उपमार्ग विलंब चिह्न को अनुसूची नहीं कर सका के लिए आईपीसी जुर्माना लेते हैं। एसपीएआरसी, एमआईपीएस और एमसी88के प्रारुपों ने अपने आईएसएएस में उपमार्ग विलंब चिह्न तत्पर किया। | ||
* [[शाखा भविष्यवाणी| | * [[शाखा भविष्यवाणी|उपमार्ग पूर्वकथन]]: प्रत्येक निर्देश को लाने के साथ-साथ यह अनुमान लगाएं कि क्या निर्देश एक उपमार्ग या विषयांतर है और यदि ऐसा है तो लक्ष्य का अनुमान लगाएं। चक्र पर उपमार्ग या विषयांतर के बाद अनुमानित लक्ष्य पर निर्देश प्राप्त करें। जब अनुमान गलत हो, तो असत्य से प्राप्त लक्ष्य को फ्लश करें। | ||
विलंबित | विलंबित उपमार्ग प्रथम विवादास्पद थीं, क्योंकि उनके शब्दार्थ जटिल हैं। विलंबित उपमार्ग निर्दिष्ट करती है कि आगामी निर्देश के ''बाद'' नए स्थान पर जाना है। आगामी निर्देश उपमार्ग के बाद निर्देश केचे से अपरिहार्य रूप से लोड किया गया है। | ||
विलंबित | विलंबित उपमार्गों की आईएसए प्रारुप में खराब अल्पकालिक विकल्प के रूप में आलोचना की गई है: | ||
* | * संकलनकर्ता को सामान्यतः उपमार्ग के बाद तार्किक रूप से स्वतंत्र निर्देश खोजने में कुछ कठिनाई होती है ( उपमार्ग के बाद के निर्देश को विलंब चिह्न कहा जाता है), जिससे उन्हें एनओपीएस को विलंब चिह्न में सम्मिलित करना पड़े। | ||
* [[ सुपरस्कालर | | * [[ सुपरस्कालर | सुपरस्केलर]] प्रोसेसर जो प्रति आवर्तन अनेक निर्देश प्राप्त करते हैं और जो उपमार्ग पूर्वकथन के कुछ रूप होने चाहिए, विलंबित उपमार्गों से लाभ नहीं होता है। [[डीईसी अल्फा]] आईएसए ने विलंबित उपमार्गों को छोड़ दिया, क्योंकि यह सुपरस्केलर प्रोसेसर के लिए अभिप्रेत था। | ||
* विलंबित | * विलंबित उपमार्गों की सबसे गंभीर कमी उनके आवश्यक अतिरिक्त नियंत्रण जटिलता है। यदि विलंब चिह्न निर्देश अपवाद लेता है, तो प्रोसेसर को उस आगामी निर्देश के अतिरिक्त उपमार्ग पर रीस्टार्ट् करना होगा। अपवादों में अनिवार्य रूप से दो स्थान होते हैं, अपवाद स्थान और रीस्टार्ट् स्थान, और सभी स्थितियों में सही ढंग से दोनों के बीच उत्पन्न और अंतर करना बाद के प्रारुपों के लिए बग का स्रोत रहा है। | ||
== अपवाद == | == अपवाद == | ||
मान लीजिए कि 32-बिट आरआईएससी | मान लीजिए कि 32-बिट आरआईएससी एडीडी निर्देश को संसाधित करता है जो दो [[बड़ी संख्या]] जोड़ता है, और परिणाम 32 बिट्स में उपयुक्त नहीं होता है। | ||
अधिकांश स्थापत्य से | अधिकांश स्थापत्य से प्रदान किया जाने वाला सबसे सरल समाधान आवरण अंकगणित है। अधिकतम संभव एन्कोडेड मान से अधिक संख्या में उनके सबसे महत्वपूर्ण बिट्स उपयुक्त होने तक हटा दिए जाते हैं। सामान्य पूर्णांक संख्या सिस्टम में 3000000000+3000000000=6000000000 है। अहस्ताक्षरित 32 बिट आवरण अंकगणित के साथ,3000000000+3000000000=1705032704 (6000000000 मॉड 2^32)। यह बहुत उपयोगी नहीं हो सकता है। अंकगणित को सम्मलित का सबसे बड़ा लाभ यह है कि प्रत्येक संचालन का सुपरिभाषित परिणाम होता है। | ||
किन्तुप्रोग्रामर विशेष रूप से यदि बड़ी संख्या का समर्थन करने वाली भाषा में प्रोग्रामिंग करते है तो (जैसे [[लिस्प (प्रोग्रामिंग भाषा)|लिस्प (प्रोग्रामिंग भाषा]] या स्कीम) (प्रोग्रामिंग भाषा), हो सकता है कि अंकगणित को सम्मलित करना न चाहें। कुछ स्थापत्य (जैसे एमआईपीएस), विशेष जोड़ संचालन को परिभाषित करते हैं जो परिणाम को सम्मलित के अतिरिक्त अतिप्रवाह पर विशेष स्थानों पर उपमार्ग करते हैं। समस्या को ठीक करने के लिए लक्ष्य स्थान पर सॉफ़्टवेयर उत्तरदायी है। इस विशेष उपमार्ग को अपवाद कहा जाता है। अपवाद नियमित उपमार्गों से भिन्न होते हैं जिसमें लक्ष्य स्थान निर्देश से निर्दिष्ट नहीं किया जाता है, और उपमार्ग का निर्णय निर्देश के परिणाम पर निर्भर होता है। | |||
क्लासिक आरआईएससी यंत्रो में से एक पर सबसे | क्लासिक आरआईएससी यंत्रो में से एक पर सबसे प्रत्यक्ष सॉफ़्टवेयर दृश्यमान अपवाद टीएलबी मिस (ट्रांसलेशन लुकसाइड बफ़र) है। | ||
अपवाद | अपवाद उपमार्गों और विषयांतर से भिन्न होते हैं, क्योंकि उन अन्य नियंत्रण प्रवाह परिवर्तनों को डिकोड चरण में समाधान किया जाता है। राइटबैक चरण में अपवादों का समाधान किया जाता है। जब अपवाद का पता चलता है, तो निम्नलिखित निर्देश (पूर्व संपंक्ति में) अमान्य के रूप में चिह्नित किए जाते हैं, और जैसे ही वे पाइप के अंत तक प्रवाहित होते हैं, उनके परिणाम समाप्त कर दिए जाते हैं। प्रोग्राम काउंटर विशेष अपवाद हैंडलर के स्थान पर सेट है, और अपवाद स्थान और कारण के साथ विशेष रजिस्टर लिखे गए हैं। | ||
समस्या को ठीक करने और प्रोग्राम को | समस्या को ठीक करने और प्रोग्राम को रीस्टार्ट् करने के लिए सॉफ़्टवेयर को आसान (और तेज़) बनाने के लिए सीपीयू को एक स्पष्ट अपवाद लेना चाहिए। स्पष्ट अपवाद का अर्थ है कि अपवाद निर्देश तक सभी निर्देश कार्यान्वित किए गए हैं, और अपवाद निर्देश और बाद की की सभी कार्य में सब कुछ कार्यान्वित नहीं किया गया है। | ||
स्पष्ट अपवाद लेने के लिए सीपीयू को प्रोग्राम क्रम में सॉफ़्टवेयर दृश्य स्थिति में परिवर्तन करना चाहिए। यह इन आदेश प्रतिबद्धता क्लासिक आरआईएससी संपंक्ति में स्वाभाविक रूप से होता है। अधिकांश निर्देश अपने परिणामों को राइटबैक चरण में रजिस्टर फ़ाइल में लिखते हैं, और इसलिए प्रोग्राम आदेश में स्वचालित रूप लिखते होता है। स्टोर निर्देश चूंकि उनके परिणाम एक्सेस चरण में स्टोर डेटा क्रम में लिखते हैं। यदि स्टोर निर्देश एक अपवाद लेता है, तो स्टोर डेटा क्रम प्रविष्टि को अमान्य कर दिया जाता है जिससे बाद में इसे केचे डेटा एसएआरएम में न लिखा जाए। | |||
== | == केचे क्षति प्रबंधन == | ||
कभी-कभी, या तो डेटा या निर्देश | कभी-कभी, या तो डेटा या निर्देश केचे में आवश्यक तथ्य या निर्देश नहीं होता है। इन स्थितियों में सीपीयू को आवश्यक डेटा से केचे भरने तक संचालन को निलंबित करना चाहिए, और कार्यान्वित को पुनः से प्रारंभ करना चाहिए। आवश्यक डेटा के साथ केचे भरने की समस्या (और संभावित रूप से निष्कासित केचे पंक्ति को मैमोरी में पुनः लिखना) संपंक्ति संगठन के लिए विशिष्ट नहीं है, और यहां पर इसकी चर्चा नहीं की गई है। | ||
सस्पेंड / रिज्यूम समस्या को संभालने के लिए दो रणनीतियाँ हैं। पहला | सस्पेंड / रिज्यूम समस्या को संभालने के लिए दो रणनीतियाँ हैं। पहला ग्लोबल स्टाल सिग्नल है। यह संकेत सक्रिय होने पर प्रत्येक चरण की प्रारंभ में फ्लिप-फ्लॉप पर घड़ी संवृत करके सामान्यतः संपंक्ति को आगे बढ़ने के निर्देशों को रोकता है। इस रणनीति का हानि यह है कि बड़ी संख्या में फ्लिप फ्लॉप हैं, इसलिए ग्लोबल स्टाल सिग्नल को विस्तार में अधिक अवधि लगती है। चूंकि यंत्र को सामान्यतः उसी आवर्तन में रुकना पड़ता है जिससे यह स्टाल की आवश्यकता वाली स्थिति की पहचान करता है, स्टाल सिग्नल एक गति-सीमित महत्वपूर्ण पथ बन जाता है। | ||
निलंबन/पुनः से प्रारंभ करने के लिए एक और रणनीति अपवाद तर्क का पुन: उपयोग करना है। यंत्र | निलंबन/पुनः से प्रारंभ करने के लिए एक और रणनीति अपवाद तर्क का पुन: उपयोग करना है। वह यंत्र उल्लंघन करने वाला निर्देश पर अपवाद लेती है, और आगे के सभी निर्देश अमान्य हो जाते हैं। जब केचे को आवश्यक डेटा से भर दिया जाता है, तो केचे चूक करने वाला निर्देश पुनः से प्रारंभ हो जाता है। डेटा केचे क्षति प्रबंधन में तेजी प्राप्ति के लिए, निर्देश को पुनः से प्रारंभ किया जा सकता है जिससे डेटा केचे भरने के आवर्तन के बाद इसका एक्सेस आवर्तन होता है। | ||
== यह भी देखें == | == यह भी देखें == | ||
Line 167: | Line 167: | ||
{{CPU technologies}} | {{CPU technologies}} | ||
[[fa : خط لوله کلاسیک | [[fa : خط لوله کلاسیک]] | ||
[[Category:Collapse templates]] | |||
[[Category: | |||
[[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
निर्देश प्राप्ति और डिकोड करने के चरण पूर्व के बाद दूसरा निर्देश आवर्तन भेजते हैं। वे इस आरेख में दिखाए अनुसार संपंक्ति में प्रवाहित होते हैं:
सहज संपंक्ति में परिस्थिति पर विचार किए बिना डेटा परिस्थिति निम्नानुसार बढ़ता है:
आवर्तन 3 में, SUB
निर्देश r10
के लिए नए मान की गणना करता है। इसी आवर्तन में AND
संचालन डीकोड किया गया जाता है, औरr10
का मान रजिस्टर फ़ाइल से प्राप्त किया जाता है। चूंकि SUB
निर्देश ने अभी तक इसका परिणाम r10
को नहीं लिखा है। इसका राइट-बैक सामान्य रूप से आवर्तन 5 (हरा कक्ष) में होता है। इसलिए मान रजिस्टर फ़ाइल मे पढ़ा गया मान और एएलयू ( AND
संचालन लाल कक्ष के कार्यान्वित चरण में) को दिया गया मान गलत है।
इसके अतिरिक्त हमें सामान्य रूप से लिखे जाने से पूर्व SUB
से गणना किए गए डेटा को AND
संचालन के कार्यान्वित चरण (अथार्त आरेख में लाल वृत्त में) पुनः भेजना होगा। इस समस्या का समाधान बाईपास बहुसंकेतक की जोड़ी है। ये बहुसंकेतक डिकोड चरण के अंत में होते हैं, और उनके फ्लॉप आउटपुट एएलयू के इनपुट होते हैं। यह प्रत्येक बहुसंकेतक के बीच चयन करता है:
- रजिस्टर फाइल रीड पोर्ट (अथार्त डिकोड चरण का आउटपुट अनुभवहीन संपंक्ति में है): लाल तीर है।
- एएलयू की वर्तमान रजिस्टर संपंक्ति ( चरण से बाईपास करने के लिए) नीला तीर है।
- एक्सेस चरण की वर्तमान रजिस्टर संपंक्ति (जो या तो लोडेड मान है या अग्रेषित एएलयू परिणाम है, यह दो चरणों को बाईपास करता है) बैंगनी तीर है। ध्यान दें कि इसके लिए डेटा को एक आवर्तन से अवधि में पीछे की ओर भेजने की आवश्यकता होती है। यदि ऐसा होता है तो डेटा तत्पर होने तक
AND
संचालन को रोकने के लिए बबल (कंप्यूटिंग) डाला जाना चाहिए।
डिकोड चरण तर्क डिकोड चरण में निर्देश से पढ़े गए रजिस्टरें के लिए संपंक्ति के कार्यान्वित और एक्सेस चरणों में निर्देशों से लिखे गए रजिस्टरें की तुलना करता है, और बहुसंकेतो को सबसे हाल के डेटा का चयन करने का कारण बनता है। ये बाईपास बहुसंकेतो संपंक्ति के लिए एएलयू, बहुसंकेतक और फ्लिप-फ्लॉप की विलंबता के साथ सरल निर्देशों को कार्यान्वित करना संभव बनाते हैं। बहुसंकेतो के आभाव मे रजिस्टर फ़ाइल को लिखने और पुनः पढ़ने की विलंबता को इन निर्देश की विलंबता में सम्मिलित करना होगा।
ध्यान दें कि डेटा को मात्र उस अवधि मे आगे भेजा जा सकता है। डेटा को पूर्व के चरण में पुनः बाईपास नहीं किया जा सकता है यदि इसे अभी तक संसाधित नहीं किया गया है। उपरोक्त स्थितियों में, डेटा को आगे बढ़ाया जाता है (जब तक AND
एएलयू में रजिस्टर के लिए तत्पर होता है जब तक SUB
पूर्व मे ही इसकी गणना कर चुका होता है)।
समाधान बी- पाइपलाइन इंटरलॉक
चूंकि, निम्नलिखित निर्देशों पर विचार करें:
LD adr -> r10
AND r10,r3 -> r11
स्थान adr
से पढ़ा गया डेटा LD
निर्देश के मेमोरी एक्सेस चरण के बाद तक डेटा केचे में उपस्थित नहीं है। इस अवधि तक, AND
निर्देश पूर्व से ही एएलयू के माध्यम से है। इसे समाधान करने के लिए एएलयू में इनपुट के लिए मैमोरी से डेटा को अवधि पर पीछे की ओर पारित करने की आवश्यकता होगी,यह संभव नहीं है। समाधान AND
निर्देश को एक आवर्तन से विलंबित करना है देरी करना है। डिकोड चरण में डेटा परिस्थिति का पता लगाया जाता है, और प्राप्ति और डिकोड करने के चरणों को रोक दिया जाता है - उन्हें अपने इनपुट को फ़्लॉप करने से रोका जाता है और इसलिए एक आवर्तन उसी स्थिति में रहते हैं। कार्यान्वित एक्सेस और राइट-बैक चरणों के अनुप्रवाह में LD
और AND
निर्देशों के बीच एक अतिरिक्त नो-ऑपरेशन इंस्ट्रक्शन (एनओपी) डाला गया है।
इस एनओपी को संपंक्ति बबल (कंप्यूटिंग) कहा जाता है क्योंकि यह संपंक्ति में तैरता है़ जैसे पानी के पाइप में हवा का बुलबुला संसाधनों को घेरता है किन्तु उपयोगी परिणाम नहीं देता है। डेटा परिस्थिति का पता लगाने और परिस्थिति को दूर करने तक संपंक्ति को रोकने के लिए हार्डवेयर को ' पाइपलाइन इंटरलॉक' कहा जाता है।
समय को पीछे छोड़ते हुए | बबल का उपयोग करके समस्या हल की गई |
चूंकि किसी भी डेटा अग्रेषण के साथ एक पाइपलाइन इंटरलॉक का उपयोग नहीं किया जाना चाहिए। 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.
- ↑ Patterson, David (12 May 1981). "RISC I: A Reduced Instruction Set VLSI Computer". Isca '81. pp. 443–457.
- ↑ Patterson, David (12 May 1981). "RISC I: A Reduced Instruction Set VLSI Computer". Isca '81. pp. 443–457.