कैश, मुख्य स्मृति व द्वितीयक संचयन
पता-विभाजन, तथा वह टैग जो बढ़ता है
एक कैश लें और केवल उसकी सहचारिता बदलें: 32-बिट पता, 64 KB कैश तथा 32-बाइट खंड, अतः खंड-विचलन 5 बिट है और कैश 64 KB / 32 B = 2048 पंक्तियाँ रखता है। समुच्चयों की संख्या 2048 को सहचारिता से भाग देकर मिलती है, अनुक्रमणिका log₂(समुच्चय) है, और टैग 32 में से शेष दो घटाकर।
| मानचित्रण | समुच्चय | अनुक्रमणिका बिट | टैग बिट |
|---|---|---|---|
| प्रत्यक्ष-मानचित्रित (1-वे) | 2048 | 11 | 16 |
| 4-वे समुच्चय सहचारी | 512 | 9 | 18 |
| पूर्णतः सहचारी | 1 | 0 | 27 |
औसत पहुँच-समय, तथा स्थानीय बनाम वैश्विक चूक-दर
एक स्तर हेतु, AMAT = हिट समय + चूक दर × चूक दंड। 1 ns हिट, 5% चूक-दर व 100 ns दंड के साथ, वह 1 + 0.05 × 100 = 6 ns है। दो स्तरों हेतु वही सूत्र नेस्ट होता है: AMAT = t(L1) + m(L1) × [t(L2) + m(L2) × t(स्मृति)]। 10% चूकते 1 ns L1, अपने तक पहुँचने वाले का 20% चूकते 10 ns L2, तथा 100 ns स्मृति के साथ: 1 + 0.10 × (10 + 0.20 × 100) = 4 ns — एक-स्तरीय स्थिति से तेज़, और स्तर जोड़ने का अभिप्राय वही है।
| नीति | लेखन हिट पर | लागत |
|---|---|---|
| राइट-थ्रू | कैश तथा स्मृति दोनों अद्यतन | प्रत्येक लेखन पर स्मृति-यातायात; डर्टी बिट नहीं चाहिए |
| राइट-बैक | केवल कैश अद्यतन, उसे डर्टी चिह्नित | निष्कासन पर स्मृति एक बार लिखी; प्रति पंक्ति डर्टी बिट चाहिए |
द्वितीयक संचयन अनुक्रम पूर्ण करता है, और उसका पहुँच-समय तीन असंबद्ध चीज़ों का योग है: शीर्ष हिलाने हेतु खोज-समय, सेक्टर को घुमाकर लाने हेतु घूर्णन-विलंबता, तथा बाइटों हेतु अंतरण-समय। औसत घूर्णन-विलंबता आधा चक्कर है, अतः 7200 rpm पर वह 0.5 × 60/7200 से = 4.17 ms है — जानने योग्य आँकड़ा, क्योंकि अभ्यर्थी उसी पद को सर्वाधिक बार छोड़ते हैं। 8 ms खोज तथा वह विलंबता तथा 100 MB/s पर 4 KB मिलकर लगभग 12.2 ms होते हैं, और उत्तर का आकार ही शिक्षा है: अंतरण पूर्णांकन-त्रुटि है और यांत्रिकी प्रभावी है।
मुख्य बिंदु
- क्षेत्र हर बार एक ही क्रम में रखें: खंड-विचलन खंड-आकार से, अनुक्रमणिका समुच्चय-संख्या से, टैग शेष।
- नियत कैश आकार हेतु सहचारिता बढ़ाना अनुक्रमणिका-बिट घटाता है और अतः टैग बढ़ाता है — 1-वे, 4-वे, पूर्ण हेतु 16, 18, 27 बिट।
- सहचारिता कम संघर्ष-चूक देती है और टैग संचयन तथा तुलनित्रों की कीमत लेती है, इसीलिए कैश 4- या 8-वे पर रुकते हैं।
- AMAT = हिट समय + चूक दर × चूक दंड, और दो स्तरों हेतु वही सूत्र नेस्ट होता है।
- स्थानीय चूक-दर उस स्तर तक पहुँचने वाली पहुँचों की है; वैश्विक दर सभी पहुँचों की — 10% × 20% = 2%।
- राइट-थ्रू को डर्टी बिट नहीं चाहिए और वह हर बार स्मृति लिखता है; राइट-बैक को चाहिए और वह निष्कासन पर लिखता है।
- डिस्क समय खोज + घूर्णन-विलंबता + अंतरण है; 7200 rpm पर औसत विलंबता 4.17 ms है।
अभ्यास प्रश्न (8)
उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।
64 KB, 4-वे समुच्चय-सहचारी कैश में 32-बाइट खंड व 32-बिट पता है। प्रत्येक पंक्ति को कितने टैग बिट चाहिए?
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 18
32-बाइट खंड 5-बिट विचलन देता है। कैश 64 KB / 32 B = 2048 पंक्तियाँ रखता है, और 4-वे समूहन 2048 / 4 = 512 समुच्चय बनाता है, अतः अनुक्रमणिका log₂512 = 9 बिट। टैग 32 − 5 − 9 = 18 बिट। स्वयं को जाँचने योग्य संख्या उसी कैश का प्रत्यक्ष-मानचित्रित संस्करण है, जिसमें 2048 समुच्चय, 11-बिट अनुक्रमणिका व 16-बिट टैग है: सहचारिता बढ़ाने ने दो बिट अनुक्रमणिका से टैग में भेजे। यदि सहचारिता बढ़ने पर आपका उत्तर घटा, तो अनुक्रमणिका व टैग आपस में बदल गए हैं।नियत क्षमता व खंड-आकार के कैश हेतु सहचारिता बढ़ाने से:
उत्तर देखें
उत्तर: B — अनुक्रमणिका बिट घटते हैं व टैग बिट बढ़ते हैं
क्षमता व खंड-आकार पंक्तियों की संख्या नियत करते हैं, अतः सहचारिता बढ़ाना केवल समुच्चयों की संख्या घटा सकता है — और अनुक्रमणिका ठीक उतनी चौड़ी है जितनी समुच्चय चुनने हेतु आवश्यक। कम समुच्चय का अर्थ कम अनुक्रमणिका-बिट, और चूँकि पता-लंबाई नियत है, अनुक्रमणिका से हटा प्रत्येक बिट टैग में आ जाता है। विकल्प A वही अंतर्ज्ञान है जिसके साथ अधिकांश अभ्यर्थी आते हैं, इस तर्क पर कि "अधिक सहचारिता का अर्थ देखने के अधिक स्थान, अतः चौड़ी अनुक्रमणिका"; विपरीत सत्य है, क्योंकि सहचारिता समुच्चय जोड़ने के बजाय समुच्चय के भीतर अधिक पंक्तियाँ रखती है। विकल्प D नियत पता-लंबाई हेतु असंभव है — तीनों क्षेत्रों का योग सदा उसी के बराबर होना चाहिए।L1 का हिट समय 1 ns व चूक-दर 10% है। L2 का हिट समय 10 ns है और वह अपने तक पहुँचने वाली पहुँचों का 20% चूकता है। मुख्य स्मृति 100 ns लेती है। औसत स्मृति पहुँच-समय ns में क्या है?
संख्यात्मक उत्तर — मान टाइप करें।
उत्तर देखें
उत्तर: 4
सूत्र नेस्ट होता है: AMAT = 1 + 0.10 × (10 + 0.20 × 100) = 1 + 0.10 × 30 = 4 ns। 20%, L2 की स्थानीय चूक-दर है — उन पहुँचों की जो L2 तक पहुँचती हैं — और ठीक वही कोष्ठक के भीतर आती है। उसे वैश्विक दर मानकर 1 + 0.10 × 10 + 0.20 × 100 लिखने पर 22 ns मिलता है, और L2 के दंड को उसके हिट समय में जोड़ने के बजाय उसका स्थान लेने वाला मानने पर 3 ns; दोनों सामान्य हैं। यह भी ध्यान दें कि स्तर जोड़ने से लाभ हुआ: उसी L1 व 100 ns दंड वाला एक-स्तरीय कैश 1 + 0.10 × 100 = 11 ns होता।पिछले प्रश्न के अनुक्रम में, सभी स्मृति-पहुँचों का कितना अंश मुख्य स्मृति तक पहुँचता है?
उत्तर देखें
उत्तर: C — 2%
कोई पहुँच मुख्य स्मृति तक तभी पहुँचती है जब वह दोनों स्तर चूके: 10% L1 चूकते हैं, और उनका 20% L2 चूकता है, अतः 0.10 × 0.20 = 2%। वह L2 की वैश्विक चूक-दर है, और वह उस 20% स्थानीय दर से भिन्न संख्या है जो पिछले प्रश्न में दी गई थी। विकल्प A स्थानीय दर को वैश्विक की भाँति प्रस्तुत करता है, जो इस विषय की एकमात्र सर्वाधिक सामान्य त्रुटि है; विकल्प B, L1 की चूक-दर है, जो स्मृति के बजाय L2 तक पहुँचने वाला अंश है। यह जानना कि प्रश्न ने दोनों में कौन-सी दी है, अधिकांश काम है — "अपने तक पहुँचने वाली पहुँचों का 20% चूकता है" रचना से ही स्थानीय है।राइट-थ्रू की तुलना में राइट-बैक कैश के विषय में निम्नलिखित में कौन सत्य हैं? (एक से अधिक सही हो सकते हैं।)
उत्तर देखें
उत्तर: A — उसे प्रति कैश-पंक्ति एक डर्टी बिट चाहिए; B — उसी पंक्ति पर बारंबार लेखन हेतु वह कम स्मृति-लेखन यातायात उत्पन्न करता है; D — संशोधित पंक्ति के निष्कासन हेतु स्मृति-लेखन आवश्यक है
A, B व D, जो एक ही अभिकल्प के तीन मुख हैं। राइट-बैक केवल कैश अद्यतन करता है और पंक्ति को डर्टी चिह्नित करता है (A), अतः उसी पंक्ति पर दस लेखन दस के बजाय एक स्मृति-लेखन लेते हैं (B), और वह स्थगित लेखन पंक्ति के निष्कासित होने पर होना ही पड़ता है (D)। C राइट-थ्रू का गुण है, और ठीक वही राइट-बैक छोड़ देता है — निष्कासन तक स्मृति बासी रहती है, और इसीलिए राइट-बैक कैश DMA व बहुसंसाधक संगति को जटिल करता है: सीधे स्मृति पढ़ता कोई अन्य कारक नवीनतम मान न देख सके। यातायात की बचत के बजाय प्रायः वही परिणाम है जिसकी ओर प्रश्न बढ़ रहा होता है।एक डिस्क 7200 rpm पर घूमती है। उसकी औसत घूर्णन-विलंबता है:
उत्तर देखें
उत्तर: B — 4.17 ms
7200 rpm पर एक चक्कर 60/7200 से = 8.33 ms लेता है, और औसतन अभीष्ट सेक्टर आधा चक्कर दूर होता है, अतः औसत विलंबता 8.33 / 2 = 4.17 ms है। विकल्प A पूरा चक्कर है — निकृष्टतम स्थिति, औसत नहीं — और यहाँ सर्वाधिक सामान्य उत्तर वही है। भेद इसलिए महत्वपूर्ण है कि घूर्णन-विलंबता प्रायः वही पद है जिसे अभ्यर्थी पूर्णतः छोड़ देते हैं: 8 ms खोज तथा 4.17 ms विलंबता तथा 100 MB/s पर 4 KB अंतरित करने हेतु 0.04 ms मिलकर लगभग 12.2 ms है, और मध्य पद छोड़ना उसे एक-तिहाई कम आँकता है।क्षमता अचर रखते हुए कैश खंड-आकार बढ़ाने की प्रवृत्ति है:
उत्तर देखें
उत्तर: A — अनिवार्य चूक घटाना पर अंततः संघर्ष व क्षमता चूक बढ़ाना
बड़ा खंड प्रति चूक अधिक पड़ोसी लाता है, अतः स्थानिक स्थानिकता का अधिक दोहन होता है और अनिवार्य चूक घटती हैं। परंतु क्षमता नियत है, अतः बड़े खंड का अर्थ कम पंक्तियाँ — आँकड़े रखने हेतु कम भिन्न स्थान — और एक बिंदु के बाद संघर्ष व क्षमता चूक, अनिवार्य चूक के घटने से तेज़ी से बढ़ती हैं। अतः चूक-दर का किसी मध्यवर्ती खंड-आकार पर न्यूनतम होता है, और यही U-आकार यह प्रश्न जाँच रहा है। विकल्प B नियत-क्षमता प्रतिबंध की अवहेलना करता है, और सम्पूर्ण प्रश्न उसी प्रतिबंध पर टिका है: कैश में कुछ भी बिना किसी अन्य के महँगा होने के सस्ता नहीं होता।32-बाइट खंड व 32-बिट पते वाले 2048 पंक्तियों के पूर्णतः सहचारी कैश को कितने टैग बिट, तथा एक खोज हेतु कितने तुलनित्र चाहिए?
उत्तर देखें
उत्तर: A — 27 टैग बिट व 2048 तुलनित्र
पूर्णतः सहचारी का अर्थ एक समुच्चय है, अतः कोई अनुक्रमणिका ही नहीं: 32 − 5 = 27 टैग बिट। और खोज सीमित करने हेतु कोई अनुक्रमणिका न होने पर टैग की तुलना 2048 पंक्तियों में प्रत्येक से एक साथ करनी होगी — 2048 तुलनित्र। वे दोनों संख्याएँ मिलकर पूर्ण सहचारिता की लागत हैं और वही कारण है कि वह TLB जैसे अत्यंत छोटे कैशों तक सीमित है। विकल्प B प्रत्यक्ष-मानचित्रित उत्तर है, जहाँ एक तुलनित्र पर्याप्त है क्योंकि अनुक्रमणिका ने वही एक पंक्ति पहले से चुन ली है जो मिल सकती थी।