कैच हायरार्की

कैश पदानुक्रम, या बहु-स्तरीय कैश, मेमोरी आर्किटेक्चर को संदर्भित करता है जो डेटा को कैश करने के लिए भिन्न-भिन्न एक्सेस स्पीड के आधार पर मेमोरी स्टोर्स के पदानुक्रम का उपयोग करता है। अत्यधिक अनुरोधित डेटा को हाई-स्पीड एक्सेस मेमोरी स्टोर्स में कैश किया जाता है, जिससे सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) कोर द्वारा तीव्रता से एक्सेस की अनुमति मिलती है।

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



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

इसका परिणाम कैश मैमोरी की अवधारणा के रूप में सामने आया, जिसे प्रथम बार 1965 में कैम्ब्रिज विश्वविद्यालय के ब्रिटिश कंप्यूटर वैज्ञानिक मौरिस विल्क्स द्वारा प्रस्तावित किया गया था। उन्होंने ऐसे मेमोरी मॉडल को स्लेव मेमोरी कहा। सामान्यतः 1970 और 1990 के मध्य, अनंत अग्रवाल, एलन जे स्मिथ, मार्क डी. हिल, थॉमस आर. पुज़क और अन्य के पत्रों और लेखों ने उत्तम कैश मेमोरी डिज़ाइनों का वर्णन किया। प्रथम कैश मेमोरी प्रारूप उस समय प्रारम्भ किए गए थे, किन्तु जब शोधकर्ता उत्तम डिजाइनों की परीक्षण और प्रस्ताव कर रहे थे, तब भी तीव्र मेमोरी प्रारूप की आवश्यकता बनी रही। यह आवश्यकता इस तथ्य से उत्पन्न हुई कि चूँकि प्रारंभिक कैश प्रारूप ने व्यय और प्रौद्योगिकी सीमाओं के संबंध में डेटा एक्सेस लेटेंसी में सुधार किया, यह कंप्यूटर प्रणाली के कैश के लिए मुख्य मेमोरी के आकार तक पहुंचने के लिए संभव नहीं था। 1990 के पश्चात से, प्रथम स्तर के कैश के बैकअप के रूप में और कैश स्तर (द्वितीय स्तर) जोड़ने जैसे विचार प्रस्तावित किए गए थे। जीन लूप बेयर, वेन-हैन वांग, एंड्रयू डब्ल्यू विल्सन और अन्य ने इस प्रारूप पर शोध किया है। जब कई सिमुलेशन और कार्यान्वयन ने दो-स्तरीय कैश प्रारूप के लाभों का प्रदर्शन किया, तो बहु-स्तरीय कैश की अवधारणा को कैश मेमोरी के नए और सामान्यतः उत्तम प्रारूप के रूप में पकड़ा गया। 2000 के पश्चात से, बहु-स्तरीय कैश प्रारूप ने व्यापक रूप से ध्यान आकर्षित किया है और वर्तमान में कई प्रणालियों में प्रारम्भ किया गया है, जैसे कि तीन-स्तरीय कैश जो कि इंटेल के कोर i7 उत्पादों में उपस्थित हैं।

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

औसत पहुंच समय (एएटी)
कैश, आकार में छोटा होने के कारण, बार-बार मिस हो सकता है - जब कैश का शोध वांछित सूचना प्रदान नहीं करता है - जिसके परिणामस्वरूप डेटा प्राप्त करने के लिए मुख्य मेमोरी को कॉल किया जाता है। इसलिए, एएटी प्रत्येक संरचना की मिस दर से प्रभावित होता है जिससे वह डेटा का शोध करता है।
 * $$ \text{AAT} = \text{hit time}+((\text{miss rate})\times(\text{miss penalty}))$$

मुख्य मेमोरी के लिए एएटी हिट समयmain memory. द्वारा दिया जाता है कैश के लिए एएटी किसके द्वारा दिया जा सकता है


 * हिट टाइमcache + (मिस दरcache × मिस पेनल्टीtime taken to go to main memory after missing cache).

कैश के लिए हिट समय मुख्य मेमोरी के हिट समय से अल्प है, इसलिए मुख्य मेमोरी के अतिरिक्त कैश के माध्यम से डेटा एक्सेस करते समय डेटा पुनर्प्राप्ति के लिए एएटी अधिक अल्प है।

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

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

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

उदाहरण: मुख्य मेमोरी = 50ns, L1 = 1 ns 10% मिस रेट के साथ, L2 = 5 ns 1% मिस रेट के साथ, L3 = 10 ns 0.2% मिस रेट के साथ है।
 * कोई कैश नहीं, AAT = 50 ns
 * L1 कैश, AAT = 1 ns + (0.1 × 50 ns) = 6 ns
 * L1–2 कैश, AAT = 1 ns + (0.1 × [5 ns + (0.01 × 50 ns)]) = 1.55 ns
 * L1–3 कैश, AAT = 1 ns + (0.1 × [5 ns + (0.01 × [10 ns + (0.002 × 50 ns)])]) = 1.5101 ns

हानि

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

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

आधुनिक प्रोसेसर में विभाजित कैश होते हैं, और बहुस्तरीय कैश वाली प्रणाली में उच्च स्तर के कैश एकीकृत हो सकते हैं जबकि निचले स्तर विभाजित होते हैं।

समावेशन नीतियां
क्या ऊपरी कैश परत में उपस्थित कोई ब्लॉक निचले कैश स्तर में भी उपस्थित हो सकता है, यह मेमोरी प्रणाली की समावेशन नीति द्वारा नियंत्रित होता है, जो समावेशी, अनन्य या गैर-समावेशी गैर-अनन्य (नौ) हो सकता है। समावेशी नीति के साथ, ऊपरी स्तर के कैश में उपस्थित सभी ब्लॉक को निचले स्तर के कैश में भी उपस्थित होना चाहिए। प्रत्येक ऊपरी-स्तरीय कैश घटक निम्न-स्तरीय कैश घटक का सबसेट है। इस स्थिति में, चूंकि ब्लॉकों का दोहराव होता है, स्मृति का कुछ अपव्यय होता है। चूँकि, परिक्षण तीव्र है।

विशेष नीति के अंतर्गत, सभी कैश पदानुक्रम घटक पूर्ण रूप से अनन्य हैं, जिससे कि ऊपरी स्तर के कैश में कोई भी तत्व किसी भी निचले कैश घटक में उपस्थित न हो। यह कैश मेमोरी के पूर्ण उपयोग को सक्षम बनाता है। चूँकि, उच्च मेमोरी-एक्सेस विलंबता है।

उपरोक्त नीतियों को प्रारम्भ करने के लिए नियमों के समूह का पालन करने की आवश्यकता है। यदि इनमें से किसी को भी विवश नहीं किया जाता है, तो परिणामी समावेशन नीति को गैर-समावेशी गैर-अनन्य (नौ) कहा जाता है। इसका तात्पर्य है कि ऊपरी स्तर का कैश निचले स्तर के कैश में उपस्थित हो भी सकता है और नहीं भी हो सकता है।

नीतियां लिखें
दो नीतियां हैं जो उस प्रकार को परिभाषित करती हैं जिसमें संशोधित कैश ब्लॉक को मुख्य मेमोरी में अपडेट किया जाएगा: राइट थ्रू और राइट बैक।

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

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

राइट की स्थिति में जहां बाइट कैश ब्लॉक में उपस्थित नहीं है, बाइट को कैश में लाया जा सकता है जैसा कि राइट आबंटन या नो-आवंटन नीति द्वारा निर्धारित किया गया है। राइट एलोकेशन पॉलिसी बताती है कि राइट मिस होने की स्थिति में, ब्लॉक को मुख्य मेमोरी से लाया जाता है और लिखने से पूर्व कैश में रखा जाता है। राइट नो-एलोकेशन पॉलिसी में, यदि कैश में ब्लॉक छूट जाता है तो यह ब्लॉक को कैश में लाए बिना निचले स्तर की मेमोरी पदानुक्रम में लिख देगा।

नीतियों के सामान्य संयोजन "राइट ब्लॉक", "राइट एलोकेशन", और "राइट थ्रू राइट नो-एलोकेट" हैं।

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

मल्टी-कोर प्रोसेसर में, कैश को साझा या निजी बनाने के लिए डिज़ाइन का विकल्प प्रोसेसर के प्रदर्शन को प्रभावित करता है। व्यवहार में, ऊपरी-स्तरीय कैश L1 (या कभी-कभी L2) निजी के रूप में प्रस्तावित किया जाता है और निचले स्तर के कैश को साझा के रूप में प्रारम्भ किया जाता है। यह डिज़ाइन उच्च-स्तरीय कैश के लिए उच्च पहुँच दर और निम्न-स्तरीय कैश के लिए अल्प मिस रेट प्रदान करता है।

इंटेल ब्रॉडवेल माइक्रोआर्किटेक्चर (2014)

 * L1 कैश (निर्देश और डेटा) - 64kB प्रति कोर हैं।
 * L2 कैश – 256 kB प्रति कोर हैं।
 * L3 कैश - 2MB से 6 एमबी साझा किया।
 * L4 कैश - 128 MB eDRAM (केवल आइरिस प्रो प्रारूप) हैं।

इंटेल कैबी लेक माइक्रोआर्किटेक्चर (2016)

 * L1 कैश (निर्देश और डेटा) - 64 kB प्रति कोर हैं।
 * L2 कैश – 256 kB प्रति कोर हैं।
 * L3 कैश - 2 MB से 8 MB साझा किया गया।

एएमडी ज़ेन माइक्रोआर्किटेक्चर (2017)

 * L1 कैश - 32 kB डेटा और 64 kB निर्देश प्रति कोर, 4-वे हैं।
 * L2 कैश - 512 kB प्रति कोर, 4-वे समावेशी हैं।
 * L3 कैश - 4 MB लोकल और रिमोट प्रति 4-कोर सीसीएक्स, 2 सीसीएक्स प्रति चिपलेट, 16-वे नॉन-इनक्लूसिव डेस्कटॉप सीपीयू पर 16 MB और सर्वर सीपीयू पर 64 MB तक हैं।

एएमडी ज़ेन 2 माइक्रोआर्किटेक्चर (2019)

 * L1 कैश - 32 kB डेटा और 32 kB निर्देश प्रति कोर, 8-वे हैं।
 * L2 कैश – 512 kB प्रति कोर, 8-वे समावेशी हैं।
 * L3 कैश - 16 MB लोकल प्रति 4-कोर सीसीएक्स, 2 सीसीएक्स प्रति चिपलेट, 16-वे नॉन-इनक्लूसिव डेस्कटॉप सीपीयू पर 64 MB और सर्वर सीपीयू पर 256 MB तक हैं।

आईबीएम पावर 7 (2010)

 * L1 कैश (निर्देश और डेटा) - प्रत्येक 64-बैंक्ड, प्रत्येक बैंक में 2rd+1wr पोर्ट 32 kB, 8-वे एसोसिएटिव, 128B ब्लॉक, राइट थ्रू हैं।
 * L2 कैश - 256 kB, 8-वे, 128B ब्लॉक, राइट बैक, L1 सहित, 2 ns एक्सेस लेटेंसी हैं।
 * L3 कैश - 4 MB के 8 क्षेत्र (कुल 32 MB), स्थानीय क्षेत्र 6 एनएस, रिमोट 30 एनएस, प्रत्येक क्षेत्र 8-वे सहयोगी, डीआरएएम डेटा सरणी, एसआरएएम टैग सरणी हैं।

यह भी देखें

 * शक्ति7
 * ब्रॉडवेल (माइक्रोआर्किटेक्चर)
 * केबी झील
 * सीपीयू कैश
 * मेमोरी पदानुक्रम
 * कैस विलंबता
 * कैश (कंप्यूटिंग)

संदर्भ
fa: سلسله مراتب حافظه نهان