अनुदेश पाइपलाइनन, संकट व I/O अंतरापृष्ठ

पाइपलाइन किसी एक अनुदेश को तेज़ नहीं करती। वह अनुदेशों को अतिव्यापित करती है जिससे प्रत्येक k चक्र के बजाय प्रत्येक चक्र में एक पूर्ण होता है, और इस अध्याय का प्रत्येक प्रश्न उस आदर्श व वास्तविकता के अंतर के विषय में है। तीन तथ्य आदर्श तय करते हैं। घड़ी सबसे धीमे चरण से तय होती है, औसत से नहीं, अतः 2, 3, 4, 3 व 2 ns लेते चरणों की पाइपलाइन 4 ns पर चलती है और 14 ns क्रमिक पथ पर उसका आदर्श त्वरण 14/4 = 3.5 है — 5 नहीं, चाहे पाँच चरण हों। तत्पश्चात् लैच उपरिव्यय उसमें से खाता है: प्रति चरण 0.2 ns रजिस्टर विलंब जोड़ें और घड़ी 4.2 ns तथा त्वरण 3.33 हो जाता है। और परिमित अनुदेश-संख्या हेतु पाइपलाइन को भरना व खाली होना पड़ता है, अतः त्वरण nk/(k + n − 1) है, जो पाँच चरणों व सौ अनुदेशों हेतु 5 के बजाय 4.81 है — k के निकट केवल n बड़ा होने पर पहुँचता है। आदर्श व वास्तविकता को संकट पृथक् करते हैं, और वे तीन प्रकारों में आते हैं जिन्हें भिन्न रखना उपयोगी है क्योंकि उनके उपचार भिन्न हैं: संरचनात्मक संकट दो अनुदेशों का एक संसाधन चाहना है, जिसका उपचार उसे दोहराना; आँकड़ा संकट किसी अनुदेश को वह परिणाम चाहना है जो अभी लिखा नहीं, जिसका उपचार अधिकांशतः अग्रसारण; तथा नियंत्रण संकट वह शाखा है जिसका परिणाम अज्ञात है, जिसका उपचार केवल आंशिक, पूर्वानुमान से। उनकी लागत बढ़े CPI के रूप में गिनी जाती है: 20% अनुदेशों का एक चक्र रुकना व उनमें 15% का दो लेना CPI को 1 से 1.5 कर देता है, और पाइपलाइन का एक-तिहाई लाभ चला जाता है। अध्याय I/O पर समाप्त होता है, जहाँ वही अतिव्यापन तर्क कच्चे रूप में पुनः आता है — प्रति बाइट एक व्यवधान किलोबाइट हेतु CPU के हज़ारों चक्र लेता है, और DMA उसे एक व्यवस्था तथा प्रति अंतरण एक चुराए चक्र से बदल देता है।

घड़ी क्या है, तथा त्वरण वस्तुतः क्या है

2, 3, 4, 3 व 2 ns के चरणों वाली पाँच-चरणीय पाइपलाइन
राशिमानक्यों
अ-पाइपलाइनित प्रति अनुदेश समय14 nsचरण क्रम से चलते हैं: 2+3+4+3+2
पाइपलाइनित घड़ी आवर्त4 nsसबसे धीमे चरण से तय, औसत से नहीं
आदर्श त्वरण3.514 / 4 — पाँच चरणों के बावजूद 5 नहीं
प्रति चरण 0.2 ns लैच विलंब सहित3.33घड़ी 4.2 ns हो जाती है
100 अनुदेश, 5 समान चरणों हेतु त्वरण4.81nk/(k+n−1) = 500/104 — भरने व खाली होने की लागत
⚠️ चरणों की संख्या त्वरण नहीं है
तीन पृथक् चीज़ें वास्तविक त्वरण को k से नीचे खींचती हैं, और प्रश्न प्रायः उनमें ठीक एक लगाता है, अतः पढ़ें कि कौन-सी। असमान चरण: घड़ी सबसे धीमा चरण है, अतः बुरी तरह असंतुलित पाँच-चरणीय पाइपलाइन 3.5 त्वरण दे सकती है। लैच उपरिव्यय: चरणों के बीच वास्तविक रजिस्टर प्रत्येक चक्र में विलंब जोड़ते हैं, जो चरण अधिक होने पर अधिक महत्व रखता है — यही तय करता है कि पाइपलाइन कितनी गहरी करना सार्थक है। परिमित अनुदेश-संख्या: nk/(k + n − 1), k की ओर केवल n बढ़ने पर जाता है, अतः छोटे प्रस्फोटों को कम मिलता है। तीनों उस वाक्य से अनुपस्थित हैं कि "k-चरणीय पाइपलाइन k त्वरण देती है", जो केवल पूर्णतः संतुलित पाइपलाइन से निःशुल्क लैचों के साथ अनंत धारा हेतु सत्य है।

तीन संकट, तीन भिन्न उपचार

प्रत्येक संकट क्या है, तथा उसका वास्तविक उपचार क्या
संकटकारणउपचार
संरचनात्मकदो अनुदेशों को एक चक्र में वही हार्डवेयर चाहिएसंसाधन दोहराएँ — पृथक् अनुदेश व आँकड़ा स्मृति
आँकड़ा (RAW)अनुदेश वह रजिस्टर पढ़ता है जो पिछले ने लिखा नहींअग्रसारण अधिकांश हटाता है; लोड-प्रयोग युग्म फिर भी एक चक्र रुकता है
नियंत्रणशाखा हल होने तक अगला पता अज्ञातकेवल आंशिक उपचार — पूर्वानुमान, विलंब स्लॉट, शीघ्र हल
🧠 संकटों को बढ़े CPI के रूप में गिनें, चक्रों के रूप में नहीं
आदर्श पाइपलाइन का CPI = 1 है। प्रत्येक संकट अपनी बारंबारता गुणा अपना दंड जोड़ता है। यदि 20% अनुदेश ऐसे लोड हों जिनका परिणाम तुरंत प्रयुक्त हो, प्रत्येक एक चक्र रोकता, तो वह 0.20 जोड़ता है। यदि 15% शाखाएँ हों जो गलत पूर्वानुमान पर प्रत्येक दो चक्र लें, तो वह 0.30 जोड़ता है। CPI = 1 + 0.20 + 0.30 = 1.5, अतः मशीन अपनी आदर्श निर्गत का दो-तिहाई देती है और पाइपलाइन का लाभ चरण-संख्या के सुझाव से एक-तिहाई कम है। निरपेक्ष चक्रों के बजाय CPI में काम करना ही इन प्रश्नों को शीघ्र बनाता है, और वह उत्तर को कार्यक्रमों के बीच तुलनीय भी बनाता है — ठीक इसीलिए वास्तविक अभिकल्प-तर्क CPI में किए जाते हैं।

व्यवधान, DMA, तथा अंतर बड़ा क्यों है

प्रोग्राम्ड I/O में CPU स्थिति-रजिस्टर मतदान करता है, जो प्रतीक्षा में व्यय प्रत्येक चक्र व्यर्थ करता है। व्यवधान-चालित I/O उपकरण को बोलने देता है, परंतु CPU फिर भी प्रति अंतरित इकाई एक हैंडलर निष्पादित करता है: प्रति व्यवधान एक बाइट व प्रत्येक पर दस चक्र उपरिव्यय पर, 1 KB खंड हटाना 1024 × 10 = 10,240 चक्र लेता है। DMA अंतरण उस नियंत्रक को सौंप देता है जो खंड स्वयं हटाता है और अंत में एक बार व्यवधान करता है, अतः CPU एक व्यवस्था चुकाता है — मानें 500 चक्र — तथा प्रति शब्द एक चुराया बस चक्र: उसी किलोबाइट हेतु लगभग 1,524 चक्र, लगभग सात गुना सस्ता।

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

मुख्य बिंदु

  • पाइपलाइन घड़ी सबसे धीमा चरण तथा लैच विलंब है, चरणों का औसत कभी नहीं।
  • k चरणों से n अनुदेशों हेतु त्वरण nk/(k + n − 1) है, जो k की ओर केवल बड़े n पर जाता है।
  • असमान चरण, लैच उपरिव्यय व परिमित अनुदेश-संख्या प्रत्येक त्वरण को k से नीचे खींचते हैं।
  • संरचनात्मक संकट हार्डवेयर दोहराकर, आँकड़ा संकट अधिकांशतः अग्रसारण से, नियंत्रण संकट केवल आंशिक रूप से पूर्वानुमान से सुधरते हैं।
  • अग्रसारण लोड-प्रयोग रुकावट नहीं हटा सकता — मान ALU के बाद वाले चरण तक स्मृति से पढ़ा नहीं जाता।
  • संकटों को CPI के रूप में गिनें: 1 + बारंबारता × दंड, संकटों पर योग।
  • DMA प्रति इकाई एक व्यवधान को एक व्यवस्था तथा प्रति शब्द एक चुराए चक्र से बदलता है — किलोबाइट हेतु 10,240 के मुकाबले लगभग 1,524 चक्र।
  • DMA स्मृति सीधे लिखता है, अतः उन पंक्तियों को रखते राइट-बैक कैश को अवैध करना पड़ता है।

अभ्यास प्रश्न (8)

उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।

  1. पाँच-चरणीय पाइपलाइन के चरण-विलंब 2, 3, 4, 3 व 2 ns हैं तथा कोई लैच उपरिव्यय नहीं। अ-पाइपलाइनित कार्यान्वयन पर आदर्श त्वरण क्या है? (एक दशमलव स्थान।)

    संख्यात्मक उत्तर — मान टाइप करें।

    उत्तर देखें

    उत्तर: 3.5

    अ-पाइपलाइनित पथ चरणों को क्रम से चलाता है: 2+3+4+3+2 = प्रति अनुदेश 14 ns। पाइपलाइनित घड़ी सबसे धीमे चरण से तय होती है, 4 ns, अतः त्वरण 14/4 = 3.5 है। लुभावना उत्तर 5 है, चरणों की संख्या से, और वह केवल पूर्णतः संतुलित पाइपलाइन हेतु सही है — यहाँ 4 ns चरण प्रत्येक अन्य चरण को प्रत्येक चक्र के कुछ भाग में निष्क्रिय रहने पर विवश करता है, और वही निष्क्रियता सम्पूर्ण हानि है। इस पाइपलाइन को पाँच 2.8 ns चरणों में संतुलित करना 5 का पूरा गुणक पुनः प्राप्त कर लेता, और इसीलिए चरण-संतुलन वास्तविक अभिकल्प-कार्य है, परीक्षा की कृत्रिमता नहीं।
  2. समान चरणों वाली 5-चरणीय पाइपलाइन 100 अनुदेश निष्पादित करती है। अ-पाइपलाइनित मशीन पर उसका त्वरण निकटतम है:

    1. 5.00
    2. 4.81
    3. 4.00
    4. 20.0
    उत्तर देखें

    उत्तर: B — 4.81

    त्वरण = nk/(k + n − 1) = (100 × 5)/(5 + 100 − 1) = 500/104 = 4.81। 5 से कमी पाइपलाइन के भरने व खाली होने की लागत है: पहला अनुदेश फिर भी पाँचों चक्र लेता है, और अंतिम चार चक्र कोई नई पूर्णता नहीं देते। n बढ़ने पर हर, n के निकट जाता है और अनुपात k के निकट — n = 1000 पर वह 4.98 है — और इसीलिए k-गुना दावा लंबी अनुदेश-धाराओं हेतु कहा जाता है। विकल्प A उस अनंतस्पर्शी को उत्तर के रूप में उद्धृत करता है, और इस गणना की एकमात्र सर्वाधिक सामान्य त्रुटि वही है।
  3. आदर्श पाइपलाइन का CPI 1 है। किसी कार्यक्रम में 20% अनुदेश ऐसे लोड हैं जो प्रत्येक एक चक्र रोकते हैं, तथा 15% ऐसी शाखाएँ हैं जो प्रत्येक दो चक्र लेती हैं। प्रभावी CPI क्या है?

    संख्यात्मक उत्तर — मान टाइप करें।

    उत्तर देखें

    उत्तर: 1.5

    प्रत्येक संकट अपनी बारंबारता गुणा अपना दंड देता है: लोड 0.20 × 1 = 0.20 जोड़ते हैं, शाखाएँ 0.15 × 2 = 0.30। CPI = 1 + 0.20 + 0.30 = 1.5। अतः मशीन अपनी आदर्श निर्गत का 1/1.5 = दो-तिहाई प्राप्त करती है, और पाइपलाइन का एक-तिहाई लाभ संकटों पर व्यय हो चुका है — और अभिकल्प-तर्क वस्तुतः उसी संख्या पर घूमता है। नामित करने योग्य दो त्रुटियाँ: दंड से भारित किए बिना बारंबारताएँ जोड़ने पर 1.35, और आधार 1 भूलने पर 0.5, जो यह देखकर पकड़ा जाना चाहिए कि एकल-निर्गम पाइपलाइन हेतु 1 से कम CPI असंभव है।
  4. प्रचालक अग्रसारण अधिकांश आँकड़ा संकट हटा देता है, परंतु किस स्थिति की रुकावट नहीं हटा सकता?

    1. तुरंत बाद वाले अनुदेश द्वारा प्रयुक्त ALU परिणाम
    2. ऐसा लोड जिसका मान तुरंत बाद वाला अनुदेश प्रयोग करता है
    3. एक ही रजिस्टर लिखते दो अनुदेश
    4. ऐसी शाखा जिसका लक्ष्य लिया गया
    उत्तर देखें

    उत्तर: B — ऐसा लोड जिसका मान तुरंत बाद वाला अनुदेश प्रयोग करता है

    अग्रसारण तब काम करता है जब मान आवश्यकता के समय तक पाइपलाइन में कहीं विद्यमान हो। ALU परिणाम निष्पादन चरण के अंत में विद्यमान होता है, अतः उसे सीधे अगले अनुदेश के निष्पादन चरण को भेजा जा सकता है — कोई रुकावट नहीं (A सुधर जाता है)। परंतु लोड के पास स्मृति चरण के अंत तक उसका मान नहीं होता, ALU से एक चरण बाद, अतः उसके तुरंत बाद वाले अनुदेश को मान उसके कहीं विद्यमान होने से पूर्व चाहिए: अग्रसारण के पास अग्रसारित करने योग्य कुछ नहीं, और एक चक्र की रुकावट अपरिहार्य है। यह लोड-प्रयोग संकट है, और इसीलिए संकलक अनुदेशों को पुनर्क्रमित करके लोड व उसके प्रयोग के बीच कुछ उपयोगी रखते हैं। विकल्प D नियंत्रण संकट है, भिन्न श्रेणी जिसका उपचार भिन्न है।
  5. संरचनात्मक संकट का सर्वोत्तम समाधान है:

    1. प्रचालक अग्रसारण
    2. शाखा पूर्वानुमान
    3. विवादित संसाधन को दोहराना या पाइपलाइन करना
    4. संकलक में अनुदेश पुनर्क्रमण
    उत्तर देखें

    उत्तर: C — विवादित संसाधन को दोहराना या पाइपलाइन करना

    संरचनात्मक संकट हार्डवेयर की कमी है — दो अनुदेशों को उसी चक्र में वही इकाई चाहिए — अतः उपचार अधिक हार्डवेयर है: पृथक् अनुदेश व आँकड़ा स्मृतियाँ (और ठीक इसीलिए पाइपलाइनित मशीन में विभाजित L1 कैश होते हैं), या एक-चक्रीय के बजाय पाइपलाइनित गुणक। अग्रसारण आँकड़ा संकटों को सँभालता है और पूर्वानुमान नियंत्रण संकटों को; प्रत्येक भिन्न प्रश्न का सही उत्तर है, और तीनों उपचार परस्पर विनिमेय नहीं हैं। संकलक पुनर्क्रमण संरचनात्मक संकट की लागत छिपा सकता है परंतु विवाद हटा नहीं सकता, क्योंकि संसाधन तब भी एकल है।
  6. व्यवधान-चालित I/O से 1 KB खंड को एक-एक बाइट अंतरित करने में प्रति बाइट 10 CPU चक्र हैंडलर उपरिव्यय लगता है। सम्पूर्ण अंतरण कितने CPU चक्र लेता है?

    संख्यात्मक उत्तर — मान टाइप करें।

    उत्तर देखें

    उत्तर: 10240

    1 KB, 1024 बाइट है, प्रत्येक पर एक व्यवधान, प्रत्येक पर दस चक्र: 1024 × 10 = 10,240 चक्र। यह आँकड़ा इसलिए साथ रखने योग्य है कि उसकी तुलना किससे होती है — उसी खंड पर DMA कुछ सौ चक्रों की एक व्यवस्था तथा प्रति शब्द एक चुराया बस चक्र लेता है, कुल लगभग 1,524 चक्र, और लगभग सात गुना अंतर ही मशीन पर DMA नियंत्रक रखने का सम्पूर्ण औचित्य है। वही तुलना यह कारण भी है कि व्यवधान-चालित I/O टिका हुआ है: कभी-कभार एक बाइट देते उपकरण हेतु, जैसे कुंजीपटल, 10 चक्र कुछ नहीं और DMA व्यवस्था शुद्ध उपरिव्यय होती।
  7. DMA के विषय में निम्नलिखित में कौन सत्य हैं? (एक से अधिक सही हो सकते हैं।)

    1. चक्र-चोरी मोड में CPU चुराए चक्रों के बीच निष्पादन जारी रखता है
    2. वह अंतरित पतों हेतु राइट-बैक कैश में बासी आँकड़े छोड़ सकता है
    3. वह प्रति अंतरित बाइट एक बार CPU को व्यवधान करता है
    4. उसे अंतरण-चक्र निष्पादित करने हेतु CPU चाहिए
    उत्तर देखें

    उत्तर: A — चक्र-चोरी मोड में CPU चुराए चक्रों के बीच निष्पादन जारी रखता है; B — वह अंतरित पतों हेतु राइट-बैक कैश में बासी आँकड़े छोड़ सकता है

    A व B। चक्र-चोरी बस को एक समय में एक चक्र लेती है, अतः CPU चलता रहता है सिवाय जब उसे चुराए चक्र में बस चाहिए (A) — यही DMA व प्रोसेसर को सीधे अवरुद्ध करने का अंतर है। और चूँकि नियंत्रक मुख्य स्मृति सीधे लिखता है, उन पंक्तियों को रखता कैश अब पुराना है, और राइट-बैक नीति में उसका अर्थ है कि बासी प्रतिलिपि अवैध करनी होगी अन्यथा CPU पुराना मान पढ़ेगा (B) — संगति समस्या, और प्रश्न द्वारा इस अध्याय को कैश अध्याय से जोड़ने का सामान्य तरीका। C व D क्रमशः व्यवधान-चालित व प्रोग्राम्ड I/O के वर्णन हैं, और ठीक उन्हीं को बदलने हेतु DMA है: वह खंड के अंत में एक बार व्यवधान करता है, और चक्र CPU नहीं, नियंत्रक चलाता है।
  8. 2, 3, 4, 3, 2 ns चरणों वाली पाइपलाइन में प्रति चरण 0.2 ns लैच विलंब जोड़ने पर त्वरण 3.5 से बदलकर लगभग हो जाता है:

    1. 3.33
    2. 3.50
    3. 2.80
    4. 4.20
    उत्तर देखें

    उत्तर: A — 3.33

    लैच विलंब प्रति चक्र एक बार चुकाया जाता है, प्रति अनुदेश नहीं, अतः वह घड़ी-आवर्त पर पड़ता है: घड़ी 4 + 0.2 = 4.2 ns हो जाती है और त्वरण 14/4.2 = 3.33। प्रश्न का अभिप्राय यह है कि इससे गहन पाइपलाइनों के विषय में क्या निकलता है: प्रत्येक अतिरिक्त चरण सबसे लंबा चरण छोटा करता है पर प्रत्येक चक्र में एक और लैच विलंब जोड़ता है, अतः त्वरण बढ़ता है, शिखर पर पहुँचता है, फिर गिरता है। वही सौदा कारण है कि प्रोसेसरों की पाइपलाइनें गहरी होना बंद हुईं और कोर बढ़ने लगे। विकल्प D नई घड़ी-आवर्त को त्वरण समझ लेता है, जो केवल मात्रकों से पकड़ने योग्य है।