अनुदेश पाइपलाइनन, संकट व I/O अंतरापृष्ठ
घड़ी क्या है, तथा त्वरण वस्तुतः क्या है
| राशि | मान | क्यों |
|---|---|---|
| अ-पाइपलाइनित प्रति अनुदेश समय | 14 ns | चरण क्रम से चलते हैं: 2+3+4+3+2 |
| पाइपलाइनित घड़ी आवर्त | 4 ns | सबसे धीमे चरण से तय, औसत से नहीं |
| आदर्श त्वरण | 3.5 | 14 / 4 — पाँच चरणों के बावजूद 5 नहीं |
| प्रति चरण 0.2 ns लैच विलंब सहित | 3.33 | घड़ी 4.2 ns हो जाती है |
| 100 अनुदेश, 5 समान चरणों हेतु त्वरण | 4.81 | nk/(k+n−1) = 500/104 — भरने व खाली होने की लागत |
तीन संकट, तीन भिन्न उपचार
| संकट | कारण | उपचार |
|---|---|---|
| संरचनात्मक | दो अनुदेशों को एक चक्र में वही हार्डवेयर चाहिए | संसाधन दोहराएँ — पृथक् अनुदेश व आँकड़ा स्मृति |
| आँकड़ा (RAW) | अनुदेश वह रजिस्टर पढ़ता है जो पिछले ने लिखा नहीं | अग्रसारण अधिकांश हटाता है; लोड-प्रयोग युग्म फिर भी एक चक्र रुकता है |
| नियंत्रण | शाखा हल होने तक अगला पता अज्ञात | केवल आंशिक उपचार — पूर्वानुमान, विलंब स्लॉट, शीघ्र हल |
व्यवधान, DMA, तथा अंतर बड़ा क्यों है
प्रोग्राम्ड I/O में CPU स्थिति-रजिस्टर मतदान करता है, जो प्रतीक्षा में व्यय प्रत्येक चक्र व्यर्थ करता है। व्यवधान-चालित I/O उपकरण को बोलने देता है, परंतु CPU फिर भी प्रति अंतरित इकाई एक हैंडलर निष्पादित करता है: प्रति व्यवधान एक बाइट व प्रत्येक पर दस चक्र उपरिव्यय पर, 1 KB खंड हटाना 1024 × 10 = 10,240 चक्र लेता है। DMA अंतरण उस नियंत्रक को सौंप देता है जो खंड स्वयं हटाता है और अंत में एक बार व्यवधान करता है, अतः CPU एक व्यवस्था चुकाता है — मानें 500 चक्र — तथा प्रति शब्द एक चुराया बस चक्र: उसी किलोबाइट हेतु लगभग 1,524 चक्र, लगभग सात गुना सस्ता।
मुख्य बिंदु
- पाइपलाइन घड़ी सबसे धीमा चरण तथा लैच विलंब है, चरणों का औसत कभी नहीं।
- k चरणों से n अनुदेशों हेतु त्वरण nk/(k + n − 1) है, जो k की ओर केवल बड़े n पर जाता है।
- असमान चरण, लैच उपरिव्यय व परिमित अनुदेश-संख्या प्रत्येक त्वरण को k से नीचे खींचते हैं।
- संरचनात्मक संकट हार्डवेयर दोहराकर, आँकड़ा संकट अधिकांशतः अग्रसारण से, नियंत्रण संकट केवल आंशिक रूप से पूर्वानुमान से सुधरते हैं।
- अग्रसारण लोड-प्रयोग रुकावट नहीं हटा सकता — मान ALU के बाद वाले चरण तक स्मृति से पढ़ा नहीं जाता।
- संकटों को CPI के रूप में गिनें: 1 + बारंबारता × दंड, संकटों पर योग।
- DMA प्रति इकाई एक व्यवधान को एक व्यवस्था तथा प्रति शब्द एक चुराए चक्र से बदलता है — किलोबाइट हेतु 10,240 के मुकाबले लगभग 1,524 चक्र।
- DMA स्मृति सीधे लिखता है, अतः उन पंक्तियों को रखते राइट-बैक कैश को अवैध करना पड़ता है।
अभ्यास प्रश्न (8)
उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।
पाँच-चरणीय पाइपलाइन के चरण-विलंब 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 का पूरा गुणक पुनः प्राप्त कर लेता, और इसीलिए चरण-संतुलन वास्तविक अभिकल्प-कार्य है, परीक्षा की कृत्रिमता नहीं।समान चरणों वाली 5-चरणीय पाइपलाइन 100 अनुदेश निष्पादित करती है। अ-पाइपलाइनित मशीन पर उसका त्वरण निकटतम है:
उत्तर देखें
उत्तर: 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 उस अनंतस्पर्शी को उत्तर के रूप में उद्धृत करता है, और इस गणना की एकमात्र सर्वाधिक सामान्य त्रुटि वही है।आदर्श पाइपलाइन का 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 असंभव है।प्रचालक अग्रसारण अधिकांश आँकड़ा संकट हटा देता है, परंतु किस स्थिति की रुकावट नहीं हटा सकता?
उत्तर देखें
उत्तर: B — ऐसा लोड जिसका मान तुरंत बाद वाला अनुदेश प्रयोग करता है
अग्रसारण तब काम करता है जब मान आवश्यकता के समय तक पाइपलाइन में कहीं विद्यमान हो। ALU परिणाम निष्पादन चरण के अंत में विद्यमान होता है, अतः उसे सीधे अगले अनुदेश के निष्पादन चरण को भेजा जा सकता है — कोई रुकावट नहीं (A सुधर जाता है)। परंतु लोड के पास स्मृति चरण के अंत तक उसका मान नहीं होता, ALU से एक चरण बाद, अतः उसके तुरंत बाद वाले अनुदेश को मान उसके कहीं विद्यमान होने से पूर्व चाहिए: अग्रसारण के पास अग्रसारित करने योग्य कुछ नहीं, और एक चक्र की रुकावट अपरिहार्य है। यह लोड-प्रयोग संकट है, और इसीलिए संकलक अनुदेशों को पुनर्क्रमित करके लोड व उसके प्रयोग के बीच कुछ उपयोगी रखते हैं। विकल्प D नियंत्रण संकट है, भिन्न श्रेणी जिसका उपचार भिन्न है।संरचनात्मक संकट का सर्वोत्तम समाधान है:
उत्तर देखें
उत्तर: C — विवादित संसाधन को दोहराना या पाइपलाइन करना
संरचनात्मक संकट हार्डवेयर की कमी है — दो अनुदेशों को उसी चक्र में वही इकाई चाहिए — अतः उपचार अधिक हार्डवेयर है: पृथक् अनुदेश व आँकड़ा स्मृतियाँ (और ठीक इसीलिए पाइपलाइनित मशीन में विभाजित L1 कैश होते हैं), या एक-चक्रीय के बजाय पाइपलाइनित गुणक। अग्रसारण आँकड़ा संकटों को सँभालता है और पूर्वानुमान नियंत्रण संकटों को; प्रत्येक भिन्न प्रश्न का सही उत्तर है, और तीनों उपचार परस्पर विनिमेय नहीं हैं। संकलक पुनर्क्रमण संरचनात्मक संकट की लागत छिपा सकता है परंतु विवाद हटा नहीं सकता, क्योंकि संसाधन तब भी एकल है।व्यवधान-चालित I/O से 1 KB खंड को एक-एक बाइट अंतरित करने में प्रति बाइट 10 CPU चक्र हैंडलर उपरिव्यय लगता है। सम्पूर्ण अंतरण कितने CPU चक्र लेता है?
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 10240
1 KB, 1024 बाइट है, प्रत्येक पर एक व्यवधान, प्रत्येक पर दस चक्र: 1024 × 10 = 10,240 चक्र। यह आँकड़ा इसलिए साथ रखने योग्य है कि उसकी तुलना किससे होती है — उसी खंड पर DMA कुछ सौ चक्रों की एक व्यवस्था तथा प्रति शब्द एक चुराया बस चक्र लेता है, कुल लगभग 1,524 चक्र, और लगभग सात गुना अंतर ही मशीन पर DMA नियंत्रक रखने का सम्पूर्ण औचित्य है। वही तुलना यह कारण भी है कि व्यवधान-चालित I/O टिका हुआ है: कभी-कभार एक बाइट देते उपकरण हेतु, जैसे कुंजीपटल, 10 चक्र कुछ नहीं और DMA व्यवस्था शुद्ध उपरिव्यय होती।DMA के विषय में निम्नलिखित में कौन सत्य हैं? (एक से अधिक सही हो सकते हैं।)
उत्तर देखें
उत्तर: A — चक्र-चोरी मोड में CPU चुराए चक्रों के बीच निष्पादन जारी रखता है; B — वह अंतरित पतों हेतु राइट-बैक कैश में बासी आँकड़े छोड़ सकता है
A व B। चक्र-चोरी बस को एक समय में एक चक्र लेती है, अतः CPU चलता रहता है सिवाय जब उसे चुराए चक्र में बस चाहिए (A) — यही DMA व प्रोसेसर को सीधे अवरुद्ध करने का अंतर है। और चूँकि नियंत्रक मुख्य स्मृति सीधे लिखता है, उन पंक्तियों को रखता कैश अब पुराना है, और राइट-बैक नीति में उसका अर्थ है कि बासी प्रतिलिपि अवैध करनी होगी अन्यथा CPU पुराना मान पढ़ेगा (B) — संगति समस्या, और प्रश्न द्वारा इस अध्याय को कैश अध्याय से जोड़ने का सामान्य तरीका। C व D क्रमशः व्यवधान-चालित व प्रोग्राम्ड I/O के वर्णन हैं, और ठीक उन्हीं को बदलने हेतु DMA है: वह खंड के अंत में एक बार व्यवधान करता है, और चक्र CPU नहीं, नियंत्रक चलाता है।2, 3, 4, 3, 2 ns चरणों वाली पाइपलाइन में प्रति चरण 0.2 ns लैच विलंब जोड़ने पर त्वरण 3.5 से बदलकर लगभग हो जाता है:
उत्तर देखें
उत्तर: A — 3.33
लैच विलंब प्रति चक्र एक बार चुकाया जाता है, प्रति अनुदेश नहीं, अतः वह घड़ी-आवर्त पर पड़ता है: घड़ी 4 + 0.2 = 4.2 ns हो जाती है और त्वरण 14/4.2 = 3.33। प्रश्न का अभिप्राय यह है कि इससे गहन पाइपलाइनों के विषय में क्या निकलता है: प्रत्येक अतिरिक्त चरण सबसे लंबा चरण छोटा करता है पर प्रत्येक चक्र में एक और लैच विलंब जोड़ता है, अतः त्वरण बढ़ता है, शिखर पर पहुँचता है, फिर गिरता है। वही सौदा कारण है कि प्रोसेसरों की पाइपलाइनें गहरी होना बंद हुईं और कोर बढ़ने लगे। विकल्प D नई घड़ी-आवर्त को त्वरण समझ लेता है, जो केवल मात्रकों से पकड़ने योग्य है।