बेशक हालत हर बार जाँच की जाती है। लेकिन जब तक यह जाँच की जाती है, तब तक यह सीपीयू पाइपलाइन में आता है। इस बीच, अन्य निर्देशों ने भी पाइपलाइन में प्रवेश किया है, और निष्पादन के विभिन्न चरणों में हैं।
आमतौर पर, एक शर्त के तुरंत बाद एक सशर्त शाखा निर्देश होता है, जो या तो शाखाएं करता है यदि स्थिति TRUE का मूल्यांकन करती है, या यदि स्थिति FALSE का मूल्यांकन करती है, तो इसके माध्यम से गिरती है। इसका मतलब यह है कि निर्देशों की दो अलग-अलग धाराएँ हैं जिन्हें शर्त निर्देश और शाखा निर्देश के बाद पाइपलाइन में लोड किया जा सकता है, यह इस बात पर निर्भर करता है कि क्या स्थिति TRUE या FALSE का मूल्यांकन करती है। दुर्भाग्य से, स्थिति निर्देश और शाखा निर्देश को लोड करने के तुरंत बाद, सीपीयू को अभी तक यह पता नहीं है कि स्थिति क्या मूल्यांकन करेगी, लेकिन इसे अभी भी लोडिंग सामान को पाइपलाइन में रखना है। तो यह एक अनुमान के आधार पर निर्देशों के दो सेटों में से एक को चुनता है कि स्थिति क्या मूल्यांकन करेगी।
बाद में, जैसा कि निर्देश अनुदेश पाइप लाइन की यात्रा करता है, इसका मूल्यांकन किया जाना समय है। उस समय, CPU यह पता लगाता है कि उसका अनुमान सही था या गलत।
यदि अनुमान सही निकला, तो शाखा सही जगह पर गई, और सही निर्देश पाइपलाइन में लोड किए गए थे। यदि यह पता चला कि अनुमान गलत था, तो सशर्त शाखा के निर्देश गलत होने के बाद पाइपलाइन में लोड किए गए सभी निर्देश गलत थे, उन्हें त्यागने की आवश्यकता है, और निर्देशों को फिर से लाना सही जगह से फिर से शुरू होना चाहिए।
संशोधन
StarWeaver की टिप्पणी के जवाब में, एक निर्देश को निष्पादित करने के लिए सीपीयू को क्या करना है, इसका एक विचार देना:
कुछ के रूप में सरल के रूप में विचार करें MOV AX,[SI+10]
जो हम इंसान भोलेपन से "एसआई प्लस 10 में शब्द के साथ एक्सएक्स लोड" के रूप में सोचते हैं। मोटे तौर पर, CPU के लिए है:
- पता बस में पीसी ("प्रोग्राम काउंटर रजिस्टर") की सामग्री का उत्सर्जन करें;
- डेटा बस से निर्देश ओपकोड पढ़ें;
- वेतन वृद्धि पीसी;
- यह क्या करना है यह पता लगाने के लिए ओपकोड को डीकोड करें;
- पता बस में पीसी की सामग्री का उत्सर्जन करें;
- डेटा बस से निर्देश ऑपरेंड (इस मामले में 10) पढ़ें;
- वेतन वृद्धि पीसी;
- योजक को एसआईएंड और एसआई फ़ीड;
- पता बस में योजक के परिणाम का उत्सर्जन करें;
- डेटा बस से AX पढ़ें।
यह एक शानदार 10 कदम है। इन चरणों में से कुछ को गैर-पाइपेल किए गए सीपीयू में भी अनुकूलित किया जाएगा, उदाहरण के लिए सीपीयू अगले चरण के समानांतर लगभग हमेशा वृद्धि पीसी होगा, जो कि एक आसान बात है क्योंकि पीसी एक बहुत, बहुत ही विशेष रजिस्टर है जो है कभी किसी अन्य नौकरी के लिए उपयोग नहीं किया जाता है, इसलिए इस विशेष रजिस्टर तक पहुंच के लिए सीपीयू के विभिन्न हिस्सों के बीच विवाद की संभावना नहीं है। लेकिन फिर भी, हमें इस तरह के एक सरल निर्देश के लिए 8 चरणों के साथ छोड़ दिया जाता है, और ध्यान दें कि मैं पहले से ही सीपीयू की ओर से कुछ हद तक परिष्कार मान रहा हूं, उदाहरण के लिए मैं यह मान रहा हूं कि पूरे अतिरिक्त कदम के लिए कोई आवश्यकता नहीं होगी इससे पहले कि परिणाम से पढ़ा जा सकता है, इसके लिए योजक वास्तव में इसके अतिरिक्त है,
अब, विचार करें कि अधिक जटिल पते वाले मोड मौजूद हैं, जैसे MOV AX, [DX+SI*4+10]
, और यहां तक कि अधिक जटिल निर्देश, जैसे MUL AX, operand
कि वास्तव में सीपीयू के अंदर लूप का प्रदर्शन करते हैं ताकि उनके परिणाम की गणना की जा सके।
तो, मेरा कहना यह है कि "परमाणु स्तर" रूपक सीपीयू अनुदेश स्तर के लिए उपयुक्त है। यह पाइपलाइन चरण स्तर के लिए उपयुक्त हो सकता है, अगर आप वास्तविक तर्क गेट स्तर से बहुत नीचे नहीं जाना चाहते हैं।