2011-12-12 9 views
5

मैं कुछ एल्गोरिदम पर कुछ मानक चला रहा हूं और उनकी मेमोरी उपयोग और दक्षता (एल 1/एल 2/टीएलबी एक्सेस और मिस) प्रोफाइलिंग कर रहा हूं, और कुछ परिणाम मेरे लिए काफी दिलचस्प हैं।जब एल 1 मिस एल 2 एक्सेस से बहुत अलग हैं ... टीएलबी संबंधित?

, एक समावेशी कैश पदानुक्रम (L1 और L2 कैश) को ध्यान में रखते चाहिए नहीं एल 1 कैश की संख्या याद करते हैंL2 कैश की संख्या तक पहुँचता है के साथ मेल खाना? मुझे मिली स्पष्टीकरणों में से एक टीएलबी से संबंधित होगा: जब टीएलबी में वर्चुअल एड्रेस मैप नहीं किया जाता है, तो सिस्टम स्वचालित रूप से कुछ कैश स्तरों में खोजों को छोड़ देता है। क्या यह वैध लगता है?

उत्तर

6

पहला, समावेशी कैश पदानुक्रम आप मानते हैं तो इतना आम नहीं हो सकता है। उदाहरण के लिए, मुझे लगता है कि कोई भी मौजूदा इंटेल प्रोसेसर नहीं - नेहलेम नहीं, सैंडीब्रिज नहीं, संभवतः परमाणुओं - एक एल 1 है जो एल 2 के भीतर शामिल है। (हालांकि, नेहलेम और शायद सैंड्रिब्रिज दोनों में एल 1 और एल 2 दोनों एल 3 के भीतर शामिल हैं; एलएलसी में इंटेल की वर्तमान शब्दावली, एफएलसी और एमएलसी का उपयोग करते हुए।)

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

वैसे भी, यहां कुछ कारण हैं कि एल 1 कैश मिस की संख्या एल 2 कैश एक्सेस की संख्या के बराबर नहीं हो सकती है।

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

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

संक्षिप्त उत्तर: इनमें से कई सट्टा मेमोरी एक्सेस एक ही स्मृति स्थान पर होंगे। वे squashed और संयुक्त किया जाएगा।

प्रदर्शन कार्यक्रम "एल 1 कैश मिस" शायद [*] एल 1 कैश से चूकने वाले सट्टा (सट्टा) निर्देशों की संख्या की गणना कर रहा है। जो तब एक हार्डवेयर डेटा संरचना आवंटित करता है, जिसे इंटेल को एक भरने वाला बफर कहा जाता है, कुछ अन्य स्थानों पर मिस स्टेटस हैंडलिंग रजिस्टर। बाद में कैश लाइन जो एक ही कैश लाइन के लिए हैं, एल 1 कैश से चूक जाएंगी लेकिन भरने वाले बफर को हिट करेंगी, और स्क्वैश हो जाएगी। उनमें से केवल एक, आम तौर पर पहले एल 2 को भेजा जाएगा, और एल 2 एक्सेस के रूप में गिना जाएगा।)

वैसे, इसके लिए एक प्रदर्शन कार्यक्रम हो सकता है: Squashed_Cache_Misses।

([*] वैसे, जब मैं कहता हूं "शायद" मेरा मतलब है "मशीनों पर मैंने डिजाइन करने में मदद की"। लगभग निश्चित रूप से मुझे परिभाषा की जांच करनी होगी, आरटीएल देखें, लेकिन मैं चाहता हूं अगर नहीं तो बेहद आश्चर्यचकित हो। यह लगभग गारंटी है।)

उदा। कल्पना करें कि आप बाइट्स ए [0], ए [1], ए [2], ... ए [63], ए [64], ...

यदि ए [0] का पता है शून्य मॉड्यूल 64 के बराबर, फिर ए [0] .. एक [63] 64 बाइट कैश लाइन वाली मशीन पर, उसी कैश लाइन में होगा। यदि इनका उपयोग करने वाला कोड सरल है, तो यह काफी संभव है कि उन सभी को अनुमान लगाया जा सके। क्यूईडी: 64 सट्टा मेमोरी एक्सेस, 64 एल 1 कैश मिस, लेकिन केवल एक एल 2 मेमोरी एक्सेस।

(।। वैसे, उम्मीद नहीं है संख्या काफी इतना साफ होने के लिए आप वास्तव में 64 एल 1 एल 2 पहुँच प्रति पहुँचता नहीं मिल सकता है)

कुछ अधिक संभावनाएं:

हैं की संख्या एल 2 एक्सेस एल 1 कैश मिस की संख्या से अधिक है (मैंने इसे लगभग कभी नहीं देखा है, लेकिन यह संभव है) आपके पास मेमोरी एक्सेस पैटर्न हो सकता है जो एक हार्डवेयर प्रीफेचर को भ्रमित कर रहा है। हार्डवेयर प्रीफेचर भविष्यवाणी करने का प्रयास करता है कि आपको कौन सी कैश लाइनों की आवश्यकता होगी। यदि प्रीफ़ेचर बुरी तरह भविष्यवाणी करता है, तो यह कैश लाइनों को ला सकता है जिनकी आपको वास्तव में आवश्यकता नहीं है। अक्सर Prefetches_from_L2 या Prefetches_from_Memory गिनने के लिए एक प्रदर्शन evernt है।

कुछ मशीनें एल 2 कैश मिस के कारण सट्टा पहुंच रद्द कर सकती हैं, इससे पहले कि उन्हें एल 2 में भेजा जाता है। हालांकि, मुझे इंटेल के बारे में पता नहीं है।

+0

इस पर पिलिंग: आप एक प्रदर्शन काउंटर इवेंट जैसे L1_DCACHE_MISSES_RETIRED देख रहे हैं। यह संभव है कि गलत पथ निर्देशों ने L1 और/या L2 कैश भरने को ट्रिगर किया हो - ताकि आप कभी भी L2 "सेवानिवृत्त" कैश मिस नहीं देख सकें। –

1

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

यह एल 2 कैश मिस से नहीं आने वाले एल 2 एक्सेस का एक और स्रोत हो सकता है।

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