2010-08-10 11 views
5

लिनक्स ओएस मशीन पर एल 2 कैश को साफ़ करने के साथ जुड़े "सी" में प्रोग्रामेटिक कदम क्या होंगे?"सी" लिनक्स मशीनों पर प्रोग्रामेटिक रूप से स्पष्ट एल 2 कैश

/sys/उपकरणों/system/CPU/cpu0/कैश/index2/आकार = 6144K एक्स 8CPUs

+0

संबंधित: http://stackoverflow.com/questions/1756825/cpu-cache-flush – quantumSoup

+0

और दूसरा संबंधित: http://stackoverflow.com/questions/3446138/how-to-clear-cpu-l1-and -एल 2-कैश – ennuikiller

+3

यह सीपीयू निर्भर और अप्राप्य है। कृपया अपने प्लेटफ़ॉर्म/संबंधित टैग का विवरण जोड़ें। टैग "असेंबली" जोड़ने से सिस्टम विकास अनुभव वाले लोगों का ध्यान आकर्षित करने में मदद मिल सकती है, जिनके पास अनुभव हो सकता है। क्योंकि अंत में आपको कुछ असेंबली को कोड करने की आवश्यकता होगी। – Dummy00001

उत्तर

2
निकटतम आप किसी भी दूर से साफ/पोर्टेबल तरह से प्राप्त कर सकते हैं

:

char dummy[L2_CACHE_SIZE]; 
memset(dummy, 0, sizeof dummy); 

पर निर्भर करता है आपके सीपीयू, विशेषाधिकार प्राप्त ओपकोड हो सकते हैं जो कैश को साफ़ कर सकते हैं, लेकिन मुझे उनके बारे में कुछ भी पता नहीं है या आप उन्हें कैसे एक्सेस कर सकते हैं। ऐसा लगता है कि यदि वे मौजूद हैं, तो भी आपको उनका उपयोग करने के लिए कर्नेल-स्तरीय कोड की आवश्यकता हो सकती है।

+0

और इसका मतलब है कि हमें कार्य में कार्य करने के लिए एक सिस्कल मिल सकता है। – Basilevs

+2

मैमेसेट() ऐतिहासिक रूप से उन निर्देशों का उपयोग करता है जो गंतव्य कैश लाइन को पढ़ने के लिए परेशान नहीं हैं और लिखे जाने वाले कैश लाइन पर लाइन गठबंधन लिखते हैं। हालांकि ऐसे निर्देश हैं जो सीधे डेटा को डेटा स्ट्रीम करते हैं (उनके पास कैश के बाहर, अपनी समर्पित कैश लाइन है)। एक स्मार्ट कंपाइलर ऐसे निर्देशों का उपयोग कर सकता है, ताकि L2 कैश को ऐसी स्मृति() द्वारा मिटाया जा सके। –

+0

मुझे आश्चर्य है कि कैश को साफ़ करने के तरीके में कितना कैश सहयोगीता प्राप्त होगी? कल्पना करें कि आपके पास पूरी तरह से सहयोगी एल 2 कैश था; एलआरयू प्रतिस्थापन एकमात्र चीज है जो हो रहा है। हाल ही में उपयोग किए जाने वाले कैश लाइनों को रखते हुए, अन्य प्रक्रियाएं चल रही हैं - लेकिन यादृच्छिक रूप से लिखने के लिए उपयोग किए जाने वाले कैश लाइनों पर फिर से लिखना नहीं है। वे जल्द ही एलआरयू लाइन बन जाएंगे ... इसलिए memset() इसके लिखने के लिए कैश लाइनों के एक छोटे से सेट का उपयोग करके और फिर से उपयोग कर देगा। –

0

आप उपयोगकर्ता स्थान से निम्न स्तर की स्मृति तक नहीं पहुंच सकते हैं, आपको लिनक्स में भौतिक स्मृति तक पहुंचने के लिए अपने डिवाइस ड्राइवर को लागू करना होगा।

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