2011-01-12 18 views
19

अधिकांश प्रोसेसर में एल 2 कैश की तुलना में एल 1 कैश का आकार छोटा क्यों है?अधिकांश प्रोसेसर में एल 2 कैश की तुलना में एल 1 कैश का आकार छोटा क्यों है?

+1

सुपरयूसर पर कुछ हद तक संबंधित प्रश्न: ["वास्तव में प्रोसेसर में बहुस्तरीय कैश क्या है?"] (Http://superuser.com/q/269080/180742) –

+1

संबंधित: http://electronics.stackexchange.com/questions/10475 9/क्यों-is-l1-cache-fast-than-l2-cache –

उत्तर

26

इसके लिए अलग-अलग कारण हैं।

एल 2 सिस्टम में मौजूद है मामले में जहां एक एल 1 कैश याद आती है speedup करने के लिए। यदि एल 1 का आकार एल 2 के आकार की तुलना में समान या बड़ा था, तो एल 2 एल 1 की तुलना में अधिक कैश लाइनों के लिए समायोजित नहीं हो सका, और एल 1 कैश मिस से निपटने में सक्षम नहीं होगा। डिजाइन/लागत परिप्रेक्ष्य से, एल 1 कैश प्रोसेसर से जुड़ा हुआ है और एल 2 से तेज़ है। कैश का पूरा विचार यह है कि आप धीमी हार्डवेयर की तुलना में धीमी हार्डवेयर तक पहुंच को तेज करते हैं जो धीमे हार्डवेयर की तुलना में अधिक प्रदर्शन (और महंगा) है और आपके पास तेज़ हार्डवेयर की तुलना में सस्ता है। यहां तक ​​कि यदि आपने एल 1 कैश को दोगुना करने का फैसला किया है, तो भी आप एल 1-कैश मिस को गति देने के लिए एल 2 बढ़ाएंगे।

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

+0

मुझे पता है कि यह एक पुराना जवाब है, लेकिन एल 1 कैश को दोगुना करना कैश या कोर की मात्रा के बावजूद लागत को दोगुना कर देगा। – Fascia

+0

@ फासिशिया: आप पूरी तरह से सही हैं (मेरे गणित के शिक्षक आज क्या कहेंगे!)। मैंने इसे इच्छित अर्थ में पुन: पेश करने का प्रयास किया है: एल 1 बढ़ाने की लागत को कोर की संख्या से गुणा किया जाता है क्योंकि इसे साझा नहीं किया जाता है। –

+0

@ डेविडरोड्रिगुएज़-ड्राईबीस: मेरा मतलब यह नहीं था कि आप गलत थे। एल 1 कैश मिस 'के मामले में' एल 2 मौजूद है, जो एल 1 में कैश मिस को गति देने के लिए सिस्टम में मौजूद है 'एल 2 से अधिक स्पष्ट है। मैंने सोचा कि 'स्पीडअप कैश मिस' गुमराह करने वाला है। – arunmoezhi

2

मैं इस IST लिए मुख्य reasone लगता है कि एल 1-कैश तेजी से होता है और इसलिए यह अधिक महंगा है।

+0

@Chiffre: क्या आपका कहना है कि एल 1-कैश और एल 2-कैश विभिन्न मेमोरी तकनीक से बने हैं? –

+1

@ एसमन: हां, प्रत्येक कैश प्रकार की लागत बाकी की तुलना में अलग है। सामान्य प्रदर्शन और लागत में निम्नानुसार है: एल 1> एल 2> [एल 3>] मुख्य स्मृति। अन्यथा आप एक ही कीमत पर सबसे तेज़ तकनीक के साथ सबकुछ तैयार करेंगे। इससे एल 1 आकार एल 2 से बड़ा नहीं होगा, लेकिन एल 1 + एल 2 के संचयी आकार के साथ एल 2 को पूरी तरह हटा दें और एल 1 बनाएं। –

+0

@ एसमैन: एक कोर के लिए, यदि प्रदर्शन (और लागत, आप प्रदर्शन की प्रदान की गई सस्ती तकनीक के लिए भुगतान करेंगे) एल 1 और एल 2 समान थे, तो 1 एम एल 1 और 2 एम एल 2 के समान लागत होगी एक 3 एम एल 1 और कोई एल 2 पूरी तरह से होने के रूप में। कैश आकार के तीन गुना के साथ, कैश मिस की संख्या छोटी होगी और सिस्टम एक ही कीमत पर तेज़ी से होगा। –

37

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

एल 2, एल 1 केवल थोड़ा चूक पर पहुँचा जा सकता है तो पहुंच लगातार कम (आमतौर पर 1/20 वीं एल 1 की) कर रहे हैं। इस प्रकार, एल 2 में उच्च विलंबता हो सकती है (उदाहरण के लिए 10 से 20 चक्र) और कम बंदरगाह होते हैं। यह डिजाइनरों को इसे बड़ा बनाने की अनुमति देता है।


एल 1 और एल 2 बहुत अलग भूमिका निभाते हैं। यदि एल 1 बड़ा हो गया है, तो यह एल 1 एक्सेस विलंबता को बढ़ाएगा जो प्रदर्शन को काफी हद तक कम कर देगा क्योंकि यह सभी आश्रित लोड को धीमा और कठिन बनाने के लिए आउट ऑफ़ ऑर्डर निष्पादन के लिए कठिन बना देगा। एल 1 आकार मुश्किल से बहस योग्य है।

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

विशेषज्ञ अक्सर एल 1 को विलंबता फ़िल्टर के रूप में संदर्भित करते हैं (क्योंकि यह एल 1 हिट का सामान्य मामला तेजी से बनाता है) और एल 2 बैंडविड्थ फ़िल्टर के रूप में संदर्भित करता है क्योंकि यह मेमोरी बैंडविड्थ उपयोग को कम करता है।

नोट: मैंने इसे सरल बनाने के लिए अपने तर्क में 2-स्तर cache hierarchy माना है। आज के कई मल्टीकोर चिप्स में, सभी कोरों के बीच एक एल 3 कैश साझा किया जाता है, जबकि प्रत्येक कोर का अपना निजी एल 1 और शायद एल 2 होता है। इन चिप्स में, साझा अंतिम-स्तर कैश (एल 3) मेमोरी बैंडविड्थ फ़िल्टर की भूमिका निभाता है। एल 2 ऑन-चिप बैंडविड्थ फ़िल्टर की भूमिका निभाता है, यानी यह ऑन-चिप इंटरकनेक्ट और एल 3 तक पहुंच को कम कर देता है। यह डिजाइनरों को एक अंगूठी की तरह निचले बैंडविड्थ इंटरकनेक्ट का उपयोग करने की अनुमति देता है, और एक धीमी सिंगल-पोर्ट एल 3, जो उन्हें एल 3 बड़ा बनाने की अनुमति देता है।

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

+0

मैंने दो स्थानों पर संख्याओं के लिए एक सुधार में संपादित किया (एक चक्र विलंबता एल 1 को VIVT होना चाहिए, और बहुत आसान), लेकिन मैं जो भी चाहता था उसे कहने के लिए अपना खुद का जवाब लिखना समाप्त कर दिया। [अधिक जानकारी के लिए मेरा उत्तर] देखें (http://stackoverflow.com/questions/4666728/why-is-the-size-of-l1-cache-smaller-than-that-of-the-l2-cache-in -स्ट-ऑफ-द-प्रो/38549736 # 38549736), और असली एएमडी और इंटेल CPUs के लिए विलंबता/आकार/सहयोगीता के लिए वास्तविक संख्याएं। उनके कैश विरासत बहुत अलग हैं। –

2

इस प्रकार के प्रश्नों में रुचि रखने वालों के लिए, मेरा विश्वविद्यालय Computer Architecture: A Quantitative Approach और Computer Organization and Design: The Hardware/Software Interface की सिफारिश करता है। बेशक, यदि आपके पास इसके लिए समय नहीं है, तो Wikipedia पर एक त्वरित अवलोकन उपलब्ध है।

+0

मई मैं कंप्यूटर संगठन और वास्तुकला, आठ संस्करण की भी सिफारिश कर सकता हूं। विलियम स्टॉलिंग्स द्वारा (अध्याय 4)। –

-1

तार्किक रूप से, प्रश्न स्वयं उत्तर देता है।

यदि एल 1 एल 2 (संयुक्त) से बड़ा था, तो एल 2 कैश की आवश्यकता नहीं होगी।

यदि आप एचडीडी पर इसे स्टोर कर सकते हैं तो आप टेप ड्राइव पर अपनी सामग्री क्यों स्टोर करेंगे?

+4

-1 आपका उत्तर सीपीयू कैशिंग की बुनियादी समझ मानता है, जो कई इच्छुक पाठकों के लिए मामला नहीं हो सकता है। इसके अलावा, यह वर्तमान उत्तरों के लिए कोई अतिरिक्त मूल्य नहीं जोड़ता है। – FreeAsInBeer

+0

एल 2 एल 1 में संघर्ष मिस के लिए दंड को कम करने के लिए एक अत्यधिक सहयोगी पीड़ित कैश हो सकता है। (विशेष रूप से यदि एल 1 सरल है, उदाहरण के लिए प्रत्यक्ष-मैप किया गया)। इस मामले में एल 2 उपयोगी हो सकता है भले ही यह एल 1 से काफी छोटा हो। –

12

@Aater's answer explains some of the basics। मैं कुछ और विवरण जोड़ूंगा + इंटेल हैसवेल और एएमडी पिलड्रिवर पर असली कैश संगठन के उदाहरण, विलंबता और अन्य गुणों के साथ, केवल आकार के साथ नहीं।


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

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

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

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

एल 1 गति गति का भी उपयोग करता है जो काम नहीं करेगा अगर यह बड़ा था। यानी अधिकांश डिज़ाइन Virtually-Indexed, Physically Tagged (VIPT) एल 1 का उपयोग करते हैं, लेकिन पेज ऑफसेट से नीचे आने वाली सभी इंडेक्स बिट्स के साथ वे पीआईपीटी की तरह व्यवहार करते हैं (क्योंकि वर्चुअल एड्रेस के कम बिट्स भौतिक पते के समान होते हैं)। यह synonyms/homonyms (झूठी हिट या दो बार कैश में एक ही डेटा होने से बचाता है, और लिंक क्लेटन के लिंक किए गए प्रश्न पर विस्तृत उत्तर देखता है), लेकिन फिर भी टीएलबी लुकअप के साथ समानांतर में हिट/मिस चेक का हिस्सा बनने देता है। एक VIVT कैश को टीएलबी के लिए इंतजार नहीं करना पड़ता है, लेकिन इसे पृष्ठ सारणी में प्रत्येक बदलाव पर अमान्य किया जाना चाहिए।

x86 (जो 4kiB वर्चुअल मेमोरी पेज का उपयोग करता है) पर, 32kiB 8-way सहयोगी एल 1 कैश आधुनिक डिज़ाइनों में आम हैं। 8 टैग वर्चुअल एड्रेस के निम्न 12 बिट्स के आधार पर लाए जा सकते हैं, क्योंकि उन बिट्स आभासी और भौतिक पते में समान हैं (वे 4kiB पृष्ठों के लिए ऑफसेट पेज के नीचे हैं)।एल 1 कैश के लिए यह स्पीड-हैक केवल तभी काम करता है जब वे पर्याप्त छोटे और सहयोगी पर्याप्त हों कि इंडेक्स टीएलबी परिणाम पर निर्भर नहीं है। 32kiB/64B लाइनें/8-तरफा सहयोगीता = 64 (2^6) सेट। इसलिए किसी पते के निम्नतम 6 बिट्स लाइन के भीतर बाइट्स का चयन करते हैं, और अगले 6 बिट्स इंडेक्स 8 टैग का एक सेट चुनें। 8 टैग का यह सेट टीएलबी लुकअप के साथ समानांतर में लाया जाता है, इसलिए टैग को टीएलबी परिणाम के भौतिक-पृष्ठ चयन बिट्स के विपरीत समानांतर में चेक किया जा सकता है यह निर्धारित करने के लिए कि कैश के 8 तरीकों में से कौन सा (यदि कोई है) डेटा धारण करता है ।

एक बड़ा एल 1 कैश बनाना मतलब है कि इसे या तो टीएलबी परिणाम की प्रतीक्षा करनी पड़ेगी इससे पहले कि वह टैग लाने और समानांतर तुलनाकर्ताओं में लोड करना शुरू कर दे, या इसे लॉग 2 (सेट) रखने के लिए सहयोगीता में वृद्धि करना होगा + लॉग 2 (line_size) < = 12. (अधिक सहयोगीता का मतलब है प्रति सेट के अधिक तरीके, कम कुल सेट)। तो उदा। एक 64kiB कैश को 16-तरफा सहयोगी होने की आवश्यकता होगी: अभी भी 64 सेट हैं, लेकिन प्रत्येक सेट में दो बार कई तरीके हैं। यह मौजूदा आकार से अधिक एल 1 आकार को क्षेत्र के संदर्भ में निषिद्ध रूप से महंगा बनाता है, और शायद विलंबता भी बनाता है। एक कैश जितना बड़ा होगा, उतना ही आप इसे फ्लश करके खो देंगे, इसलिए एक बड़ा वीवीटी एल 1 कैश वर्तमान वीआईपीटी-द-वर्क्स-जैसी-पीआईपीटी से भी बदतर होगा।

According to @PaulClayton, एल 1 कैश अक्सर सभी डेटा टैग के साथ समानांतर में एक सेट में लाने, तो यह एक बार सही टैग का पता चला है का चयन किया जा करने के लिए तैयार है। सहयोगीता के साथ इस तराजू को करने की बिजली लागत, इसलिए एक बड़े उच्च-सहयोगी एल 1 बिजली के उपयोग के साथ-साथ मरने वाले क्षेत्र (और विलंबता) के लिए वास्तव में बुरा होगा।

धीमी कैश (जैसे एल 3) कम गर्मी बनाने के लिए कम वोल्टेज/घड़ी की गति पर चल सकते हैं। वे प्रत्येक स्टोरेज सेल के लिए ट्रांजिस्टर की विभिन्न व्यवस्थाओं का भी उपयोग कर सकते हैं, ताकि स्मृति को उच्च गति की तुलना में अधिक अनुकूलित किया जा सके।

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


एल 1 लगभग हमेशा अलग शिक्षा और डेटा संचय में विभाजित है। कोड-फ़ेच का समर्थन करने के लिए एक एकीकृत L1 में अतिरिक्त पढ़ने वाले बंदरगाह के बजाय, हमारे पास एक अलग I-TLB से अलग एक अलग L1I कैश हो सकता है। (आधुनिक सीपीयू में अक्सर एल 2-टीएलबी होता है, जो एल 1 आई-टीएलबी और डी-टीएलबी द्वारा साझा किए जाने वाले अनुवादों के लिए कैश का दूसरा स्तर होता है, नियमित एल 2 कैश द्वारा उपयोग किए जाने वाले टीएलबी नहीं)। यह हमें कुल मिलाकर थ्रूपुट के साथ एक राक्षस 64k एल 1 एकीकृत कैश की तुलना में बहुत सस्ता (और शायद कम विलंबता) के लिए कोड और डेटा कैश में स्थिर रूप से विभाजित, L1 कैश का 64kiB देता है। चूंकि आमतौर पर कोड और डेटा के बीच बहुत कम ओवरलैप होता है, यह एक बड़ी जीत है।

एल 1 आई को भौतिक रूप से कोड-फ़ेच तर्क के करीब रखा जा सकता है, जबकि एल 1 डी लोड/स्टोर इकाइयों के भौतिक रूप से बंद हो सकता है। स्पीड-ऑफ-लाइट ट्रांसमिशन-लाइन देरी एक बड़ा सौदा है जब घड़ी का चक्र नैनोसेकंड का केवल 1/3 रहता है। तारों का राउटिंग भी एक बड़ा सौदा है: उदा। Intel Broadwell has 13 layers of copper above the silicon

स्प्लिट एल 1 गति के साथ बहुत मदद करता है, लेकिन एकीकृत एल 2 सबसे अच्छा विकल्प है। कुछ वर्कलोड में बहुत छोटा कोड है लेकिन बहुत सारे डेटा स्पर्श करें। यह कोड बनाम डेटा में स्थैतिक रूप से विभाजित करने के बजाय, विभिन्न वर्कलोड को अनुकूलित करने के लिए उच्च स्तरीय कैश को एकीकृत करने के लिए समझ में आता है। (उदाहरण के लिए लगभग सभी एल 2 डेटा को कैशिंग डेटा नहीं करेंगे, कोड नहीं, एक बड़ा मैट्रिक्स गुणा करते समय, बनाम एक ब्लोटेड सी ++ प्रोग्राम चलाते समय बहुत सारे कोड को गर्म करते हैं, या यहां तक ​​कि जटिल एल्गोरिदम (जैसे जीसीसी चलाना) का एक कुशल कार्यान्वयन भी होता है।)। कोड को डेटा के रूप में प्रतिलिपि बनाई जा सकती है, हमेशा डीएमए के साथ डिस्क में डिस्क से लोड नहीं होती है।


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

बड़े-छोटे ट्रैफिक कैश प्री-फ़ेचिंग तर्क रखने के लिए भी एक अच्छी जगह हैं। हार्डवेयर प्री-फ़ेचिंग सॉफ़्टवेयर-प्रीफेच निर्देशों की आवश्यकता वाले कोड के प्रत्येक टुकड़े के बिना सरणी पर लूपिंग जैसी चीजों के लिए अच्छा प्रदर्शन सक्षम बनाता है। (एसडब्ल्यू प्रीफेच थोड़ी देर के लिए महत्वपूर्ण था, लेकिन एचडब्लू प्रीफेचर्स उनसे ज्यादा चालाक थे, ताकि Ulrich Drepper's otherwise excellent What Every Programmer Should Know About Memory में सलाह कई उपयोग मामलों के लिए पुरानी हो।)

कम ट्रैफिक उच्च स्तर के कैश बर्दाश्त कर सकते हैं सामान्य एलआरयू के बजाय अनुकूली प्रतिस्थापन नीति का उपयोग करने जैसी चतुर चीजों को करने की विलम्ब। Intel IvyBridge and later CPUs do this, उन पहुंच पैटर्न का विरोध करने के लिए जो एक काम सेट के लिए कैश हिट नहीं करते हैं, कैश में फ़िट होने के लिए थोड़ा बड़ा है। (उदाहरण के लिए एक ही दिशा में कुछ डेटा पर पाशन दो बार इसका मतलब यह शायद बेदखल हो जाता है बस से पहले ही पुन: उपयोग किया जाएगा।)


एक वास्तविक उदाहरण: इंटेल Haswell। स्रोत: David Kanter's microarchitecture analysis और Agner Fog's testing results (microarch pdf)। इंटेल के अनुकूलन मैनुअल भी देखें ( टैग विकी में लिंक)।

आधुनिक इंटेल डिज़ाइन सभी कोर as a backstop for cache-coherence traffic द्वारा साझा किए गए एक बड़े समावेशी एल 3 कैश का उपयोग करते हैं। यह 2048 सेट * 16-रास्ता (2 एमआईबी) प्रति कोर (an adaptive replacement policy in IvyBridge and later के साथ) के साथ कोर के बीच शारीरिक रूप से वितरित किया जाता है।

कैश के निचले स्तर प्रति-कोर हैं।

  • एल 1: प्रति कोर 32kiB प्रत्येक अनुदेश और डेटा (विभाजन), 8-जिस तरह से साहचर्य। लेटेंसी = 4 चक्र। कम से कम 2 पढ़ने वाले पोर्ट + 1 लिखने वाले पोर्ट। (Maybe even more ports to handle traffic between L1 and L2, या हो सकता है कि स्टोर को सेवानिवृत्त करने के साथ एल 2 संघर्षों से कैश लाइन प्राप्त हो।) 10 उत्कृष्ट कैश मिस (10 भरने वाले बफर) ट्रैक कर सकते हैं।
  • एल 2: एकीकृत प्रति-कोर 256kiB, 8-तरफा सहयोगी। लेटेंसी = 11 या 12 चक्र। बैंडविड्थ पढ़ें: 64 बाइट/चक्र। मुख्य prefetching तर्क एल 2 में prefetches। 16 उत्कृष्ट मिस ट्रैक कर सकते हैं। एल 1 आई या एल 1 डी में प्रति चक्र 64 बी की आपूर्ति कर सकते हैं। वास्तविक बंदरगाह अज्ञात मायने रखता है।
  • एल 3: एकीकृत, साझा (सभी कोरों द्वारा) 8 एमआईबी (क्वाड-कोर i7 के लिए)। समावेशी (सभी एल 2 और एल 1 प्रति-कोर कैशों में से)। 12 या 16 रास्ता सहयोगी। लेटेंसी = 34 चक्र। कैश-कोहेरेंसी के लिए बैकस्टॉप के रूप में कार्य करता है, इसलिए संशोधित साझा डेटा को मुख्य स्मृति और पीछे जाने की आवश्यकता नहीं होती है।

एक और वास्तविक उदाहरण: AMD Piledriver: (। उदा Opteron और डेस्कटॉप FX सीपीयू) कैश लाइन आकार अभी भी 64B इंटेल और एएमडी की तरह अब कई वर्षों के लिए इस्तेमाल किया है है। टेक्स्ट ज्यादातर एग्नेर फोग के माइक्रोआर्क पीडीएफ, with additional info from some slides I found से कॉपी किया गया है, और comment that only L1 is WT, not L2 के साथ लिखने के माध्यम से L1 + 4k लिखने-संयोजन कैश on Agner's blog पर अधिक जानकारी प्राप्त की गई है।

  • L1I: 64 kB, 2 तरह, कोर (एसएमडी के एएमडी के संस्करण Hyperthreading की तुलना में अधिक स्थिर विभाजन है, और वे हर एक एक कोर फोन प्रत्येक जोड़ी के शेयरों एक वेक्टर/एफपीयू की एक जोड़ी के बीच साझा किया। इकाई, और अन्य पाइपलाइन संसाधन।)
  • एल 1 डी: 16 केबी, 4-रास्ता, प्रति कोर। लेटेंसी = 3-4 सी। (ध्यान दें कि पृष्ठ ऑफसेट के नीचे सभी 12 बिट्स अभी भी इंडेक्स के लिए उपयोग किए जाते हैं, इसलिए सामान्य वीआईपीटी चाल काम करता है।) (थ्रूपुट: प्रति घड़ी दो ऑपरेशन, उनमें से एक स्टोर होने के लिए)। Policy = Write-Through, 4k लिखने-संयोजन कैश के साथ।
  • एल 2: 2 एमबी, 16-रास्ता, दो कोर के बीच साझा किया गया। लेटेंसी = 20 घड़ियों। थ्रूपुट 1 प्रति 4 घड़ी पढ़ें। प्रति 12 घड़ी के माध्यम से थ्रूपुट लिखें।
  • एल 3: 0 - 8 एमबी, 64-रास्ता, सभी कोर के बीच साझा किया गया। लेटेंसी = 87 घड़ी। थ्रूपुट 1 प्रति 15 घड़ी पढ़ें। थ्रूपुट 1 प्रति 21 घड़ी

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

+0

मैंने कभी भी पढ़े गए सबसे अच्छे उत्तरों में से एक है। बहुत उपयोगी, धन्यवाद! – mdenton8

संबंधित मुद्दे