खुला
बंद करना

प्रोसेसर में कैश किसके लिए जिम्मेदार है? प्रोसेसर कैशिंग के लिए एक नया दृष्टिकोण। वॉल्यूम क्या है और इसका क्या प्रभाव पड़ता है?

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

  • अपेक्षाकृत उच्च विनिर्माण लागत
  • निरंतर ऊर्जा खपत
  • SRAM की ये सीमाएँ ही इसके आधार पर RAM बनाने की अनुमति नहीं देती हैं।

    प्रोसेसर कैश स्तर

    आधुनिक प्रोसेसर में कैश को कई स्तरों में विभाजित किया जाता है

    कैश मेमोरी एल्गोरिदम

    कैश ऑपरेशन एल्गोरिदम को प्रोसेसर में स्थित एक विशेष नियंत्रक द्वारा नियंत्रित किया जाता है। यह परिस्थितियों के आधार पर गतिशील रूप से अपने संचालन पैटर्न को बदल सकता है। लेकिन सामान्य कैश एल्गोरिदम है:

    जब प्रोसेसर पढ़ने का अनुरोध करता है, कैश नियंत्रककैश में एक मान की तलाश करता है और, यदि पाया जाता है, तो इसे प्रोसेसर को भेजता है। यदि मान नहीं मिलता है, तो नियंत्रक अनुरोध को आगे भेजता है: या तो निचले स्तर के कैश या रैम को। निचले स्तर से एक मान पढ़ने के बाद, कैश इस मान को अपने आप में जोड़ता है और अगली बार जब इसे एक्सेस किया जाता है, तो यह तुरंत इसे प्रोसेसर को दे देगा।

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

    कैश आवृत्ति

    क्योंकि SRAM मेमोरी बहुत उच्च आवृत्तियों पर काम कर सकती है, प्रोसेसर कैश मेमोरी आमतौर पर प्रोसेसर के समान आवृत्ति पर चलती है। इससे इस प्रकार की मेमोरी के साथ काम करने की गति और बढ़ जाती है।

    स्मार्ट कैश

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

    पहला कैश

    8086 प्रोसेसर में कैश की कुछ झलक थी इसमें 6-बाइट अनुदेश कैश था। बड़ी बौद्धिक क्षमताओं के बिना, एक छोटी संख्या, लेकिन इसने सिस्टम के प्रदर्शन में उल्लेखनीय वृद्धि की। लेकिन वास्तविक कैश का उपयोग 80386 प्रोसेसर के साथ किया जाने लगा, उन दिनों रैम तक पहुंचने के लिए 120 एनएस समय की आवश्यकता होती थी। लेकिन प्रोसेसर के बगल मेंएक विशेष स्थापित किया कैश मेमोरी चिपऔर उस तक पहुंच रैम की तुलना में 12 गुना तेज थी। लेकिन यह मेमोरी (SRAM) काफी महंगी थी और बड़ी कैश मेमोरी चिप स्थापित करना लाभहीन था। इसलिए, पहले प्रोसेसर कैश 64 किलोबाइट तक सीमित थे और अलग से स्थापित किए गए थे। 80486 प्रोसेसर से शुरुआत सीपीयू कैशयह अपने नाम के अनुरूप ही रहने लगा, क्योंकि यह सीधे प्रोसेसर में स्थापित किया गया था।

    कैश स्थापना स्थान

    जैसा कि ऊपर बताया गया है, 80386 प्रोसेसर में आंतरिक कैश नहीं था। कैश को मदरबोर्ड पर एक अलग चिप के रूप में स्थापित किया गया था। 80486 प्रोसेसर पर आधारित कंप्यूटरों में, पहले की तरह, कैश मदरबोर्ड पर स्थित था, लेकिन यह दूसरे स्तर का था। पहला कैश स्तर सेट किया गया था सीधे प्रोसेसर में. समय के साथ और चिप निर्माण प्रौद्योगिकी के विकास के साथ, प्रोसेसर कैश पूरी तरह से प्रोसेसर, साथ ही रैम नियंत्रक में स्थानांतरित हो गया है।

    सीपीयू कैशप्रोसेसर के प्रदर्शन को बढ़ाकर बढ़ाने का एक प्रभावी तरीका है रैम के साथ काम करने की गति.

    L2 कैश के साथ निर्मित होने वाला पहला प्रोसेसर 1995 में पेंटियम प्रो था। इसमें 256 या 512 KB का ऑन-चिप L2 कैश था, जिसने इसे पारंपरिक पेंटियम प्रोसेसर पर महत्वपूर्ण लाभ दिया, जिसका कैश मदरबोर्ड पर स्थित था। पेंटियम II के आगमन के साथ, समर्पित कैश मेमोरी स्लॉट 1 मॉड्यूल में प्रोसेसर के बगल में "बस गई"। लेकिन सॉकेट 370 के लिए केवल दूसरी पीढ़ी के पेंटियम III ने कैश मेमोरी को प्रोसेसर चिप पर स्थानांतरित किया। यह आज भी जारी है, लेकिन ऐसे प्रोसेसर हैं जिनमें थोड़ी मात्रा में कैश होता है, और अन्य में बड़ी मात्रा में कैश होता है। क्या बड़े कैश वाले मॉडल पर पैसा खर्च करना उचित है? अतीत में, अतिरिक्त कैश मेमोरी का हमेशा प्रदर्शन पर कोई उल्लेखनीय प्रभाव नहीं पड़ता था।

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

    पेंटियम 4 अपनी पहली पीढ़ी (विलमेट, 180 एनएम) में 256 केबी कैश से लैस था, और अधिक सफल दूसरी पीढ़ी (नॉर्थवुड, 130 एनएम) में - पहले से ही 512 केबी कैश से लैस था। उस समय, छोटे कैश वाले सस्ते सेलेरॉन प्रोसेसर समान कंप्यूटिंग कोर पर तैयार किए गए थे। सेलेरॉन उच्च-अंत और कम लागत वाले मॉडल के लिए समान तकनीकी आधार वाले उत्पादों की पहली पीढ़ी से संबंधित है, जो केवल उपलब्ध कैश आकार और एफएसबी/कोर आवृत्तियों में भिन्न है। बाद में, बाज़ार खंडों को और अलग करने के लिए कार्यों में अंतर जोड़ा गया।

    90 एनएम प्रेस्कॉट कोर की रिलीज़ के साथ, L2 कैश 1 एमबी तक बढ़ गया, और यह प्रोसेसर 2 एमबी 65 एनएम सीडर मिल की शुरुआत तक इंटेल के डेस्कटॉप प्रोसेसर लाइन का मुख्य आधार बन गया। इंटेल ने दूसरी पीढ़ी के पेंटियम डी 900 प्रोसेसर बनाने के लिए इनमें से दो कोर का भी उपयोग किया। हालाँकि, तेज़ घड़ी की गति और बड़े कैश आकार का तब भी कोई खास मतलब नहीं था। आज स्थिति बदल गई है: कोर 2 डुओ (कॉनरो, 65 एनएम) का बेहतर प्रदर्शन और कम बिजली की खपत बड़े पैमाने पर कैश आकार के कारण है।

    एएमडी कैश आकार बढ़ाने के बारे में बहुत आरक्षित था। सबसे अधिक संभावना है, यह चिप क्षेत्र (ट्रांजिस्टर बजट) के कारण है, क्योंकि 65 एनएम प्रोसेसर की संख्या बाजार की मांग को पूरा नहीं कर सकती है, और कम लाभदायक 90 एनएम मॉडल के लिए यह समस्या और भी गंभीर है। दूसरी ओर, इंटेल को 65 एनएम प्रक्रिया प्रौद्योगिकी का उपयोग करके सभी मुख्यधारा प्रोसेसर का उत्पादन करने का लाभ है, और एल2 कैश की क्षमता बढ़ती रहेगी। उदाहरण के लिए, 45 एनएम पेन्रीन कोर पर अगली पीढ़ी का कोर 2 6 एमबी तक एल2 कैश से लैस होगा। क्या इसे एक मार्केटिंग कदम के रूप में देखा जा सकता है, या क्या L2 क्षमता बढ़ाने से वास्तव में प्रदर्शन को बढ़ावा मिलेगा? आइये एक नजर डालते हैं.

    बड़ा L2 कैश: विपणन या उत्पादकता वृद्धि?

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

    कैश पदानुक्रम को व्यवस्थित करने के विभिन्न तरीके हैं। अधिकांश आधुनिक कंप्यूटरों में छोटे प्रथम-स्तरीय कैश (L1, 128 KB तक) वाले प्रोसेसर होते हैं, जो आमतौर पर डेटा कैश और निर्देश कैश में विभाजित होते हैं। बड़े L2 कैश का उपयोग आमतौर पर डेटा भंडारण के लिए किया जाता है और इसे दो कोर 2 डुओ प्रोसेसर कोर के बीच साझा किया जाता है, हालांकि एथलॉन 64 X2 या पेंटियम डी में प्रति कोर अलग कैश होता है। L2 कैश विशेष रूप से या समावेशी रूप से संचालित हो सकता है, जिसका अर्थ है कि यह या तो L1 कैश की सामग्री की एक प्रति संग्रहीत कर सकता है या नहीं। एएमडी जल्द ही तीसरे कैश स्तर के साथ प्रोसेसर पेश करेगा, जिसे एएमडी फेनोम प्रोसेसर में चार कोर के बीच साझा किया जाएगा। नेहलेम आर्किटेक्चर के लिए भी यही उम्मीद की जाती है, जिसे इंटेल 2008 में मौजूदा कोर 2 को बदलने के लिए पेश करेगा।

    L1 कैश हमेशा प्रोसेसर का हिस्सा रहा है, लेकिन L2 कैश शुरू में मदरबोर्ड पर स्थापित किया गया था, जैसा कि कई 486DX और पेंटियम कंप्यूटरों के मामले में था। प्रथम स्तर के कैश के लिए, सरल स्थैतिक मेमोरी चिप्स (SRAM, स्टेटिक रैम) का उपयोग किया गया था। उन्हें जल्द ही पेंटियम प्रोसेसर पर पाइपलाइन बर्स्ट कैश द्वारा प्रतिस्थापित कर दिया गया जब तक कि कैश को चिप पर स्थापित करना संभव नहीं हो गया। 150 - 200 मेगाहर्ट्ज पर पेंटियम प्रो 256 केबी एल2 कैश ऑन-चिप रखने वाला पहला प्रोसेसर बन गया, जिसने डेस्कटॉप पीसी और वर्कस्टेशन के लिए सबसे बड़े सिरेमिक पैकेज आकार का रिकॉर्ड तोड़ दिया। सॉकेट 370 के लिए पेंटियम III, 500 मेगाहर्ट्ज से 1.13 गीगाहर्ट्ज तक की आवृत्तियों पर काम करने वाला, 256 केबी ऑन-चिप एल2 कैश की सुविधा देने वाला पहला प्रोसेसर था, जो विलंबता लाभ प्रदान करता था क्योंकि कैश सीपीयू गति पर चलता था।

    अंतर्निहित L2 कैश ने लगभग किसी भी एप्लिकेशन में महत्वपूर्ण प्रदर्शन को बढ़ावा दिया। प्रदर्शन में वृद्धि इतनी महत्वपूर्ण साबित हुई कि एकीकृत L2 कैश की उपस्थिति को x86 प्रोसेसर के लिए सबसे महत्वपूर्ण प्रदर्शन कारक कहा जा सकता है। L2 कैश को अक्षम करने से दोहरे कोर प्रोसेसर के दूसरे कोर को अक्षम करने की तुलना में प्रदर्शन में अधिक कमी आएगी।

    हालाँकि, कैश मेमोरी केवल प्रदर्शन से कहीं अधिक प्रभावित करती है। यह एक शक्तिशाली उपकरण बन गया है जो आपको लो-एंड, मेनस्ट्रीम और हाई-एंड सेगमेंट के लिए प्रोसेसर के विभिन्न मॉडल बनाने की अनुमति देता है, क्योंकि निर्माता अस्वीकृति और घड़ी की गति के आधार पर लचीले ढंग से प्रोसेसर का चयन कर सकता है। यदि क्रिस्टल पर कोई दोष नहीं है, तो संपूर्ण L2 कैश चालू किया जा सकता है, और आवृत्तियाँ अधिक होंगी। यदि वांछित घड़ी आवृत्तियों को प्राप्त नहीं किया जा सकता है, तो क्रिस्टल हाई-एंड लाइन में एक एंट्री-लेवल मॉडल बन सकता है, उदाहरण के लिए, 4 एमबी कैश और कम आवृत्तियों के साथ कोर 2 डुओ 6000। यदि L2 कैश में दोष मौजूद हैं, तो निर्माता के पास इसके कुछ हिस्से को अक्षम करने और छोटे कैश आकार के साथ एक एंट्री-लेवल मॉडल बनाने का अवसर है, उदाहरण के लिए, 2 एमबी L2 कैश के साथ एक कोर 2 डुओ E4000 या यहां तक ​​कि एक केवल 1 एमबी कैश के साथ पेंटियम डुअल कोर। यह सब सच है, लेकिन सवाल यह है कि कैश आकार में अंतर प्रदर्शन को कितना प्रभावित करता है?

    कोर 2 डुओ वेरिएंट

    इंटेल ने बाज़ार में डेस्कटॉप प्रोसेसर की एक विस्तृत श्रृंखला लॉन्च की है। आज भी आप पेंटियम 4 और पेंटियम डी पा सकते हैं, लेकिन अधिकांश मॉडल कोर माइक्रो-आर्किटेक्चर पर बने हैं। हम पेंटियम 4 या पेंटियम डी प्रोसेसर की अनुशंसा नहीं करते हैं, हालाँकि 3.8 गीगाहर्ट्ज़ तक की उनकी क्लॉक स्पीड आकर्षक लग सकती है। लेकिन 2.2 गीगाहर्ट्ज़ या उससे अधिक पर कोई भी कोर 2 प्रोसेसर सबसे तेज़ पेंटियम डी मॉडल (वास्तव में, एथलॉन 64 एक्स 2 की तरह) को भी हराने में सक्षम है, क्योंकि कोर 2 देता है प्रति घड़ी बहुत बेहतर प्रदर्शन .

    कम क्लॉक स्पीड के कारण, कोर 2 प्रोसेसर अधिक ऊर्जा कुशल हैं। यदि शीर्ष पेंटियम डी 800 मॉडल 130 डब्ल्यू तक "खाते हैं", तो केवल चार कोर वाला कोर 2 एक्सट्रीम 100 डब्ल्यू की सीमा को पार करता है। सभी डुअल-कोर प्रोसेसर 65 W से अधिक की खपत नहीं करते हैं। इसके अलावा, कोर 2 डुओ प्रोसेसर की निष्क्रिय बिजली खपत और भी कम है क्योंकि निष्क्रिय आवृत्ति कम है (कोर 2 डुओ/क्वाड के लिए अधिकतम 1.2 गीगाहर्ट्ज बनाम पेंटियम डी/4 के लिए 2.8 गीगाहर्ट्ज)। बिजली की खपत में कमी कम रिसाव धाराओं के साथ बेहतर ट्रांजिस्टर डिजाइन से प्रभावित थी।

    आज ई और एक्स मॉडल उपलब्ध हैं। ई मॉडल बड़े पैमाने पर बाजार के लिए हैं, जबकि एक्स मॉडल एक्सट्रीम संस्करण हैं। Q का मतलब चार कोर है, जिसे इंटेल एक भौतिक पैकेज में दो डुअल-कोर डाई रखकर बनाता है। E6000 प्रोसेसर 4 एमबी L2 कैश से लैस हैं यदि उनका मॉडल नंबर E6400 से अधिक है या 20 पर समाप्त होता है (उदाहरण के लिए, E6320)। 00 (जैसे E6600) पर समाप्त होने वाले मॉडल FSB 266 MHz (FSB1066) पर काम करते हैं, और 50 (E6750) पर समाप्त होने वाले मॉडल FSB 333 MHz (FSB1333) पर काम करते हैं। बाद वाले को P35 या X38 चिपसेट की आवश्यकता होती है और यह थोड़ा अधिक प्रदर्शन प्रदान करता है। E4000 200 मेगाहर्ट्ज FSB (FSB800) के साथ संचालित होता है और इसमें केवल 2 MB L2 कैश है। 1 एमबी कैश वाले संस्करण 1.6 से 2.0 गीगाहर्ट्ज की आवृत्तियों के साथ पेंटियम डुअल कोर ई2140, ई2160 और ई2180 के रूप में बेचे जाते हैं। नाम और कुछ विशेषताओं के अलावा, जिन्हें इंटेल सस्ते प्रोसेसर में अक्षम कर देता है, उल्लिखित पेंटियम डुअल कोर कोर 2 डुओ के समान हैं।

    कोर 2 डुओ प्रोसेसर की विशेषताएं
    65nm प्रोसेसर संख्या कैश घड़ी की आवृत्ति एफएसबी वर्चुअलाइजेशन प्रौद्योगिकी विश्वसनीय निष्पादन प्रौद्योगिकी
    ई6850 4 एमबी एल2 3 गीगाहर्ट्ज 333 मेगाहर्ट्ज एक्स एक्स
    ई6750 4 एमबी एल2 2.66 गीगाहर्ट्ज़ 333 मेगाहर्ट्ज एक्स एक्स
    ई6700 4 एमबी एल2 2.66 गीगाहर्ट्ज़ 266 मेगाहर्ट्ज एक्स
    ई6600 4 एमबी एल2 2.40 गीगाहर्ट्ज़ 266 मेगाहर्ट्ज एक्स
    E6550 4 एमबी एल2 2.33 गीगाहर्ट्ज़ 333 मेगाहर्ट्ज एक्स एक्स
    E6540 4 एमबी एल2 2.33 गीगाहर्ट्ज़ 333 मेगाहर्ट्ज एक्स
    E6420 4 एमबी एल2 2.13 गीगाहर्ट्ज़ 266 मेगाहर्ट्ज एक्स
    ई6400 2 एमबी एल2 2.13 गीगाहर्ट्ज़ 266 मेगाहर्ट्ज एक्स
    E6320 4 एमबी एल2 1.86 गीगाहर्ट्ज़ 266 मेगाहर्ट्ज एक्स
    ई6300 2 एमबी एल2 1.86 गीगाहर्ट्ज़ 266 मेगाहर्ट्ज एक्स
    E4600 2 एमबी एल2 2.40 गीगाहर्ट्ज़ 200 मेगाहर्ट्ज
    E4500 2 एमबी एल2 2.20 गीगाहर्ट्ज़ 200 मेगाहर्ट्ज
    E4400 2 एमबी एल2 2 गीगाहर्ट्ज 200 मेगाहर्ट्ज
    E4300 2 एमबी एल2 1.80 गीगाहर्ट्ज़ 200 मेगाहर्ट्ज


    प्लैटफ़ॉर्म
    सीपीयू I इंटेल पेंटियम डुअल कोर ई2160 (65 एनएम; 1800 मेगाहर्ट्ज, 1 एमबी एल2 कैशे) 2.4 गीगाहर्ट्ज (266 मेगाहर्ट्ज x9) पर
    सीपीयू द्वितीय इंटेल कोर 2 डुओ E4400 (65 एनएम; 2000 मेगाहर्ट्ज, 2 एमबी एल2 कैश) 2.4 गीगाहर्ट्ज (266 मेगाहर्ट्ज x9) पर
    सीपीयू III इंटेल कोर 2 डुओ एक्स6800 (65 एनएम; 3000 मेगाहर्ट्ज, 4 एमबी एल2 कैशे) 2.4 गीगाहर्ट्ज पर (266 मेगाहर्ट्ज x9)
    मदरबोर्ड ASUS ब्लिट्ज़ फॉर्मूला, रेव: 1.0
    चिपसेट: इंटेल P35, BIOS 1101
    याद कॉर्सेर CM2X1024-888C4D, 2x 1024 MB DDR2-800 (CL 4-4-4-12 2T)
    एचडीडी वेस्टर्न डिजिटल रैप्टर WD1500ADFD, 150 जीबी, 10,000 आरपीएम, 16 एमबी कैश, SATA/150
    डीवीडी रॉम सैमसंग SH-S183
    वीडियो कार्ड ज़ोटैक GeForce 8800 GTS, GPU: GeForce 8800 GTS (500 MHz), मेमोरी: 320 MB GDDR3 (1,600 MHz)
    अच्छा पत्रक में निर्मित
    बिजली इकाई एनरमैक्स ईजी565पी-वीई, एटीएक्स 2.01, 510 डब्ल्यू
    सिस्टम सॉफ़्टवेयर और ड्राइवर
    ओएस विंडोज एक्सपी प्रोफेशनल 5.10.2600, सर्विस पैक 2
    डायरेक्टएक्स संस्करण 9.0सी (4.09.0000.0904)
    इंटेल प्लेटफ़ॉर्म ड्राइवर संस्करण 8.3.1013
    एनवीडिया ग्राफिक्स ड्राइवर फ़ोर्सवेयर 162.18

    परीक्षण और सेटिंग्स

    3 डी का खेल
    कॉल ऑफ़ ड्यूटी 2 संस्करण: 1.3 खुदरा
    वीडियो मोड: 1280x960
    एंटी अलियासिंग: बंद
    ग्राफ़िक्स कार्ड: मध्यम
    टाइमडेमो डेमो2
    शिकार संस्करण: 1.3
    वीडियो मोड: 1280x1024
    वीडियो गुणवत्ता: गेम डिफ़ॉल्ट
    वीसिंक = बंद
    बेंचमार्क: टीएचजी-डेमो
    भूकंप 4 संस्करण: 1.2 (डुअल-कोर पैच)
    वीडियो मोड: 1280x1024
    वीडियो गुणवत्ता: उच्च
    टीएचजी टाइमडेमो वेस्ट.मैप
    टाइमडेमो डेमो8.डेमो 1 (1 = लोड टेक्सचर)
    ऑडियो
    लंगड़ा एमपी3 संस्करण 3.98 बीटा 5
    ऑडियो सीडी "टर्मिनेटर II एसई", 53 मिनट
    एमपी3 पर तरंग करें
    160 केबीपीएस
    वीडियो
    टीएमपीईजी 3.0 एक्सप्रेस संस्करण: 3.0.4.24 (कोई ऑडियो नहीं)
    मुट्ठी 5 मिनट डीवीडी टर्मिनेटर 2 एसई (704x576) 16:9
    रेंडरिंग द्वारा मल्टीथ्रेडिंग
    डिवएक्स 6.7 संस्करण: 6.6 (4 तार्किक सीपीयू)
    प्रोफाइल: हाई डेफिनिशन प्रोफाइल
    1-पास, 3000 kbit/s
    एन्कोडिंग मोड: पागल गुणवत्ता
    उन्नत मल्टीथ्रेडिंग
    कोई आवाज नही
    एक्सवीडी 1.1.3 संस्करण: 1.1.3
    लक्ष्य परिमाणक: 1.00
    मुख्य संकल्पना H.264 v2 संस्करण 2.1
    260 एमबी एमपीईजी-2 स्रोत (1920x1080) 16:9
    कोडेक: एच.264
    मोड: एनटीएससी
    ऑडियो: एएसी
    प्रोफ़ाइल: उच्च
    स्ट्रीम: कार्यक्रम
    अनुप्रयोग
    WinRAR संस्करण 3.70
    (303 एमबी, 47 फ़ाइलें, 2 फ़ोल्डर)
    संपीड़न = सर्वोत्तम
    शब्दकोश = 4096 केबी
    ऑटोडेस्क 3डी स्टूडियो मैक्स संस्करण: 8.0
    अक्षर "ड्रैगन_चारेटर_रिग"
    HTDV 1920x1080 प्रस्तुत करना
    Cinebench संस्करण: R10
    1 सीपीयू, एक्स सीपीयू रन
    PCMark05 प्रो संस्करण: 1.2.0
    सीपीयू और मेमोरी टेस्ट
    विंडोज़ मीडिया प्लेयर 10.00.00.3646
    विंडोज़ मीडिया एनकोडर 9.00.00.2980




    निष्कर्ष

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

    उत्तर सरल है: कोर 2 डुओ माइक्रो-आर्किटेक्चर वाले आधुनिक प्रोसेसर के लिए कैश आकार बहुत महत्वपूर्ण है। हमने 4एमबी कोर 2 एक्सट्रीम एक्स6800, 2एमबी कोर 2 डुओ ई4400 और एक पेंटियम डुअल कोर ई2160 का उपयोग किया, जो सिर्फ 1एमबी एल2 कैश के साथ एक कोर 2 डुओ प्रोसेसर है। सभी प्रोसेसर समान 266 मेगाहर्ट्ज सिस्टम बस पर और 2,400 मेगाहर्ट्ज की आवृत्ति प्राप्त करने के लिए 9x गुणक के साथ चलते थे। एकमात्र अंतर कैश आकार का है, क्योंकि पुराने पेंटियम डी को छोड़कर सभी आधुनिक डुअल-कोर प्रोसेसर एक ही चिप्स से बने होते हैं। कोर क्या बनेगा, कोर 2 एक्सट्रीम एडिशन या पेंटियम डुअल कोर, प्रयोग करने योग्य क्रिस्टल की उपज (दोष) या बाजार की मांग से निर्धारित होता है।

    यदि आप 3डी शूटर प्री और क्वेक 4 के परिणामों की तुलना करते हैं, जो विशिष्ट गेमिंग एप्लिकेशन हैं, तो 1 और 4 एमबी के बीच प्रदर्शन में अंतर लगभग एक आवृत्ति चरण है। यही बात DivX 6.6 और XviD 1.1.2 कोडेक्स के साथ-साथ WinRAR 3.7 आर्काइवर के लिए वीडियो एन्कोडिंग परीक्षणों पर भी लागू होती है। हालाँकि, 3DStudio Max 8, Lame MP3 Encoder, या MainConcept के H.264 Encoder V2 जैसे CPU-सघन अनुप्रयोगों को बड़े कैश आकार से अधिक लाभ नहीं होता है।

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

    इस दृष्टिकोण से, आगामी 45 एनएम डुअल-कोर पेन्रीन प्रोसेसर (कोर 2 डुओ ई8000 लाइन) के लिए एल2 कैश आकार को 4 एमबी से बढ़ाकर अधिकतम 6 एमबी करना समझ में आता है। विनिर्माण प्रक्रिया को 65 से 45 एनएम तक कम करने से इंटेल को ट्रांजिस्टर बजट बढ़ाने की अनुमति मिलती है, और कैश आकार में वृद्धि के लिए धन्यवाद, हम एक बार फिर प्रदर्शन में वृद्धि देखेंगे। हालाँकि, इंटेल को 6, 4, 2 या यहां तक ​​कि 1 एमबी एल2 कैश के साथ विभिन्न प्रोसेसर विकल्पों से लाभ होगा। कई विकल्पों के साथ, इंटेल कभी-कभी दोषों के बावजूद प्रति वेफर अधिक डाई का उपयोग कर सकता है जो अन्यथा रीसाइक्लिंग बिन में समाप्त हो जाएगा। एक बड़ा कैश आकार, जैसा कि हम देखते हैं, न केवल प्रदर्शन के लिए, बल्कि इंटेल के मुनाफे के लिए भी महत्वपूर्ण है।

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

    वह क्या कारण है जिसने कंप्यूटर डिजाइनरों को प्रोसेसर के लिए समर्पित मेमोरी का उपयोग करने के लिए प्रेरित किया? क्या कंप्यूटर की RAM क्षमता पर्याप्त नहीं है?

    दरअसल, लंबे समय तक पर्सनल कंप्यूटर बिना किसी कैश मेमोरी के काम करते थे। लेकिन, जैसा कि आप जानते हैं, प्रोसेसर पर्सनल कंप्यूटर पर सबसे तेज़ डिवाइस है और सीपीयू की प्रत्येक नई पीढ़ी के साथ इसकी गति बढ़ गई है। वर्तमान में इसकी गति अरबों ऑपरेशन प्रति सेकंड में मापी जाती है। साथ ही, मानक रैम ने अपने विकास के दौरान अपने प्रदर्शन में उल्लेखनीय वृद्धि नहीं की है।

    सामान्यतया, दो मुख्य मेमोरी चिप प्रौद्योगिकियाँ हैं - स्थिर मेमोरी और डायनेमिक मेमोरी। उनके डिज़ाइन के विवरण में जाने के बिना, हम केवल यही कहेंगे कि गतिशील मेमोरी के विपरीत, स्थिर मेमोरी को पुनर्जनन की आवश्यकता नहीं होती है; इसके अलावा, स्थिर मेमोरी एक बिट जानकारी के लिए 4-8 ट्रांजिस्टर का उपयोग करती है, जबकि गतिशील मेमोरी 1-2 ट्रांजिस्टर का उपयोग करती है। तदनुसार, डायनेमिक मेमोरी स्टैटिक मेमोरी की तुलना में बहुत सस्ती है, लेकिन साथ ही बहुत धीमी भी है। वर्तमान में, रैम चिप्स का निर्माण डायनामिक मेमोरी के आधार पर किया जाता है।

    प्रोसेसर और रैम की गति के अनुपात का अनुमानित विकास:

    इस प्रकार, यदि प्रोसेसर हर समय रैम से जानकारी लेता है, तो उसे धीमी गतिशील मेमोरी के लिए इंतजार करना होगा, और यह हर समय निष्क्रिय रहेगा। उसी स्थिति में, यदि स्थिर मेमोरी को रैम के रूप में उपयोग किया जाता, तो कंप्यूटर की लागत कई गुना बढ़ जाती।

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

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

    कैश इतिहास

    कड़ाई से कहें तो, कैश मेमोरी को पर्सनल कंप्यूटर में स्थानांतरित करने से पहले, कई दशकों तक सुपर कंप्यूटर में इसका सफलतापूर्वक उपयोग किया जा चुका था।

    पहली बार, i80386 प्रोसेसर पर आधारित पीसी में केवल 16 KB की कैश मेमोरी दिखाई दी। आज, आधुनिक प्रोसेसर कैश के विभिन्न स्तरों का उपयोग करते हैं, पहले (सबसे छोटे आकार का सबसे तेज़ कैश - आमतौर पर 128 केबी) से लेकर तीसरे (सबसे बड़े आकार का सबसे धीमा कैश - दसियों एमबी तक)।

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

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

    कैश आर्किटेक्चर और सिद्धांत

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

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

    वह क्रम जिसमें प्रोसेसर मेमोरी में जानकारी खोजता है:

    इस प्रकार प्रोसेसर जानकारी खोजता है

    कैश मेमोरी के संचालन और प्रोसेसर की कंप्यूटिंग इकाइयों, साथ ही रैम के साथ इसकी बातचीत को नियंत्रित करने के लिए, एक विशेष नियंत्रक है।

    प्रोसेसर कोर, कैश और रैम के इंटरेक्शन को व्यवस्थित करने की योजना:

    कैश कंट्रोलर प्रोसेसर, रैम और कैश मेमोरी के बीच की महत्वपूर्ण कड़ी है

    यह ध्यान दिया जाना चाहिए कि डेटा कैशिंग एक जटिल प्रक्रिया है जो कई तकनीकों और गणितीय एल्गोरिदम का उपयोग करती है। कैशिंग में उपयोग की जाने वाली बुनियादी अवधारणाओं में कैश लेखन विधियां और कैश एसोसिएटिविटी आर्किटेक्चर शामिल हैं।

    कैश लिखने के तरीके

    कैश मेमोरी में जानकारी लिखने की दो मुख्य विधियाँ हैं:

    1. राइट-बैक विधि - डेटा को पहले कैश में लिखा जाता है, और फिर, जब कुछ स्थितियाँ उत्पन्न होती हैं, तो रैम में लिखा जाता है।
    2. राइट-थ्रू विधि - डेटा को रैम और कैश में एक साथ लिखा जाता है।

    कैश एसोसिएटिविटी आर्किटेक्चर

    कैश एसोसिएटिविटी आर्किटेक्चर उस तरीके को परिभाषित करता है जिसमें रैम से डेटा को कैश में मैप किया जाता है। कैशिंग एसोसिएटिविटी आर्किटेक्चर के मुख्य विकल्प हैं:

    1. डायरेक्ट-मैप्ड कैश - कैश का एक विशिष्ट अनुभाग रैम के एक विशिष्ट अनुभाग के लिए जिम्मेदार होता है
    2. पूरी तरह से सहयोगी कैश - कैश का कोई भी हिस्सा रैम के किसी भी हिस्से से जुड़ा हो सकता है
    3. मिश्रित कैश (सेट-एसोसिएटिव)

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

    निष्कर्ष

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

    90 के दशक के उत्तरार्ध से सभी प्रोसेसरों में आंतरिक कैश मेमोरी (या बस कैश) होती है। कैश एक हाई-स्पीड मेमोरी है जिसमें प्रोसेसर द्वारा सीधे संसाधित निर्देश और डेटा स्थानांतरित किए जाते हैं।

    आधुनिक प्रोसेसर में दो स्तरों की अंतर्निहित कैश मेमोरी होती है - पहला (L1) और दूसरा (L2)। L1 कैश की सामग्री के साथ प्रोसेसर थोड़ा तेज़ है, जबकि L2 कैश आमतौर पर थोड़ा बड़ा होता है। कैश मेमोरी को प्रतीक्षा स्थिति के बिना एक्सेस किया जाता है, अर्थात। लेवल 1 कैश (ऑन-चिप कैश) प्रोसेसर गति पर काम करता है।

    इसका मतलब यह है कि यदि प्रोसेसर को आवश्यक डेटा कैश में है, तो प्रोसेसिंग में कोई देरी नहीं होती है। अन्यथा, प्रोसेसर को मुख्य मेमोरी से डेटा लाना होगा, जो सिस्टम प्रदर्शन को काफी कम कर देता है।

    दोनों स्तरों की कैश मेमोरी के संचालन के सिद्धांत को गुणात्मक रूप से समझने के लिए, आइए एक उदाहरण के रूप में रोजमर्रा की स्थिति पर विचार करें।

    आप हर दिन एक ही समय पर दोपहर का भोजन करने के लिए कैफे में आते हैं और हमेशा एक ही टेबल पर बैठते हैं। हमेशा एक मानक तीन-कोर्स सेट ऑर्डर करें।

    वेटर रसोई की ओर भागता है, रसोइया उन्हें एक ट्रे पर रखता है और फिर वे आपका ऑर्डर लाते हैं। और इसलिए, मान लीजिए, तीसरे दिन, वेटर, एक बार फिर से रसोई में न भागना पड़े, एक ट्रे पर तैयार गर्म दोपहर के भोजन के साथ नियत समय पर आपसे मिलता है।

    आपको अपने ऑर्डर के लिए इंतजार नहीं करना पड़ेगा और आपका काफी समय भी बचेगा। आपके बर्तनों वाली ट्रे प्रथम स्तर का कैश है। लेकिन चौथे दिन आप अचानक एक और डिश, जैसे मिठाई, जोड़ना चाहते हैं।

    हालाँकि आपके ऑर्डर के साथ एक ट्रे नियत समय पर पहले से ही आपका इंतजार कर रही थी, फिर भी वेटर को मिठाई के लिए रसोई में भागना पड़ा।

    और पांचवें पर - फिर से तीन वस्तुओं का एक मेनू। छठे पर - फिर से मिठाई, लेकिन पिछले वाले से अलग। और वेटर, यह नहीं जानता कि आप कौन सी मिठाई ऑर्डर करना चाहते हैं (और यह भी नहीं जानते कि आप कुछ भी ऑर्डर करेंगे या नहीं), अगला कदम उठाने का फैसला करता है: आपकी मेज के बगल में वह कई प्रकार की मिठाई के साथ एक कैबिनेट रखता है।

    और यदि आप इच्छा व्यक्त करते हैं, तो सब कुछ हाथ में है, रसोई में भागने की कोई जरूरत नहीं है। मिठाई कैबिनेट एक दूसरे स्तर का कैश है।

    प्रोसेसर का प्रदर्शन महत्वपूर्ण रूप से L1 कैश (16 से 128 KB तक) और L2 (64 KB से 512 KB तक, पेंटियम III Heop और AMD Opteron में 4 MB तक) के आकार पर निर्भर करता है।

    इंटेल पेंटियम III प्रोसेसर और इस पर आधारित सेलेरॉन प्रोसेसर का आकार 32 KB L1 कैश है। इंटेल पेंटियम 4, साथ ही इस पर आधारित सेलेरॉन और चेओप संस्करणों में केवल 20 केबी है। AMD ड्यूरॉन, एथलॉन (XP/MP सहित) और Opteron प्रोसेसर, साथ ही VIA SZ में 128 KB L1 कैश होता है।

    आधुनिक डुअल-कोर प्रोसेसर में प्रत्येक कोर के लिए अलग-अलग प्रथम-स्तरीय कैश होता है, इसलिए कभी-कभी कैश के विवरण में हम संख्या 128x2 देख सकते हैं। इसका मतलब है कि प्रत्येक प्रोसेसर कोर में 128 KB L1 कैश है।

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

    यह एक कारण है कि पेंटियम 4 अधिकांश सामान्य अनुप्रयोगों के लिए अपेक्षाकृत अप्रभावी है (हालांकि इसकी भरपाई इसकी उच्च क्लॉक स्पीड से होती है)। L1 कैश हमेशा आंतरिक प्रोसेसर आवृत्ति पर संचालित होता है (प्रोसेसर कोर के साथ सूचना का आदान-प्रदान करता है)।

    इसके विपरीत, विभिन्न प्रोसेसर मॉडल में L2 कैश अलग-अलग आवृत्तियों (और, तदनुसार, प्रदर्शन) पर काम करता है। इंटेल पेंटियम II से शुरुआत करते हुए, कई प्रोसेसरों ने प्रोसेसर की आधी आंतरिक आवृत्ति पर काम करने वाले L2 कैश का उपयोग किया।

    इस समाधान का उपयोग पुराने इंटेल पेंटियम III प्रोसेसर (550 मेगाहर्ट्ज तक) और पुराने एएमडी एथलॉन (उनमें से कुछ में आंतरिक एल 2 कैश प्रोसेसर कोर आवृत्ति के एक तिहाई पर संचालित) में किया गया था। L2 कैश का आकार भी प्रोसेसर के बीच भिन्न होता है।

    पुराने और कुछ नए इंटेल पेंटियम III प्रोसेसर में, L2 कैश का आकार 512 KB है, अन्य पेंटियम III प्रोसेसर में यह 256 KB है। पेंटियम III-आधारित इंटेल सेलेरॉन प्रोसेसर 128 और 256 KB L2 कैश के साथ उपलब्ध था, जबकि पेंटियम 4-आधारित प्रोसेसर केवल 128 KB के साथ उपलब्ध था। Intel Pentium 4 के Xeon संस्करण के विभिन्न संस्करणों में, 4 MB तक L2 कैश मेमोरी है।

    नए पेंटियम 4 प्रोसेसर (2000 मेगाहर्ट्ज की आवृत्ति वाली कुछ श्रृंखला और सभी उच्च आवृत्तियों के लिए) में 512 केबी एल2 कैश है, बाकी पेंटियम 4 में 256 केबी है। Xeop प्रोसेसर (पेंटियम 4 पर आधारित) में 256 या 512 KB L2 कैश है।

    इसके अलावा, उनके पास तीसरे स्तर का L3 कैश भी है। एकीकृत L3 कैश, एक तेज़ सिस्टम बस के साथ मिलकर, सिस्टम मेमोरी के साथ एक हाई-स्पीड डेटा एक्सचेंज चैनल बनाता है।

    एक नियम के रूप में, केवल सर्वर समाधान के लिए प्रोसेसर या "डेस्कटॉप" प्रोसेसर के विशेष मॉडल L3 कैश मेमोरी से लैस हैं। उदाहरण के लिए, Xeon DP, Itanium 2, और Xeon MP जैसी प्रोसेसर लाइनों में L3 कैश मेमोरी होती है।

    AMD ड्यूरॉन प्रोसेसर में 128 KB L1 कैश और 64 KB L2 कैश है। एथलॉन प्रोसेसर (सबसे पुराने को छोड़कर), एथलॉन एमपी और अधिकांश एथलॉन एक्सपी वेरिएंट में 128 केबी एल1 कैश और 256 केबी एल2 कैश है, और नवीनतम एथलॉन एक्सपी (2500+, 2800+, 3000+ और अधिक) में 512 केबी एल2 है। कैश. AMD Opteron में 1 MB L2 कैश है।

    इंटेल पेंटियम डी, इंटेल पेंटियम एम, इंटेल कोर 2 डुओ प्रोसेसर के नवीनतम मॉडल 6 एमबी एल2 कैश और कोर 2 क्वाड - 12 एमबी एल2 कैश के साथ उपलब्ध हैं।

    इस पुस्तक को लिखने के समय नवीनतम इंटेल कोर i7 प्रोसेसर में 4 कोर में से प्रत्येक के लिए 64 KB L1 कैश मेमोरी है, साथ ही प्रत्येक कोर के लिए 256 KB L2 मेमोरी है। पहले और दूसरे स्तर के कैश के अलावा, प्रोसेसर में सभी कोर के लिए एक तीसरा स्तर का कैश भी होता है, जो 8 एमबी के बराबर होता है।

    उन प्रोसेसरों के लिए जिनमें एक ही मॉडल के लिए अलग-अलग L2 कैश आकार (या Intel Xeon MP - L3 के मामले में) हो सकते हैं, इस आकार को बिक्री के समय इंगित किया जाना चाहिए (बेशक, प्रोसेसर की कीमत इस पर निर्भर करती है)। यदि प्रोसेसर को "बॉक्स्ड" पैकेज (इन-बॉक्स डिलीवरी) में बेचा जाता है, तो कैश मेमोरी का आकार आमतौर पर उस पर इंगित किया जाता है।

    सामान्य उपयोगकर्ता कार्यों (गेम सहित) के लिए, L2 कैश की गति उसके आकार से अधिक महत्वपूर्ण है; इसके विपरीत, सर्वर कार्यों के लिए वॉल्यूम अधिक महत्वपूर्ण है। सबसे अधिक उत्पादक सर्वर, विशेष रूप से बड़ी मात्रा में रैम (कई गीगाबाइट) वाले सर्वरों को L2 कैश के अधिकतम आकार और अधिकतम गति की आवश्यकता होती है।

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

    लगभग सभी डेवलपर्स जानते हैं कि प्रोसेसर कैश एक छोटी लेकिन तेज़ मेमोरी है जो हाल ही में देखे गए मेमोरी क्षेत्रों से डेटा संग्रहीत करता है - परिभाषा छोटी और काफी सटीक है। हालाँकि, कोड प्रदर्शन को प्रभावित करने वाले कारकों को समझने के लिए कैश तंत्र के बारे में उबाऊ विवरण जानना आवश्यक है।

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

    हैब्रकट - - -

    उदाहरण 1: मेमोरी एक्सेस और प्रदर्शन

    आपके अनुसार दूसरा चक्र पहले चक्र से कितना तेज़ है?
    int arr = नया int;

    // पहला
    (int i = 0; i के लिए)< arr.Length; i++) arr[i] *= 3;

    // दूसरा
    (int i = 0; i के लिए)< arr.Length; i += 16) arr[i] *= 3;


    पहला लूप सरणी में सभी मानों को 3 से गुणा करता है, दूसरा लूप केवल प्रत्येक सोलहवें मान को गुणा करता है। दूसरा चक्र ही पूरा होता है 6% कामपहला चक्र, लेकिन आधुनिक मशीनों पर दोनों चक्र लगभग समान समय में निष्पादित होते हैं: 80 एमएसऔर 78 एमएसक्रमशः (मेरी मशीन पर)।

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

    उदाहरण 2: कैश लाइन्स का प्रभाव

    आइए गहराई से जानें और केवल 1 और 16 ही नहीं, बल्कि अन्य चरण मानों को भी आज़माएँ:
    (int i = 0; i के लिए)< arr.Length; i += K /* шаг */ ) arr[i] *= 3;

    विभिन्न चरण मान K के लिए इस लूप का चलने का समय यहां दिया गया है:

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

    इसका कारण यह है कि आधुनिक प्रोसेसर एक समय में एक बाइट तक मेमोरी तक नहीं पहुंचते हैं, बल्कि छोटे ब्लॉकों में पहुंचते हैं जिन्हें कैश लाइन कहा जाता है। आमतौर पर स्ट्रिंग का आकार 64 बाइट्स होता है। जब आप मेमोरी से कोई मान पढ़ते हैं, तो कम से कम एक कैश लाइन कैश में आ जाती है। इस पंक्ति से किसी भी मूल्य तक बाद की पहुंच बहुत तेज़ है।

    चूँकि 16 int मान 64 बाइट्स पर कब्जा करते हैं, 1 से 16 तक के चरणों वाले लूप समान संख्या में कैश लाइनों, या अधिक सटीक रूप से, सरणी की सभी कैश लाइनों तक पहुँचते हैं। चरण 32 पर, प्रत्येक दूसरी पंक्ति तक पहुंच होती है, चरण 64 पर, प्रत्येक चौथी तक।

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

    उदाहरण 3: स्तर 1 और 2 कैश आकार (एल1 और एल2)

    आधुनिक प्रोसेसर में आमतौर पर कैश के दो या तीन स्तर होते हैं, जिन्हें आमतौर पर L1, L2 और L3 कहा जाता है। विभिन्न स्तरों पर कैश के आकार का पता लगाने के लिए, आप CoreInfo उपयोगिता या Windows API फ़ंक्शन GetLogicalProcessorInfo का उपयोग कर सकते हैं। दोनों विधियाँ प्रत्येक स्तर के लिए कैश लाइन आकार के बारे में भी जानकारी प्रदान करती हैं।

    मेरी मशीन पर, CoreInfo 32 KB L1 डेटा कैश, 32 KB L1 निर्देश कैश और 4 MB L2 डेटा कैश रिपोर्ट करता है। प्रत्येक कोर का अपना व्यक्तिगत L1 कैश होता है, L2 कैश कोर के प्रत्येक जोड़े द्वारा साझा किया जाता है:

    कैश मैप के लिए लॉजिकल प्रोसेसर: *--- डेटा कैश 0, लेवल 1, 32 KB, Assoc 8, LineSize 64 *--- निर्देश कैश 0, लेवल 1, 32 KB, Assoc 8, LineSize 64 -*-- डेटा कैश 1, लेवल 1, 32 केबी, एसोच 8, लाइनसाइज 64 -*-- निर्देश कैश 1, लेवल 1, 32 केबी, एसोच 8, लाइनसाइज 64 **-- यूनिफाइड कैश 0, लेवल 2, 4 एमबी, एसोच 16, लाइनसाइज 64 --*- डेटा कैश 2, लेवल 1, 32 केबी, एसोसिएट 8, लाइन साइज 64 --*- निर्देश कैश 2, लेवल 1, 32 केबी, एसोसिएट 8, लाइन साइज 64 ---* डेटा कैश 3, लेवल 1, 32 केबी, एसोसिएट 8, लाइन साइज 64 ---* निर्देश कैश 3, लेवल 1, 32 केबी, एसोसिएट 8, लाइन साइज 64 --** यूनिफाइड कैश 1, लेवल 2, 4 एमबी, एसोसिएट 16, लाइन साइज 64
    आइए इस जानकारी को प्रयोगात्मक रूप से जांचें। ऐसा करने के लिए, आइए अपने एरे से गुजरें, हर 16वें मान को बढ़ाते हुए - प्रत्येक कैश लाइन में डेटा को बदलने का एक आसान तरीका। जब हम अंत तक पहुँचते हैं, तो हम शुरुआत में लौट आते हैं। आइए अलग-अलग सरणी आकारों की जांच करें; जब सरणी विभिन्न स्तरों के कैश में फिट नहीं होती है तो हमें प्रदर्शन में गिरावट देखनी चाहिए।

    कोड है:

    पूर्णांक चरण = 64 * 1024 * 1024; // पुनरावृत्तियों की संख्या
    int lengthMod = arr.Length - 1; // सरणी आकार - दो की शक्ति

    (int i = 0; i के लिए)< steps; i++)
    {
    // x और lengthMod = x % arr.Length, क्योंकि दो की शक्तियाँ
    गिरफ्तारी[(i * 16) और लंबाईमोड]++;
    }


    परीक्षा के परिणाम:

    मेरी मशीन पर, 32 केबी और 4 एमबी के बाद प्रदर्शन में ध्यान देने योग्य गिरावट आती है - ये एल1 और एल2 कैश के आकार हैं।

    उदाहरण 4: अनुदेश समांतरता

    अब आइए कुछ और देखें. आपकी राय में, इन दोनों में से कौन सा लूप तेजी से निष्पादित होगा?
    पूर्णांक चरण = 256 * 1024 * 1024;
    int a = नया int ;

    // पहला
    (int i = 0; i के लिए)< steps; i++) { a++; a++; }

    // दूसरा
    (int i = 0; i के लिए)< steps; i++) { a++; a++; }


    यह पता चला है कि दूसरा लूप लगभग दोगुनी तेजी से चलता है, कम से कम उन सभी मशीनों पर जिनका मैंने परीक्षण किया। क्यों? क्योंकि लूप के अंदर के कमांड में अलग-अलग डेटा निर्भरता होती है। पहले कमांड में निर्भरता की निम्नलिखित श्रृंखला होती है:

    दूसरे चक्र में निर्भरताएँ हैं:

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

    उदाहरण 5: कैश एसोसिएटिविटी

    कैश डिज़ाइन करते समय जिन प्रमुख प्रश्नों का उत्तर दिया जाना चाहिए उनमें से एक यह है कि क्या एक निश्चित मेमोरी क्षेत्र से डेटा किसी कैश सेल में संग्रहीत किया जा सकता है या केवल उनमें से कुछ में। तीन संभावित समाधान:
    1. डायरेक्ट मैपिंग कैशरैम में प्रत्येक कैश लाइन का डेटा केवल एक, पूर्वनिर्धारित कैश स्थान पर संग्रहीत होता है। मैपिंग की गणना करने का सबसे सरल तरीका है: row_index_in_memory % number_of_cache_ells. एक ही सेल में मैप की गई दो लाइनें एक ही समय में कैश में नहीं हो सकतीं।
    2. एन-एंट्री आंशिक-सहयोगी कैश, प्रत्येक पंक्ति को एन अलग-अलग कैश स्थानों में संग्रहीत किया जा सकता है। उदाहरण के लिए, 16-प्रविष्टि कैश में, एक पंक्ति को समूह बनाने वाले 16 कक्षों में से एक में संग्रहीत किया जा सकता है। आमतौर पर, सूचकांकों के समान न्यूनतम महत्वपूर्ण बिट्स वाली पंक्तियाँ एक समूह साझा करती हैं।
    3. पूरी तरह से सहयोगी कैश, किसी भी लाइन को किसी भी कैश स्थान में संग्रहीत किया जा सकता है। समाधान अपने व्यवहार में हैश तालिका के बराबर है।
    डायरेक्ट-मैप किए गए कैश में विवाद की संभावना होती है, उदाहरण के लिए, जब दो पंक्तियाँ एक ही सेल के लिए प्रतिस्पर्धा करती हैं, बारी-बारी से एक-दूसरे को कैश से बाहर निकालती हैं, तो दक्षता बहुत कम होती है। दूसरी ओर, पूरी तरह से सहयोगी कैश, हालांकि इस नुकसान से मुक्त हैं, लागू करने के लिए बहुत जटिल और महंगे हैं। आंशिक रूप से सहयोगी कैश कार्यान्वयन जटिलता और दक्षता के बीच एक विशिष्ट व्यापार-बंद है।

    उदाहरण के लिए, मेरी मशीन पर, 4 एमबी एल2 कैश एक 16-एंट्री आंशिक-एसोसिएटिव कैश है। संपूर्ण रैम को उनके सूचकांकों के कम से कम महत्वपूर्ण बिट्स के अनुसार लाइनों के सेट में विभाजित किया गया है, प्रत्येक सेट की लाइनें 16 L2 कैश कोशिकाओं के एक समूह के लिए प्रतिस्पर्धा करती हैं।

    चूँकि L2 कैश में 65,536 सेल (4 * 2 20 / 64) हैं और प्रत्येक समूह में 16 सेल हैं, हमारे पास कुल 4,096 समूह हैं। इस प्रकार, पंक्ति सूचकांक के निचले 12 बिट यह निर्धारित करते हैं कि यह पंक्ति किस समूह से संबंधित है (2 12 = 4,096)। परिणामस्वरूप, 262,144 (4,096 * 64) के गुणकों वाले पतों वाली पंक्तियाँ 16 कोशिकाओं के एक ही समूह को साझा करती हैं और उसमें स्थान के लिए प्रतिस्पर्धा करती हैं।

    साहचर्य के प्रभावों को प्रभावी बनाने के लिए, हमें एक ही समूह से बड़ी संख्या में पंक्तियों तक लगातार पहुंचने की आवश्यकता है, उदाहरण के लिए, निम्नलिखित कोड का उपयोग करके:

    सार्वजनिक स्थैतिक लंबा अपडेटएवरीकेथबाइट(बाइट एआरआर, इंट के)
    {
    स्थिरांक int प्रतिनिधि = 1024 * 1024; // पुनरावृत्तियों की संख्या

    स्टॉपवॉच एसडब्ल्यू = स्टॉपवॉच.स्टार्टन्यू();

    पूर्णांक पी = 0;
    (int i = 0; i के लिए)< rep; i++)
    {
    गिरफ्तारी[पी]++;

    पी += के; यदि (p >= arr.Length) p = 0;
    }

    स्व.स्टॉप();
    वापसी sw.Elapsedमिलीसेकंड;
    }


    विधि सरणी के प्रत्येक Kth तत्व को बढ़ाती है। जब हम अंत तक पहुँचते हैं, तो हम फिर से शुरू करते हैं। काफी बड़ी संख्या में पुनरावृत्तियों (2 20) के बाद, हम रुकते हैं। मैंने विभिन्न सरणी आकारों और K चरण मानों के लिए रन बनाए (नीला - लंबे समय तक चलने वाला समय, सफेद - छोटा):

    नीले क्षेत्र उन मामलों से मेल खाते हैं, जब लगातार डेटा परिवर्तन के साथ, कैश समायोजित करने में सक्षम नहीं होता है सभी आवश्यक डेटा एक साथ. एक चमकीला नीला रंग लगभग 80 एमएस के संचालन समय को इंगित करता है, लगभग सफेद - 10 एमएस।

    आइए नीले क्षेत्रों से निपटें:

    1. खड़ी रेखाएँ क्यों दिखाई देती हैं?लंबवत रेखाएँ चरण मानों के अनुरूप होती हैं जिन पर एक समूह से बहुत अधिक पंक्तियाँ (16 से अधिक) पहुँची होती हैं। इन मानों के लिए, मेरी मशीन का 16-एंट्री कैश सभी आवश्यक डेटा को समायोजित नहीं कर सकता है।

      कुछ ख़राब स्ट्राइड मान दो की शक्तियाँ हैं: 256 और 512। उदाहरण के लिए, स्ट्राइड 512 और 8 एमबी सरणी पर विचार करें। इस चरण के साथ, सरणी में 32 खंड (8 * 2 20/262 144) हैं, जो 512 कैश समूहों (262 144/512) में कोशिकाओं के लिए एक दूसरे के साथ प्रतिस्पर्धा करते हैं। 32 अनुभाग हैं, लेकिन प्रत्येक समूह के लिए कैश में केवल 16 सेल हैं, इसलिए सभी के लिए पर्याप्त जगह नहीं है।

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

    2. 4 एमबी सीमा पर खड़ी रेखाएँ क्यों टूट जाती हैं?जब सरणी का आकार 4 एमबी या उससे कम होता है, तो 16-एंट्री कैश पूरी तरह से सहयोगी कैश की तरह व्यवहार करता है, यानी, यह बिना किसी विरोध के सरणी में सभी डेटा को समायोजित कर सकता है। एक कैश समूह (262,144 * 16 = 4 * 2 20 = 4 एमबी) के लिए 16 से अधिक क्षेत्र नहीं लड़ रहे हैं।
    3. ऊपर बाईं ओर एक बड़ा नीला त्रिकोण क्यों है?क्योंकि एक छोटे कदम और एक बड़ी सरणी के साथ, कैश सभी आवश्यक डेटा को फिट करने में सक्षम नहीं है। कैश संबद्धता की डिग्री यहां एक द्वितीयक भूमिका निभाती है; सीमा L2 कैश के आकार से संबंधित है।

      उदाहरण के लिए, 16 एमबी के सरणी आकार और 128 की स्ट्राइड के साथ, हम प्रत्येक 128वें बाइट तक पहुंचते हैं, इस प्रकार प्रत्येक दूसरी सरणी कैश लाइन को संशोधित करते हैं। कैश में प्रत्येक दूसरी पंक्ति को संग्रहीत करने के लिए, आपको 8 एमबी कैश की आवश्यकता है, लेकिन मेरी मशीन पर केवल 4 एमबी है।

      भले ही कैश पूरी तरह से सहयोगी हो, यह 8 एमबी डेटा को इसमें संग्रहीत करने की अनुमति नहीं देगा। ध्यान दें कि 512 की प्रगति और 8 एमबी के सरणी आकार के साथ पहले से ही चर्चा किए गए उदाहरण में, हमें सभी आवश्यक डेटा संग्रहीत करने के लिए केवल 1 एमबी कैश की आवश्यकता है, लेकिन अपर्याप्त कैश सहयोगीता के कारण यह असंभव है।

    4. त्रिभुज का बायां भाग धीरे-धीरे तीव्रता में क्यों बढ़ता जाता है?अधिकतम तीव्रता 64 बाइट्स के चरण मान पर होती है, जो कैश लाइन के आकार के बराबर है। जैसा कि हमने पहले और दूसरे उदाहरण में देखा, एक ही पंक्ति तक क्रमिक पहुंच की लागत लगभग कुछ भी नहीं है। मान लीजिए, 16 बाइट्स के एक चरण के साथ, हमारे पास एक की कीमत पर चार मेमोरी एक्सेस हैं।

      चूँकि किसी भी चरण मान के लिए हमारे परीक्षण में पुनरावृत्तियों की संख्या समान है, एक सस्ते कदम के परिणामस्वरूप कम चलने वाला समय होता है।

    खोजे गए प्रभाव बड़े पैरामीटर मानों पर बने रहते हैं:

    कैश एसोसिएटिविटी एक दिलचस्प चीज़ है जो कुछ शर्तों के तहत खुद को प्रकट कर सकती है। इस लेख में चर्चा की गई अन्य समस्याओं के विपरीत, यह इतनी गंभीर नहीं है। यह निश्चित रूप से ऐसा कुछ नहीं है जिस पर प्रोग्राम लिखते समय निरंतर ध्यान देने की आवश्यकता हो।

    उदाहरण 6: गलत कैश विभाजन

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

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

    आइए इस समस्या को निम्नलिखित कोड के साथ प्रदर्शित करें:

    निजी स्थैतिक पूर्णांक s_counter = नया पूर्णांक;

    निजी शून्य अपडेटकाउंटर (पूर्णांक स्थिति)
    {
    (int j = 0; j के लिए)< 100000000; j++)
    {
    s_counter = s_counter + 3;
    }
    }


    यदि मैं अपनी चार-कोर मशीन पर इस विधि को पैरामीटर 0, 1, 2, 3 के साथ एक साथ चार थ्रेड्स से कॉल करता हूं, तो चलने का समय होगा 4.3 सेकंड. लेकिन अगर मैं पैरामीटर 16, 32, 48, 64 के साथ विधि को कॉल करता हूं, तो चलने का समय केवल होगा 0.28 सेकंड.

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

    उदाहरण 7: हार्डवेयर जटिलता

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

    कुछ प्रोसेसरों का L1 कैश समानांतर में दो कोशिकाओं तक पहुंच सकता है यदि वे अलग-अलग समूहों से संबंधित हैं, लेकिन यदि वे एक ही समूह से संबंधित हैं, तो केवल क्रमिक रूप से। जहां तक ​​मुझे पता है, कुछ लोग समानांतर में एक ही सेल के विभिन्न क्वार्टरों तक भी पहुंच सकते हैं।

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

    यहां अजीब हार्डवेयर विचित्रताओं का एक और उदाहरण दिया गया है:

    निजी स्थिर पूर्णांक ए, बी, सी, डी, ई, एफ, जी;

    निजी स्थैतिक शून्य अजीबता()
    {
    (int i = 0; i के लिए)< 200000000; i++)
    {
    <какой-то код>
    }
    }


    यदि इसके बजाय<какой-то код>तीन अलग-अलग विकल्पों को प्रतिस्थापित करने पर, आप निम्नलिखित परिणाम प्राप्त कर सकते हैं:

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

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

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

    निष्कर्ष

    मुझे आशा है कि ऊपर चर्चा की गई सभी बातों से आपको प्रोसेसर कैश के डिज़ाइन को समझने में मदद मिली होगी। अब आप अपने कोड को अनुकूलित करने के लिए इस ज्ञान को व्यवहार में ला सकते हैं।