निर्देश पाइपलाइन: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Method of improving instruction-level parallelism}} {{Use American English|date = March 2019}} {{More citations needed|date=May 2016}} {| class="wikitable...")
 
No edit summary
 
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Method of improving instruction-level parallelism}}
{{Short description|Method of improving instruction-level parallelism}}
{{Use American English|date = March 2019}}
 
{{More citations needed|date=May 2016}}
{| class="wikitable floatright" style="text-align:center; width:400px;"
{| class="wikitable floatright" style="text-align:center; width:400px;"
|+[[Classic RISC pipeline|Basic five-stage pipeline]]
|+[[Classic RISC pipeline|Basic five-stage pipeline]]
Line 61: Line 60:
In the fourth clock cycle (the green column), the earliest instruction is in MEM stage, and the latest instruction has not yet entered the pipeline.
In the fourth clock cycle (the green column), the earliest instruction is in MEM stage, and the latest instruction has not yet entered the pipeline.
|}
|}
[[कंप्यूटर इंजीनियरिंग]] में, निर्देश पाइपलाइनिंग एक एकल प्रोसेसर के भीतर निर्देश-स्तरीय समानता को लागू करने की एक तकनीक है। पाइपलाइनिंग आने वाले [[मशीन कोड]] को अलग-अलग केंद्रीय प्रसंस्करण इकाई द्वारा किए गए अनुक्रमिक चरणों (एपिलाइन [[पाइपलाइन (कंप्यूटिंग)]]) की एक श्रृंखला में विभाजित करके प्रोसेसर के हर हिस्से को कुछ निर्देशों के साथ व्यस्त रखने का प्रयास करता है #समानांतर में संसाधित निर्देशों के विभिन्न हिस्सों के साथ संरचना और कार्यान्वयन .
[[कंप्यूटर इंजीनियरिंग]] में, '''निर्देश पाइपलाइनिंग''' एक एकल प्रोसेसर के अन्दर निर्देश-स्तरीय समानता को लागू करने की एक प्रणाली है। पाइपलाइनिंग, आने वाले [[मशीन कोड]] को समानांतर में संसाधित निर्देशों के विभिन्न भागों के साथ विभिन्न प्रोसेसर इकाइयों द्वारा किए गए अनुक्रमिक चरणों (नाम "[[पाइपलाइन (कंप्यूटिंग)]]") की एक श्रृंखला में विभाजित करके प्रोसेसर के हर भाग को कुछ निर्देशों के साथ व्यस्त रखने का प्रयास करती है।


==संकल्पना और प्रेरणा==
==संकल्पना और प्रेरणा==
एक पाइपलाइन कंप्यूटर में, निर्देश चरणों में केंद्रीय प्रसंस्करण इकाई ([[ CPU ]]) के माध्यम से प्रवाहित होते हैं। उदाहरण के लिए, इसमें [[वॉन न्यूमैन वास्तुकला]] के प्रत्येक चरण के लिए एक चरण हो सकता है: निर्देश प्राप्त करें, ऑपरेंड प्राप्त करें, निर्देश करें, परिणाम लिखें। एक पाइपलाइनयुक्त कंप्यूटर में आमतौर पर प्रत्येक चरण के बाद पाइपलाइन रजिस्टर होते हैं। ये निर्देश और गणना से जानकारी संग्रहीत करते हैं ताकि अगले चरण के [[ तर्क द्वार ]] अगला चरण कर सकें।
पाइपलाइन कंप्यूटर में, निर्देश चरणों में सेंट्रल प्रोसेसिंग यूनिट ([[ CPU | सीपीयू]] ) के माध्यम से प्रवाहित होते हैं। उदाहरण के लिए, इसमें [[वॉन न्यूमैन वास्तुकला]] के प्रत्येक चरण के लिए एक चरण हो सकता है: निर्देश प्राप्त करें, ऑपरेंड प्राप्त करें, निर्देश करें, परिणाम लिखें। पाइपलाइनयुक्त कंप्यूटर में सामान्यतः प्रत्येक चरण के बाद पाइपलाइन रजिस्टर होते हैं। ये निर्देश और गणना से जानकारी संग्रहीत करते हैं जिससे अगले चरण के [[ तर्क द्वार |लॉजिक गेट]] अगला चरण कर सकें।


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


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


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


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


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


पाइपलाइनयुक्त कंप्यूटर का अधिकांश डिज़ाइन चरणों के बीच हस्तक्षेप को रोकता है और रुकावटों को कम करता है।
पाइपलाइनयुक्त कंप्यूटर का अधिकांश डिज़ाइन चरणों के बीच हस्तक्षेप को रोकता है और रुकावटों को कम करता है।


==={{Anchor|SUPER}}चरणों की संख्या===
===चरणों की संख्या===
निर्भर चरणों की संख्या मशीन वास्तुकला के साथ भिन्न होती है। उदाहरण के लिए:
निर्भर चरणों की संख्या मशीन वास्तुकला के साथ भिन्न होती है। उदाहरण के लिए:
* 1956-61 के [[ आईबीएम खिंचाव ]] प्रोजेक्ट ने फ़ेच, डिकोड और एक्ज़िक्यूट जैसे शब्दों का प्रस्ताव रखा जो आम हो गए हैं।
*1956-61 के [[ आईबीएम खिंचाव |आईबीएम स्ट्रेच]] परियोजना ने फ़ेच, डिकोड और एक्ज़िक्यूट जैसे शब्दों का प्रस्ताव रखा जो सामान्य हो गए हैं।
* [[क्लासिक आरआईएससी पाइपलाइन]] में शामिल हैं:
* [[क्लासिक आरआईएससी पाइपलाइन|पारम्परिक आरआईएससी पाइपलाइन]] में सम्मिलित हैं:
*# निर्देश प्राप्त करें
*# निर्देश प्राप्त करें
*# अनुदेश डिकोड और रजिस्टर फ़ेच
*# अनुदेश डिकोड और रजिस्टर फ़ेच
*# अमल में लाना
*# पालन करना
*# मेमोरी एक्सेस
*# मेमोरी एक्सेस
*#रजिस्टर वापस लिखें
*#रजिस्टर वापस लिखें
* [[Atmel AVR]] और [[पीआईसी माइक्रोकंट्रोलर]] प्रत्येक में दो चरण वाली पाइपलाइन होती है।
*[[Atmel AVR|एटमेल एवीआर]] और [[पीआईसी माइक्रोकंट्रोलर]] प्रत्येक में दो चरण वाली पाइपलाइन होती है।
* कई डिज़ाइनों में 7, 10 और यहां तक ​​कि 20 चरणों तक लंबी पाइपलाइन शामिल हैं (जैसा कि [[इंटेल]] [[पेंटियम 4]] में है)
* कई डिज़ाइनों में 7, 10 और यहां तक ​​कि 20 चरणों (जैसा कि [[इंटेल]] [[पेंटियम 4]] में है) तक लंबी पाइपलाइन सम्मिलित हैं।
* इंटेल के बाद के प्रेस्कॉट और सीडर मिल [[नेटबर्स्ट]] कोर, जो पिछले पेंटियम 4 मॉडल और उनके [[पेंटियम डी]] और ज़ीऑन डेरिवेटिव में उपयोग किए गए थे, में एक लंबी 31-स्टेज पाइपलाइन है।
*इंटेल के बाद के प्रेस्कॉट और सीडर मिल [[नेटबर्स्ट]] कोर का उपयोग पिछले पेंटियम 4 मॉडल में किया गया था और उनके [[पेंटियम डी]] और ज़ीऑन डेरिवेटिव में 31-चरण की लंबी पाइपलाइन है।
* ज़ेलेरेटेड X10q नेटवर्क प्रोसेसर में एक हजार से अधिक चरण लंबी पाइपलाइन होती है, हालांकि इस मामले में इनमें से 200 चरण व्यक्तिगत रूप से प्रोग्राम किए गए निर्देशों के साथ स्वतंत्र सीपीयू का प्रतिनिधित्व करते हैं। शेष चरणों का उपयोग मेमोरी और ऑन-चिप फ़ंक्शन इकाइयों तक पहुंच को समन्वयित करने के लिए किया जाता है।<ref>{{cite journal|last1=Glaskowsky|first1=Peter|title=Xelerated's Xtraordinary NPU — World's First 40Gb/s Packet Processor Has 200 CPUs|journal=Microprocessor Report|date=Aug 18, 2003|volume=18|issue=8|pages=12–14|url=http://www.linleygroup.com/mpr/h/2003/0818/173301.html|access-date=20 March 2017}}</ref><ref>{{cite web | url=https://www.eetimes.com/xelerated-brings-programmable-40-gbits-s-technology-to-the-mainstream-ethernet/# | title=Xelerated Brings Programmable 40 Gbits/S Technology to the Mainstream Ethernet | date=31 May 2003 }}</ref>{{More citations needed|date=October 2020}}
* ज़ेलेरेटेड X10q नेटवर्क प्रोसेसर में हजार से अधिक चरण लंबी पाइपलाइन होती है, चूंकि इस स्थिति में इनमें से 200 चरण व्यक्तिगत रूप से प्रोग्राम किए गए निर्देशों के साथ स्वतंत्र सीपीयू का प्रतिनिधित्व करते हैं। शेष चरणों का उपयोग मेमोरी और ऑन-चिप फ़ंक्शन इकाइयों तक पहुंच को समन्वयित करने के लिए किया जाता है।<ref>{{cite journal|last1=Glaskowsky|first1=Peter|title=Xelerated's Xtraordinary NPU — World's First 40Gb/s Packet Processor Has 200 CPUs|journal=Microprocessor Report|date=Aug 18, 2003|volume=18|issue=8|pages=12–14|url=http://www.linleygroup.com/mpr/h/2003/0818/173301.html|access-date=20 March 2017}}</ref><ref>{{cite web | url=https://www.eetimes.com/xelerated-brings-programmable-40-gbits-s-technology-to-the-mainstream-ethernet/# | title=Xelerated Brings Programmable 40 Gbits/S Technology to the Mainstream Ethernet | date=31 May 2003 }}</ref>
 
चूंकि पाइपलाइन को गहरा (अधिक संख्या में निर्भर चरणों के साथ) बनाया गया है, दिए गए चरण को सरल सर्किटरी के साथ कार्यान्वित किया जा सकता है, जो प्रोसेसर घड़ी को तेजी से चलने दे सकता है।<ref name=Guardian>{{cite book |url=https://books.google.com/books?id=Nibfj2aXwLYC&q=deep%20pipeline%20processor&pg=PA94 |title=आधुनिक प्रोसेसर डिज़ाइन|author=John Paul Shen, Mikko H. Lipasti |year=2004 |publisher=[[McGraw-Hill Professional]]|isbn=9780070570641 }}</ref> ऐसी पाइपलाइनों को सुपरपाइपलाइन कहा जा सकता है।<ref>{{cite book |url=https://books.google.com/books?id=xgtTAAAAMAAJ&q=%22a+superpipeline+is+essentially+a+deep+instruction+pipeline+with+many+stages%22 |title=कंप्यूटर और अन्य जटिल डिजिटल उपकरणों का डिज़ाइन|author=Sunggu Lee |year=2000 |publisher=[[Prentice Hall]]|isbn=9780130402677 }}</ref>


चूंकि पाइपलाइन को गहरा बनाया गया है (अधिक संख्या में निर्भर चरणों के साथ), दिए गए चरण को सरल सर्किटरी के साथ कार्यान्वित किया जा सकता है, जो प्रोसेसर घड़ी को तेजी से चलने दे सकता है।<ref name=Guardian>{{cite book |url=https://books.google.com/books?id=Nibfj2aXwLYC&q=deep%20pipeline%20processor&pg=PA94 |title=आधुनिक प्रोसेसर डिज़ाइन|author=John Paul Shen, Mikko H. Lipasti |year=2004 |publisher=[[McGraw-Hill Professional]]|isbn=9780070570641 }}</ref> ऐसी पाइपलाइनों को सुपरपाइपलाइन कहा जा सकता है।<ref>{{cite book |url=https://books.google.com/books?id=xgtTAAAAMAAJ&q=%22a+superpipeline+is+essentially+a+deep+instruction+pipeline+with+many+stages%22 |title=कंप्यूटर और अन्य जटिल डिजिटल उपकरणों का डिज़ाइन|author=Sunggu Lee |year=2000 |publisher=[[Prentice Hall]]|isbn=9780130402677 }}</ref>
प्रोसेसर को पूरी तरह से पाइपलाइनयुक्त कहा जाता है यदि वह प्रत्येक चक्र पर निर्देश प्राप्त कर सके। इस प्रकार, यदि कुछ निर्देशों या शर्तों के लिए देरी की आवश्यकता होती है जो नए निर्देशों को लाने में बाधा डालती है, तो प्रोसेसर पूरी तरह से पाइपलाइन में नहीं है।
एक प्रोसेसर को पूरी तरह से पाइपलाइनयुक्त कहा जाता है यदि वह प्रत्येक चक्र पर एक निर्देश प्राप्त कर सके। इस प्रकार, यदि कुछ निर्देशों या शर्तों के लिए देरी की आवश्यकता होती है जो नए निर्देशों को लाने में बाधा डालती है, तो प्रोसेसर पूरी तरह से पाइपलाइन में नहीं है।


==इतिहास==
==इतिहास==
{{more citations needed section|date=March 2019}}
पाइपलाइनिंग का मौलिक उपयोग [[ILLIAC II|इलियाक II]] परियोजना और आईबीएम स्ट्रेच परियोजना में किया गया था, चूंकि सरल संस्करण का उपयोग पहले 1939 में [[Z1 (कंप्यूटर)]] और 1941 में [[Z3 (कंप्यूटर)]] में किया गया था।<ref name="Rojas_1997">{{cite journal |title=कोनराड ज़ूस की विरासत: Z1 और Z3 की वास्तुकला|author-last=Rojas |author-first=Raúl |author-link=Raúl Rojas |journal=[[IEEE Annals of the History of Computing]] |volume=19 |number=2 |date=April–June 1997 |pages=5–16 |doi=10.1109/85.586067 |url=http://ed-thelen.org/comp-hist/Zuse_Z1_and_Z3.pdf |access-date=2022-07-03 |url-status=live |archive-url=https://web.archive.org/web/20220703082408/http://ed-thelen.org/comp-hist/Zuse_Z1_and_Z3.pdf |archive-date=2022-07-03}} (12 पृष्ठ)</ref>
पाइपलाइनिंग का मौलिक उपयोग [[ILLIAC II]] प्रोजेक्ट और IBM स्ट्रेच प्रोजेक्ट में किया गया था, हालांकि एक सरल संस्करण का उपयोग पहले 1939 में [[Z1 (कंप्यूटर)]] और 1941 में [[Z3 (कंप्यूटर)]] में किया गया था।<ref name="Rojas_1997">{{cite journal |title=कोनराड ज़ूस की विरासत: Z1 और Z3 की वास्तुकला|author-last=Rojas |author-first=Raúl |author-link=Raúl Rojas |journal=[[IEEE Annals of the History of Computing]] |volume=19 |number=2 |date=April–June 1997 |pages=5–16 |doi=10.1109/85.586067 |url=http://ed-thelen.org/comp-hist/Zuse_Z1_and_Z3.pdf |access-date=2022-07-03 |url-status=live |archive-url=https://web.archive.org/web/20220703082408/http://ed-thelen.org/comp-hist/Zuse_Z1_and_Z3.pdf |archive-date=2022-07-03}} (12 पृष्ठ)</ref>


1970 के दशक के अंत में वेक्टर प्रोसेसर और ऐरे प्रोसेसर जैसे [[सुपर कंप्यूटर]]ों में पाइपलाइनिंग का काम गंभीरता से शुरू हुआ।{{Citation needed|date=March 2019}} शुरुआती सुपर कंप्यूटरों में से एक कंट्रोल डेटा कॉर्पोरेशन द्वारा निर्मित साइबर श्रृंखला थी। इसके मुख्य वास्तुकार, [[सेमुर क्रे]], बाद में क्रे रिसर्च के प्रमुख बने। क्रे ने गुणा और जोड़/घटाना दोनों कार्यों के लिए पाइपलाइनिंग का उपयोग करते हुए सुपर कंप्यूटर की एक्सएमपी लाइन विकसित की। बाद में, स्टार टेक्नोलॉजीज ने रोजर चेन द्वारा विकसित समानतावाद (समानांतर में काम करने वाले कई पाइपलाइन फ़ंक्शन) को जोड़ा। 1984 में, स्टार टेक्नोलॉजीज ने जेम्स ब्रैडली द्वारा विकसित पाइपलाइन डिवाइड सर्किट को जोड़ा। 1980 के दशक के मध्य तक, दुनिया भर में कई अलग-अलग कंपनियों द्वारा पाइपलाइनिंग का उपयोग किया जाने लगा।{{Citation needed|date=March 2019}}
1970 के दशक के अंत में वेक्टर प्रोसेसर और ऐरे प्रोसेसर जैसे [[सुपर कंप्यूटर|सुपर कंप्यूटरों]] में पाइपलाइनिंग का काम गंभीरता से प्रारंभ हुआ।{{Citation needed|date=March 2019}} प्रारंभिक सुपर कंप्यूटरों में से कंट्रोल डेटा कॉर्पोरेशन द्वारा निर्मित साइबर श्रृंखला थी। इसके मुख्य वास्तुकार, [[सेमुर क्रे]], बाद में क्रे रिसर्च के प्रमुख बने। क्रे ने गुणा और जोड़/घटाना दोनों कार्यों के लिए पाइपलाइनिंग का उपयोग करते हुए सुपर कंप्यूटर की एक्सएमपी लाइन विकसित किया था। बाद में, स्टार टेक्नोलॉजीज ने रोजर चेन द्वारा विकसित समानतावाद (समानांतर में काम करने वाले कई पाइपलाइन फ़ंक्शन) को जोड़ा। 1984 में, स्टार टेक्नोलॉजीज ने जेम्स ब्रैडली द्वारा विकसित पाइपलाइन डिवाइड सर्किट को जोड़ा। 1980 के दशक के मध्य तक, विश्व में कई अलग-अलग कंपनियों द्वारा पाइपलाइनिंग का उपयोग किया जाने लगा।{{Citation needed|date=March 2019}}


पाइपलाइनिंग सुपर कंप्यूटर तक ही सीमित नहीं थी। 1976 में, [[अमदहल कॉर्पोरेशन]] की 470 श्रृंखला के सामान्य प्रयोजन मेनफ्रेम में 7-चरणीय पाइपलाइन और एक पेटेंट शाखा भविष्यवाणी सर्किट था।{{Citation needed|date=March 2019}}
पाइपलाइनिंग सुपर कंप्यूटर तक ही सीमित नहीं थी। 1976 में, [[अमदहल कॉर्पोरेशन]] की 470 श्रृंखला के सामान्य प्रयोजन मेनफ्रेम में 7-चरणीय पाइपलाइन और पेटेंट शाखा भविष्यवाणी सर्किट था।{{Citation needed|date=March 2019}}


===खतरे===
===हैज़र्ड===
{{main article|Hazard (computer architecture)}}
{{main article|हैज़र्ड (कंप्यूटर वास्तुकला)}}


अनुक्रमिक निष्पादन का मॉडल मानता है कि प्रत्येक निर्देश अगले शुरू होने से पहले पूरा हो जाता है; यह धारणा पाइपलाइनयुक्त प्रोसेसर पर सत्य नहीं है। ऐसी स्थिति जहां अपेक्षित परिणाम समस्याग्रस्त हो, उसे हैज़र्ड (कंप्यूटर आर्किटेक्चर) के रूप में जाना जाता है। एक काल्पनिक प्रोसेसर के लिए निम्नलिखित दो रजिस्टर निर्देशों की कल्पना करें:
अनुक्रमिक निष्पादन का मॉडल मानता है कि प्रत्येक निर्देश अगले प्रारंभ होने से पहले पूरा हो जाता है; यह धारणा पाइपलाइनयुक्त प्रोसेसर पर सत्य नहीं है। ऐसी स्थिति जहां अपेक्षित परिणाम समस्याग्रस्त हो, उसे हैज़र्ड (कंप्यूटर आर्किटेक्चर) के रूप में जाना जाता है। काल्पनिक प्रोसेसर के लिए निम्नलिखित दो रजिस्टर निर्देशों की कल्पना करें:<syntaxhighlight lang="d">
1: R5 में 1 जोड़ें
1: add 1 to R5
2: R5 को R6 में कॉपी करें
2: copy R5 to R6
यदि प्रोसेसर में प्रारंभिक चित्रण (लेख की शुरुआत में 'बेसिक फाइव-स्टेज पाइपलाइन') में सूचीबद्ध 5 चरण हैं, तो निर्देश 1 समय पर प्राप्त किया जाएगा।<sub>1</sub> और इसका निष्पादन टी पर पूरा होगा<sub>5</sub>. निर्देश 2 टी पर प्राप्त किया जाएगा<sub>2</sub>और टी पर पूरा होगा<sub>6</sub>. पहला निर्देश टी पर अपने पांचवें चरण (रजिस्टर राइट बैक) के रूप में बढ़ी हुई संख्या को आर5 में जमा कर सकता है<sub>5</sub>. लेकिन दूसरे निर्देश को अपने दूसरे चरण (निर्देश डिकोड और रजिस्टर फ़ेच) में समय t पर R5 (R6 पर कॉपी करने के लिए) से नंबर मिल सकता है<sub>3</sub>. ऐसा लगता है कि पहले निर्देश ने तब तक मूल्य में वृद्धि नहीं की होगी। उपरोक्त कोड खतरे का आह्वान करता है।
</syntaxhighlight>यदि प्रोसेसर में प्रारंभिक चित्रण (लेख की प्रारंभ में 'बेसिक फाइव-स्टेज पाइपलाइन') में सूचीबद्ध 5 चरण हैं, तो निर्देश 1 को समय t<sub>1</sub> पर लाया जाएगा और इसका निष्पादन t<sub>5</sub> पर पूरा होगा। निर्देश 2 t<sub>2</sub> पर प्राप्त किया जाएगा और t<sub>6</sub> पर पूरा किया जाएगा। पहला निर्देश t<sub>5</sub> पर अपने पांचवें चरण (रजिस्टर राइट बैक) के रूप में बढ़ी हुई संख्या को R5 में जमा कर सकता है। लेकिन दूसरे निर्देश को समय t<sub>3</sub> पर अपने दूसरे चरण (निर्देश डिकोड और रजिस्टर फ़ेच) में R5 (R6 पर कॉपी करने के लिए) से नंबर मिल सकता है। ऐसा लगता है कि पहले निर्देश ने तब तक मूल्य में वृद्धि नहीं की होगी। उपरोक्त कोड खतरे का आह्वान करता है।


[[ संकलक ]] भाषा में कंप्यूटर प्रोग्राम लिखने से ये चिंताएँ नहीं बढ़ सकती हैं, क्योंकि कंपाइलर को मशीन कोड उत्पन्न करने के लिए डिज़ाइन किया जा सकता है जो खतरों से बचाता है।
[[ संकलक | संकलक]] भाषा में कंप्यूटर प्रोग्राम लिखने से ये चिंताएँ नहीं बढ़ सकती हैं, क्योंकि कंपाइलर को मशीन कोड उत्पन्न करने के लिए डिज़ाइन किया जा सकता है जो खतरों से बचाता है।


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


====समाधान====
====समाधान====
पाइपलाइन प्रोसेसर आमतौर पर अपेक्षा के अनुरूप काम करने के लिए तीन तकनीकों का उपयोग करते हैं जब प्रोग्रामर यह मानता है कि प्रत्येक निर्देश अगले शुरू होने से पहले पूरा हो जाता है:
पाइपलाइन प्रोसेसर सामान्यतः अपेक्षा के अनुरूप काम करने के लिए तीन तकनीकों का उपयोग करते हैं जब प्रोग्रामर यह मानता है कि प्रत्येक निर्देश अगले प्रारंभ होने से पहले पूरा हो जाता है:
*आवश्यक मान उपलब्ध होने तक पाइपलाइन रुक सकती है, या नए निर्देशों को शेड्यूल करना बंद कर सकती है। इसके परिणामस्वरूप पाइपलाइन में खाली स्थान या बुलबुले बन जाते हैं, जिनमें कोई कार्य नहीं किया जाता है।
*आवश्यक प्रारंभ उपलब्ध होने तक पाइपलाइन रुक सकती है, या नए निर्देशों को शेड्यूल करना बंद कर सकती है। इसके परिणामस्वरूप पाइपलाइन में खाली स्थान या बुलबुले बन जाते हैं, जिनमें कोई कार्य नहीं किया जाता है।
*एक अतिरिक्त डेटा पथ जोड़ा जा सकता है जो गणना किए गए मान को भविष्य के निर्देश के लिए पाइपलाइन में कहीं और रूट करता है, इससे पहले कि इसे उत्पन्न करने वाले निर्देश पूरी तरह से सेवानिवृत्त हो जाएं, एक प्रक्रिया जिसे [[संकार्य अग्रेषण]] कहा जाता है।<ref>{{cite web|url=http://www.csee.umbc.edu/~squire/cs411_l19.html |title=CMSC 411 Lecture 19, Pipelining Data Forwarding |publisher=University of Maryland Baltimore County Computer Science and Electrical Engineering Department |access-date=2020-01-22}}</ref><ref>{{Cite web |url=http://hpc.serc.iisc.ernet.in/~govind/hpc/L10-Pipeline.txt |title=उच्च प्रदर्शन कंप्यूटिंग, कक्षा 11 के नोट्स|publisher=hpc.serc.iisc.ernet.in |date=September 2000 |access-date=2014-02-08 |url-status=dead |archive-url=https://web.archive.org/web/20131227033204/http://hpc.serc.iisc.ernet.in/~govind/hpc/L10-Pipeline.txt |archive-date=2013-12-27 }}</ref>
*अतिरिक्त डेटा पथ जोड़ा जा सकता है जो गणना किए गए प्रारंभ को भविष्य के निर्देश के लिए पाइपलाइन में कहीं और रूट करता है, इससे पहले कि इसे उत्पन्न करने वाले निर्देश पूरी तरह से सेवानिवृत्त हो जाएं, प्रक्रिया जिसे [[संकार्य अग्रेषण]] कहा जाता है।<ref>{{cite web|url=http://www.csee.umbc.edu/~squire/cs411_l19.html |title=CMSC 411 Lecture 19, Pipelining Data Forwarding |publisher=University of Maryland Baltimore County Computer Science and Electrical Engineering Department |access-date=2020-01-22}}</ref><ref>{{Cite web |url=http://hpc.serc.iisc.ernet.in/~govind/hpc/L10-Pipeline.txt |title=उच्च प्रदर्शन कंप्यूटिंग, कक्षा 11 के नोट्स|publisher=hpc.serc.iisc.ernet.in |date=September 2000 |access-date=2014-02-08 |url-status=dead |archive-url=https://web.archive.org/web/20131227033204/http://hpc.serc.iisc.ernet.in/~govind/hpc/L10-Pipeline.txt |archive-date=2013-12-27 }}</ref>
*प्रोसेसर अन्य निर्देशों का पता लगा सकता है जो वर्तमान निर्देशों पर निर्भर नहीं हैं और जिन्हें बिना किसी खतरे के तुरंत निष्पादित किया जा सकता है, एक अनुकूलन जिसे आउट-ऑफ-ऑर्डर निष्पादन के रूप में जाना जाता है।
*प्रोसेसर अन्य निर्देशों का पता लगा सकता है जो वर्तमान निर्देशों पर निर्भर नहीं हैं और जिन्हें बिना किसी खतरे के तुरंत निष्पादित किया जा सकता है, अनुकूलन जिसे आउट-ऑफ-ऑर्डर निष्पादन के रूप में जाना जाता है।


===शाखाएँ===
===शाखाएँ===
सामान्य निर्देश अनुक्रम से बाहर की शाखा में अक्सर खतरा शामिल होता है। जब तक प्रोसेसर एक ही समय चक्र में शाखा को प्रभाव नहीं दे सकता, तब तक पाइपलाइन क्रमिक रूप से निर्देश प्राप्त करती रहेगी। ऐसे निर्देशों को प्रभावी होने की अनुमति नहीं दी जा सकती क्योंकि प्रोग्रामर ने नियंत्रण को प्रोग्राम के दूसरे भाग में स्थानांतरित कर दिया है।
सामान्य निर्देश अनुक्रम से बाहर की शाखा में अधिकांश खतरा सम्मिलित होता है। जब तक प्रोसेसर ही समय चक्र में शाखा को प्रभाव नहीं दे सकता, तब तक पाइपलाइन क्रमिक रूप से निर्देश प्राप्त करती रहेगी। ऐसे निर्देशों को प्रभावी होने की अनुमति नहीं दी जा सकती क्योंकि प्रोग्रामर ने नियंत्रण को प्रोग्राम के दूसरे भाग में स्थानांतरित कर दिया है।
 
सशर्त शाखा और भी अधिक समस्याग्रस्त है। प्रोसेसर ब्रांच हो भी सकता है और नहीं भी, यह उस गणना पर निर्भर करता है जो अभी तक नहीं हुई है। विभिन्न प्रोसेसर रुक सकते हैं, [[शाखा भविष्यवाणी]] का प्रयास कर सकते हैं, और दो अलग-अलग प्रोग्राम अनुक्रमों (सट्टा निष्पादन) को निष्पादित करना प्रारंभ करने में सक्षम हो सकते हैं, प्रत्येक यह मानते हुए कि शाखा ली गई है या नहीं ली गई है, गलत अनुमान से संबंधित सभी कार्यों को छोड़ दिया गया है।{{efn|Early pipelined processors without any of these heuristics, such as the [[PA-RISC]] processor of [[Hewlett-Packard]], dealt with hazards by simply warning the programmer; in this case, that one or more instructions following the branch would be executed whether or not the branch was taken. This could be useful; for instance, after computing a number in a register, a conditional branch could be followed by loading into the register a value more useful to subsequent computations in both the branch and the non-branch case.}}


एक सशर्त शाखा और भी अधिक समस्याग्रस्त है. प्रोसेसर ब्रांच हो भी सकता है और नहीं भी, यह उस गणना पर निर्भर करता है जो अभी तक नहीं हुई है। विभिन्न प्रोसेसर रुक सकते हैं, [[शाखा भविष्यवाणी]] का प्रयास कर सकते हैं, और दो अलग-अलग प्रोग्राम अनुक्रमों (सट्टा निष्पादन #उत्सुक निष्पादन) को निष्पादित करना शुरू करने में सक्षम हो सकते हैं, प्रत्येक यह मानते हुए कि शाखा ली गई है या नहीं ली गई है, गलत अनुमान से संबंधित सभी कार्यों को छोड़ दिया गया है।{{efn|Early pipelined processors without any of these heuristics, such as the [[PA-RISC]] processor of [[Hewlett-Packard]], dealt with hazards by simply warning the programmer; in this case, that one or more instructions following the branch would be executed whether or not the branch was taken. This could be useful; for instance, after computing a number in a register, a conditional branch could be followed by loading into the register a value more useful to subsequent computations in both the branch and the non-branch case.}}
शाखा भविष्यवाणी के कार्यान्वयन वाला प्रोसेसर जो सामान्यतः सही भविष्यवाणियां करता है, शाखा से प्रदर्शन दंड को कम कर सकता है। चूँकि, यदि शाखाओं की भविष्यवाणी खराब होती है, तो यह प्रोसेसर के लिए अधिक काम उत्पन्न कर सकता है, जैसे [[पाइपलाइन फ्लश]] कोड पथ को फ्लश करता है जिसने सही स्थान पर निष्पादन फिर से प्रारंभ करने से पहले निष्पादन प्रारंभ कर दिया है।


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


पाइपलाइन प्रोसेसर के लिए लिखे गए प्रोग्राम गति के संभावित नुकसान को कम करने के लिए जानबूझकर ब्रांचिंग से बचते हैं। उदाहरण के लिए, प्रोग्रामर सामान्य मामले को क्रमिक निष्पादन के साथ संभाल सकता है और केवल असामान्य मामलों का पता लगाने पर शाखा लगा सकता है। [[ कोड कवरेज़ ]] का विश्लेषण करने के लिए जीसीओवी जैसे कार्यक्रमों का उपयोग करने से प्रोग्रामर को यह मापने में मदद मिलती है कि वास्तव में कितनी बार विशेष शाखाएं निष्पादित की जाती हैं और कोड को अनुकूलित करने के लिए अंतर्दृष्टि प्राप्त होती है।
कुछ स्थितियों में एक प्रोग्रामर शाखा-मुक्त कोड के साथ सामान्य स्थिति और असामान्य स्थितियां दोनों को संभाल सकता है।
कुछ मामलों में, एक प्रोग्रामर शाखा (कंप्यूटर विज्ञान)#शाखा-मुक्त कोड|शाखा-मुक्त कोड के साथ सामान्य मामले और असामान्य मामले दोनों को संभाल सकता है।


===विशेष परिस्थितियाँ===
===विशेष परिस्थितियाँ===
; स्व-संशोधित कार्यक्रम
; स्व-संशोधित कार्यक्रम
: [[स्व-संशोधित कोड]] की तकनीक पाइपलाइन प्रोसेसर पर समस्याग्रस्त हो सकती है। इस तकनीक में, किसी प्रोग्राम का एक प्रभाव अपने स्वयं के आगामी निर्देशों को संशोधित करना है। यदि प्रोसेसर में एक निर्देश कैश है, तो मूल निर्देश पहले से ही [[प्रीफ़ेच इनपुट कतार]] में कॉपी किया जा सकता है और संशोधन प्रभावी नहीं होगा। कुछ प्रोसेसर जैसे कि [[ज़िलॉग Z280]] अपनी ऑन-चिप कैश मेमोरी को केवल-डेटा लाने के लिए, या अपने सामान्य मेमोरी एड्रेस स्पेस के हिस्से के रूप में कॉन्फ़िगर कर सकते हैं, और स्व-संशोधित निर्देशों के साथ ऐसी कठिनाइयों से बच सकते हैं।
:[[स्व-संशोधित कोड]] की प्रणाली पाइपलाइन प्रोसेसर पर समस्याग्रस्त हो सकती है। इस प्रणाली में, किसी प्रोग्राम का प्रभाव अपने स्वयं के आगामी निर्देशों को संशोधित करना है। यदि प्रोसेसर में निर्देश कैश है, तो मूल निर्देश पहले से ही [[प्रीफ़ेच इनपुट कतार|प्रीफ़ेच इनपुट पंक्ति]] में कॉपी किया जा सकता है और संशोधन प्रभावी नहीं होगा। कुछ प्रोसेसर जैसे कि [[ज़िलॉग Z280]] अपनी ऑन-चिप कैश मेमोरी को केवल-डेटा लाने के लिए, या अपने सामान्य मेमोरी एड्रेस स्पेस के भाग के रूप में कॉन्फ़िगर कर सकते हैं, और स्व-संशोधित निर्देशों के साथ ऐसी कठिनाइयों से बच सकते हैं।


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


==डिज़ाइन संबंधी विचार==
==डिज़ाइन संबंधी विचार==
; रफ़्तार
; रफ़्तार
: पाइपलाइनिंग प्रोसेसर के सभी हिस्सों को व्यस्त रखती है और प्रोसेसर द्वारा एक निश्चित समय में किए जाने वाले उपयोगी कार्यों की मात्रा बढ़ जाती है। पाइपलाइनिंग आम तौर पर प्रोसेसर के चक्र समय को कम करती है और निर्देशों के थ्रूपुट को बढ़ाती है। गति का लाभ उस हद तक कम हो जाता है जब निष्पादन #खतरों का सामना करता है जिसके लिए निष्पादन को उसकी आदर्श दर से नीचे धीमा करने की आवश्यकता होती है। एक गैर-पाइपलाइन प्रोसेसर एक समय में केवल एक ही निर्देश निष्पादित करता है। अगले निर्देश की शुरुआत में खतरों के आधार पर नहीं बल्कि बिना शर्त देरी की जा रही है।
:पाइपलाइनिंग प्रोसेसर के सभी भागों को व्यस्त रखती है और प्रोसेसर द्वारा निश्चित समय में किए जाने वाले उपयोगी कार्यों की मात्रा बढ़ जाती है। पाइपलाइनिंग सामान्यतः प्रोसेसर के चक्र समय को कम करती है और निर्देशों के थ्रूपुट को बढ़ाती है। गति का लाभ इस सीमा तक कम हो जाता है कि निष्पादन को ऐसे खतरों का सामना करना पड़ता है जिसके लिए निष्पादन को उसकी आदर्श दर से नीचे धीमा करने की आवश्यकता होती है। गैर-पाइपलाइन प्रोसेसर समय में केवल ही निर्देश निष्पादित करता है। अगले निर्देश की प्रारंभ में खतरों के आधार पर नहीं किन्तु बिना शर्त देरी की जा रही है।


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


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


; पूर्वानुमान
; पूर्वानुमान
Line 153: Line 153:
==सचित्र उदाहरण==
==सचित्र उदाहरण==


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


निष्पादन इस प्रकार है:
निष्पादन इस प्रकार है:
[[Image:Pipeline, 4 stage.svg|thumb|375px|सामान्य 4-चरण पाइपलाइन; रंगीन बक्से एक दूसरे से स्वतंत्र निर्देशों का प्रतिनिधित्व करते हैं]]
[[Image:Pipeline, 4 stage.svg|thumb|375px|सामान्य 4-चरण पाइपलाइन; रंगीन बक्से दूसरे से स्वतंत्र निर्देशों का प्रतिनिधित्व करते हैं]]
{| class="wikitable"
{| class="wikitable"
|-
|-
! Clock !! Execution
! घड़ी !! निष्पादन
|-
|-
| 0
| 0
|  
|
* Four instructions are waiting to be executed
* चार निर्देश निष्पादित होने की प्रतीक्षा कर रहे हैं
|-
|-
| 1
| 1
|
|
* The green instruction is fetched from memory
* हरा निर्देश मेमोरी से प्राप्त किया जाता है
|-
|-
| 2
| 2
|
|
* The green instruction is decoded
* हरा निर्देश डिकोड किया गया है
* The purple instruction is fetched from memory
* बैंगनी निर्देश स्मृति से प्राप्त किया जाता है
|-
|-
| 3
| 3
|
|
* The green instruction is executed (actual operation is performed)
* हरा निर्देश निष्पादित (वास्तविक ऑपरेशन निष्पादित किया जाता है) किया जाता है
* The purple instruction is decoded
* बैंगनी अनुदेश डिकोड किया गया है
* The blue instruction is fetched
* नीला निर्देश लाया गया है
|-
|-
| 4
| 4
|
|
* The green instruction's results are written back to the register file or memory
* हरे निर्देश के परिणाम वापस रजिस्टर फ़ाइल या मेमोरी में लिखे जाते हैं
* The purple instruction is executed
*बैंगनी अनुदेश क्रियान्वित किया जाता है
* The blue instruction is decoded
*नीला निर्देश डिकोड किया गया है
* The red instruction is fetched
*लाल अनुदेश लाया गया है
|-
|-
| 5
| 5
|
|
* The execution of green instruction is completed
* हरित अनुदेश का कार्यान्वयन पूरा हो गया है
* The purple instruction is written back
*बैंगनी निर्देश वापस लिखा गया है
* The blue instruction is executed
*नीला अनुदेश क्रियान्वित किया जाता है
* The red instruction is decoded
*लाल निर्देश डिकोड किया गया है
|-
|-
| 6
| 6
|
|
* The execution of purple instruction is completed
* बैंगनी अनुदेश का निष्पादन पूरा हो गया है
* The blue instruction is written back
*नीला अनुदेश वापस लिखा गया है
* The red instruction is executed
*लाल अनुदेश निष्पादित किया गया है
|-
|-
| 7
| 7
|
|
* The execution of blue instruction is completed
* नीले अनुदेश का निष्पादन पूरा हो गया है
* The red instruction is written back
*लाल अनुदेश वापस लिखा गया है
|-
|-
| 8
| 8
|
|
* The execution of red instruction is completed
* लाल अनुदेश का निष्पादन पूरा हो गया है
|-
|-
| 9
| 9
|  
|
* The execution of all four instructions is completed
* सभी चार अनुदेशों का निष्पादन पूरा हो गया है
|}
|}




===पाइपलाइन बुलबुला===
===पाइपलाइन बबल===
{{Main article|Bubble (computing)}}
{{Main article|बबल (कम्प्यूटिंग)}}
[[File:Pipeline, 4 stage with bubble.svg|thumb|350px|चक्र 3 में एक बुलबुला निष्पादन में देरी करता है।]]एक पाइपलाइन प्रोसेसर पाइपलाइन में रुकावट और बुलबुले बनाकर खतरों से निपट सकता है, जिसके परिणामस्वरूप एक या अधिक चक्र होते हैं जिनमें कुछ भी उपयोगी नहीं होता है।
[[File:Pipeline, 4 stage with bubble.svg|thumb|350px|चक्र 3 में बबल निष्पादन में देरी करता है।]]पाइपलाइन प्रोसेसर पाइपलाइन में रुकावट और बुलबुले बनाकर खतरों से निपट सकता है, जिसके परिणामस्वरूप या अधिक चक्र होते हैं जिनमें कुछ भी उपयोगी नहीं होता है।


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


बुलबुले (चित्रण में नीले अंडाकार) के कारण, प्रोसेसर की डिकोड सर्किटरी चक्र 3 के दौरान निष्क्रिय है। इसकी निष्पादन सर्किटरी चक्र 4 के दौरान निष्क्रिय है और इसकी राइट-बैक सर्किटरी चक्र 5 के दौरान निष्क्रिय है।
बुलबुले (चित्रण में नीले अंडाकार) के कारण, प्रोसेसर की डिकोड सर्किटरी चक्र 3 के समय निष्क्रिय है। इसकी निष्पादन सर्किटरी चक्र 4 के समय निष्क्रिय है और इसकी राइट-बैक सर्किटरी चक्र 5 के समय निष्क्रिय है।


जब बुलबुला पाइपलाइन से बाहर चला जाता है (चक्र 6 पर), तो सामान्य निष्पादन फिर से शुरू हो जाता है। परन्तु अभी सब एक कल्प लेट है। रंगों में दिखाए गए चार निर्देशों को पूरी तरह से निष्पादित करने में 7 के बजाय 8 चक्र (चक्र 1 से 8) लगेंगे।{{efn|Note, however, that, even with the bubble, the processor is still able - at least in this case - to run through the sequence of instructions much faster than a non-pipelined processor could.}}
जब बबल पाइपलाइन (चक्र 6 पर) से बाहर चला जाता है, तो सामान्य निष्पादन फिर से प्रारंभ हो जाता है। परन्तु अभी सब कल्प लेट है। रंगों में दिखाए गए चार निर्देशों को पूरी तरह से निष्पादित करने में 7 के अतिरिक्त 8 चक्र (चक्र 1 से 8) लगेंगे।{{efn|Note, however, that, even with the bubble, the processor is still able - at least in this case - to run through the sequence of instructions much faster than a non-pipelined processor could.}}


==यह भी देखें==
==यह भी देखें==
Line 246: Line 246:
{{CPU_technologies}}
{{CPU_technologies}}


{{DEFAULTSORT:Instruction Pipeline}}[[Category: सुपरस्केलर माइक्रोप्रोसेसर| सुपरस्केलर माइक्रोप्रोसेसर]] [[Category: अनुदेश प्रसंस्करण|पाइपलाइन]]
{{DEFAULTSORT:Instruction Pipeline}}
 
 


[[Category: Machine Translated Page]]
[[Category:All articles with unsourced statements|Instruction Pipeline]]
[[Category:Created On 10/07/2023]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Instruction Pipeline]]
[[Category:Articles with unsourced statements from March 2019|Instruction Pipeline]]
[[Category:Collapse templates|Instruction Pipeline]]
[[Category:Created On 10/07/2023|Instruction Pipeline]]
[[Category:Lua-based templates|Instruction Pipeline]]
[[Category:Machine Translated Page|Instruction Pipeline]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Instruction Pipeline]]
[[Category:Pages with script errors|Instruction Pipeline]]
[[Category:Sidebars with styles needing conversion|Instruction Pipeline]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Instruction Pipeline]]
[[Category:Templates generating microformats|Instruction Pipeline]]
[[Category:Templates that add a tracking category|Instruction Pipeline]]
[[Category:Templates that are not mobile friendly|Instruction Pipeline]]
[[Category:Templates that generate short descriptions|Instruction Pipeline]]
[[Category:Templates using TemplateData|Instruction Pipeline]]
[[Category:Wikipedia metatemplates|Instruction Pipeline]]
[[Category:अनुदेश प्रसंस्करण|पाइपलाइन]]
[[Category:सुपरस्केलर माइक्रोप्रोसेसर| सुपरस्केलर माइक्रोप्रोसेसर]]

Latest revision as of 12:24, 28 July 2023

Basic five-stage pipeline
Clock cycle
Instr. No.
1 2 3 4 5 6 7
1 IF ID EX MEM WB
2 IF ID EX MEM WB
3 IF ID EX MEM WB
4 IF ID EX MEM
5 IF ID EX
(IF = Instruction Fetch, ID = Instruction Decode, EX = Execute, MEM = Memory access, WB = Register write back).

In the fourth clock cycle (the green column), the earliest instruction is in MEM stage, and the latest instruction has not yet entered the pipeline.

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

संकल्पना और प्रेरणा

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

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

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

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

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

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

पाइपलाइनयुक्त कंप्यूटर का अधिकांश डिज़ाइन चरणों के बीच हस्तक्षेप को रोकता है और रुकावटों को कम करता है।

चरणों की संख्या

निर्भर चरणों की संख्या मशीन वास्तुकला के साथ भिन्न होती है। उदाहरण के लिए:

  • 1956-61 के आईबीएम स्ट्रेच परियोजना ने फ़ेच, डिकोड और एक्ज़िक्यूट जैसे शब्दों का प्रस्ताव रखा जो सामान्य हो गए हैं।
  • पारम्परिक आरआईएससी पाइपलाइन में सम्मिलित हैं:
    1. निर्देश प्राप्त करें
    2. अनुदेश डिकोड और रजिस्टर फ़ेच
    3. पालन करना
    4. मेमोरी एक्सेस
    5. रजिस्टर वापस लिखें
  • एटमेल एवीआर और पीआईसी माइक्रोकंट्रोलर प्रत्येक में दो चरण वाली पाइपलाइन होती है।
  • कई डिज़ाइनों में 7, 10 और यहां तक ​​कि 20 चरणों (जैसा कि इंटेल पेंटियम 4 में है) तक लंबी पाइपलाइन सम्मिलित हैं।
  • इंटेल के बाद के प्रेस्कॉट और सीडर मिल नेटबर्स्ट कोर का उपयोग पिछले पेंटियम 4 मॉडल में किया गया था और उनके पेंटियम डी और ज़ीऑन डेरिवेटिव में 31-चरण की लंबी पाइपलाइन है।
  • ज़ेलेरेटेड X10q नेटवर्क प्रोसेसर में हजार से अधिक चरण लंबी पाइपलाइन होती है, चूंकि इस स्थिति में इनमें से 200 चरण व्यक्तिगत रूप से प्रोग्राम किए गए निर्देशों के साथ स्वतंत्र सीपीयू का प्रतिनिधित्व करते हैं। शेष चरणों का उपयोग मेमोरी और ऑन-चिप फ़ंक्शन इकाइयों तक पहुंच को समन्वयित करने के लिए किया जाता है।[1][2]

चूंकि पाइपलाइन को गहरा (अधिक संख्या में निर्भर चरणों के साथ) बनाया गया है, दिए गए चरण को सरल सर्किटरी के साथ कार्यान्वित किया जा सकता है, जो प्रोसेसर घड़ी को तेजी से चलने दे सकता है।[3] ऐसी पाइपलाइनों को सुपरपाइपलाइन कहा जा सकता है।[4]

प्रोसेसर को पूरी तरह से पाइपलाइनयुक्त कहा जाता है यदि वह प्रत्येक चक्र पर निर्देश प्राप्त कर सके। इस प्रकार, यदि कुछ निर्देशों या शर्तों के लिए देरी की आवश्यकता होती है जो नए निर्देशों को लाने में बाधा डालती है, तो प्रोसेसर पूरी तरह से पाइपलाइन में नहीं है।

इतिहास

पाइपलाइनिंग का मौलिक उपयोग इलियाक II परियोजना और आईबीएम स्ट्रेच परियोजना में किया गया था, चूंकि सरल संस्करण का उपयोग पहले 1939 में Z1 (कंप्यूटर) और 1941 में Z3 (कंप्यूटर) में किया गया था।[5]

1970 के दशक के अंत में वेक्टर प्रोसेसर और ऐरे प्रोसेसर जैसे सुपर कंप्यूटरों में पाइपलाइनिंग का काम गंभीरता से प्रारंभ हुआ।[citation needed] प्रारंभिक सुपर कंप्यूटरों में से कंट्रोल डेटा कॉर्पोरेशन द्वारा निर्मित साइबर श्रृंखला थी। इसके मुख्य वास्तुकार, सेमुर क्रे, बाद में क्रे रिसर्च के प्रमुख बने। क्रे ने गुणा और जोड़/घटाना दोनों कार्यों के लिए पाइपलाइनिंग का उपयोग करते हुए सुपर कंप्यूटर की एक्सएमपी लाइन विकसित किया था। बाद में, स्टार टेक्नोलॉजीज ने रोजर चेन द्वारा विकसित समानतावाद (समानांतर में काम करने वाले कई पाइपलाइन फ़ंक्शन) को जोड़ा। 1984 में, स्टार टेक्नोलॉजीज ने जेम्स ब्रैडली द्वारा विकसित पाइपलाइन डिवाइड सर्किट को जोड़ा। 1980 के दशक के मध्य तक, विश्व में कई अलग-अलग कंपनियों द्वारा पाइपलाइनिंग का उपयोग किया जाने लगा।[citation needed]

पाइपलाइनिंग सुपर कंप्यूटर तक ही सीमित नहीं थी। 1976 में, अमदहल कॉर्पोरेशन की 470 श्रृंखला के सामान्य प्रयोजन मेनफ्रेम में 7-चरणीय पाइपलाइन और पेटेंट शाखा भविष्यवाणी सर्किट था।[citation needed]

हैज़र्ड

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

1: add 1 to R5
2: copy R5 to R6

यदि प्रोसेसर में प्रारंभिक चित्रण (लेख की प्रारंभ में 'बेसिक फाइव-स्टेज पाइपलाइन') में सूचीबद्ध 5 चरण हैं, तो निर्देश 1 को समय t1 पर लाया जाएगा और इसका निष्पादन t5 पर पूरा होगा। निर्देश 2 t2 पर प्राप्त किया जाएगा और t6 पर पूरा किया जाएगा। पहला निर्देश t5 पर अपने पांचवें चरण (रजिस्टर राइट बैक) के रूप में बढ़ी हुई संख्या को R5 में जमा कर सकता है। लेकिन दूसरे निर्देश को समय t3 पर अपने दूसरे चरण (निर्देश डिकोड और रजिस्टर फ़ेच) में R5 (R6 पर कॉपी करने के लिए) से नंबर मिल सकता है। ऐसा लगता है कि पहले निर्देश ने तब तक मूल्य में वृद्धि नहीं की होगी। उपरोक्त कोड खतरे का आह्वान करता है।

संकलक भाषा में कंप्यूटर प्रोग्राम लिखने से ये चिंताएँ नहीं बढ़ सकती हैं, क्योंकि कंपाइलर को मशीन कोड उत्पन्न करने के लिए डिज़ाइन किया जा सकता है जो खतरों से बचाता है।

समाधान

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

समाधान

पाइपलाइन प्रोसेसर सामान्यतः अपेक्षा के अनुरूप काम करने के लिए तीन तकनीकों का उपयोग करते हैं जब प्रोग्रामर यह मानता है कि प्रत्येक निर्देश अगले प्रारंभ होने से पहले पूरा हो जाता है:

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

शाखाएँ

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

सशर्त शाखा और भी अधिक समस्याग्रस्त है। प्रोसेसर ब्रांच हो भी सकता है और नहीं भी, यह उस गणना पर निर्भर करता है जो अभी तक नहीं हुई है। विभिन्न प्रोसेसर रुक सकते हैं, शाखा भविष्यवाणी का प्रयास कर सकते हैं, और दो अलग-अलग प्रोग्राम अनुक्रमों (सट्टा निष्पादन) को निष्पादित करना प्रारंभ करने में सक्षम हो सकते हैं, प्रत्येक यह मानते हुए कि शाखा ली गई है या नहीं ली गई है, गलत अनुमान से संबंधित सभी कार्यों को छोड़ दिया गया है।[lower-alpha 1]

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

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

कुछ स्थितियों में एक प्रोग्रामर शाखा-मुक्त कोड के साथ सामान्य स्थिति और असामान्य स्थितियां दोनों को संभाल सकता है।

विशेष परिस्थितियाँ

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

डिज़ाइन संबंधी विचार

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

सचित्र उदाहरण

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

निष्पादन इस प्रकार है:

सामान्य 4-चरण पाइपलाइन; रंगीन बक्से दूसरे से स्वतंत्र निर्देशों का प्रतिनिधित्व करते हैं
घड़ी निष्पादन
0
  • चार निर्देश निष्पादित होने की प्रतीक्षा कर रहे हैं
1
  • हरा निर्देश मेमोरी से प्राप्त किया जाता है
2
  • हरा निर्देश डिकोड किया गया है
  • बैंगनी निर्देश स्मृति से प्राप्त किया जाता है
3
  • हरा निर्देश निष्पादित (वास्तविक ऑपरेशन निष्पादित किया जाता है) किया जाता है
  • बैंगनी अनुदेश डिकोड किया गया है
  • नीला निर्देश लाया गया है
4
  • हरे निर्देश के परिणाम वापस रजिस्टर फ़ाइल या मेमोरी में लिखे जाते हैं
  • बैंगनी अनुदेश क्रियान्वित किया जाता है
  • नीला निर्देश डिकोड किया गया है
  • लाल अनुदेश लाया गया है
5
  • हरित अनुदेश का कार्यान्वयन पूरा हो गया है
  • बैंगनी निर्देश वापस लिखा गया है
  • नीला अनुदेश क्रियान्वित किया जाता है
  • लाल निर्देश डिकोड किया गया है
6
  • बैंगनी अनुदेश का निष्पादन पूरा हो गया है
  • नीला अनुदेश वापस लिखा गया है
  • लाल अनुदेश निष्पादित किया गया है
7
  • नीले अनुदेश का निष्पादन पूरा हो गया है
  • लाल अनुदेश वापस लिखा गया है
8
  • लाल अनुदेश का निष्पादन पूरा हो गया है
9
  • सभी चार अनुदेशों का निष्पादन पूरा हो गया है


पाइपलाइन बबल

चक्र 3 में बबल निष्पादन में देरी करता है।

पाइपलाइन प्रोसेसर पाइपलाइन में रुकावट और बुलबुले बनाकर खतरों से निपट सकता है, जिसके परिणामस्वरूप या अधिक चक्र होते हैं जिनमें कुछ भी उपयोगी नहीं होता है।

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

बुलबुले (चित्रण में नीले अंडाकार) के कारण, प्रोसेसर की डिकोड सर्किटरी चक्र 3 के समय निष्क्रिय है। इसकी निष्पादन सर्किटरी चक्र 4 के समय निष्क्रिय है और इसकी राइट-बैक सर्किटरी चक्र 5 के समय निष्क्रिय है।

जब बबल पाइपलाइन (चक्र 6 पर) से बाहर चला जाता है, तो सामान्य निष्पादन फिर से प्रारंभ हो जाता है। परन्तु अभी सब कल्प लेट है। रंगों में दिखाए गए चार निर्देशों को पूरी तरह से निष्पादित करने में 7 के अतिरिक्त 8 चक्र (चक्र 1 से 8) लगेंगे।[lower-alpha 2]

यह भी देखें

  • प्रतीक्षा स्थिति
  • क्लासिक आरआईएससी पाइपलाइन

टिप्पणियाँ

  1. Early pipelined processors without any of these heuristics, such as the PA-RISC processor of Hewlett-Packard, dealt with hazards by simply warning the programmer; in this case, that one or more instructions following the branch would be executed whether or not the branch was taken. This could be useful; for instance, after computing a number in a register, a conditional branch could be followed by loading into the register a value more useful to subsequent computations in both the branch and the non-branch case.
  2. Note, however, that, even with the bubble, the processor is still able - at least in this case - to run through the sequence of instructions much faster than a non-pipelined processor could.


संदर्भ

  1. Glaskowsky, Peter (Aug 18, 2003). "Xelerated's Xtraordinary NPU — World's First 40Gb/s Packet Processor Has 200 CPUs". Microprocessor Report. 18 (8): 12–14. Retrieved 20 March 2017.
  2. "Xelerated Brings Programmable 40 Gbits/S Technology to the Mainstream Ethernet". 31 May 2003.
  3. John Paul Shen, Mikko H. Lipasti (2004). आधुनिक प्रोसेसर डिज़ाइन. McGraw-Hill Professional. ISBN 9780070570641.
  4. Sunggu Lee (2000). कंप्यूटर और अन्य जटिल डिजिटल उपकरणों का डिज़ाइन. Prentice Hall. ISBN 9780130402677.
  5. Rojas, Raúl (April–June 1997). "कोनराड ज़ूस की विरासत: Z1 और Z3 की वास्तुकला" (PDF). IEEE Annals of the History of Computing. 19 (2): 5–16. doi:10.1109/85.586067. Archived (PDF) from the original on 2022-07-03. Retrieved 2022-07-03. (12 पृष्ठ)
  6. "CMSC 411 Lecture 19, Pipelining Data Forwarding". University of Maryland Baltimore County Computer Science and Electrical Engineering Department. Retrieved 2020-01-22.
  7. "उच्च प्रदर्शन कंप्यूटिंग, कक्षा 11 के नोट्स". hpc.serc.iisc.ernet.in. September 2000. Archived from the original on 2013-12-27. Retrieved 2014-02-08.


बाहरी संबंध