2011-07-31 16 views
13

यह मेरी आवश्यकता है, मुझे पता है कि कुछ एल्गोरिदम कैश का अच्छा उपयोग करते हैं, कुछ नहीं, कुछ विशेष डेटा सेट आदि पर दूसरों की तुलना में अधिक I/O करते हैं। मैं खुद को होने वाला और देखना चाहता हूं।सी/सी ++ प्रोग्राम में मूल्य के लिए कैश हिट/मिस

तो मैं सोच रहा था कि क्या कोई तरीका था कि मुझे पता चल सकता था कि एक निश्चित स्मृति/चर कैसे पढ़ा जाता है, यानी यह कैश से है, या वहां कैश मिस थी। इसके अलावा यदि इस मान को पुनर्प्राप्त करते समय पृष्ठ गलती हुई थी।

बहुत बहुत धन्यवाद!

+1

आपको इस SO प्रश्न में रुचि हो सकती है: http://stackoverflow.com/questions/3052776/how-to-detect-cache-misses-from-users-codes –

उत्तर

7

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

pfmon -eL1D_CACHE_LD:MESI,L1D_CACHE_LD:I_STATE your_program 

संदर्भ के लिए, this document (पीडीएफ) के परिशिष्ट ए पर इंटेल के प्रलेखन को सूचीबद्ध करता है क्या हार्डवेयर काउंटर उपलब्ध हैं: उदाहरण के लिए, यहाँ स्टैंड-अलोन कार्यक्रम सभी स्तर 1 डेटा कैश पढ़ा अनुरोध और चूक रिकॉर्डिंग है।

0

विशिष्ट कंपाइलर, ओएस, और प्रोसेसर के विशिष्ट मॉडल पर निर्भर करता है जो आप चल रहे हैं। सी/सी ++ भाषा में कुछ भी नहीं (जिसे मैं जानता हूं) आपको कैश स्तर पर क्या हो रहा है तक पहुंच प्रदान करता है।

विभिन्न माप उपकरण हैं, लेकिन वे भाषा से काफी हद तक स्वतंत्र होंगे।

कैश और पेजिंग मुद्दों को कम करने के लिए कुछ "नियम" हैं, हालांकि मुझे एक उचित व्यापक सूची के बारे में सोचने में कुछ समय लगेगा।

4

मैं valgrind cachegrind tool उपयोग का प्रयास करें, यह पता एनोटेट स्रोत लाइनों हिट/छूट जाए की संख्या के साथ मुद्रित कर सकते हैं होता है कि लाइन के लिए जो कैश में।

+0

नोट, कि कैशग्रींड कैश मिस असली नहीं हैं कैश याद आती है, लेकिन नकली एक। – osgx

1

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

+0

एएमडी कोड विश्लेषक इंटेल प्लेटफॉर्म पर थोड़ा सीमित है (लेकिन बहुत ही बुनियादी काम करेगा)। तो, इंटेल के लिए इंटेल Vtune हैं; लिनक्स oprofile/perf/perfmon2। – osgx

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