प्रोसेसर के L1 और L2 कैश को कैसे निष्क्रिय करें?


10

क्या Ubuntu 14.04 पर L1 और / या L2 कैश को अक्षम करना संभव है (अधिमानतः उच्च स्तर की भाषा में पायथन की तरह)? यदि हां, तो कैसे?

इसके अलावा, कैश को अलग-अलग आर्किटेक्चर के बीच काफी अलग कर देगा? यदि हां, तो मुझे एआरएम कॉर्टेक्स-ए 15 में अधिक दिलचस्पी है।

संपादित करें

जबकि शोध कैश अक्षम करने के तरीके, मैं से में / proc / sys / VM / "drop_caches" फाइल के बारे में पता चला kernel.org प्रलेखन

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

...

"यह फ़ाइल विभिन्न कर्नेल कैश (इनोड, डेंट्री, पेजकेक, आदि ...) की वृद्धि को नियंत्रित करने का साधन नहीं है। इन वस्तुओं को कर्नेल द्वारा स्वचालित रूप से पुन: प्राप्त किया जाता है जब सिस्टम पर कहीं और मेमोरी की आवश्यकता होती है।"

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

संपादित करें

स्पष्ट करने के लिए, मैं समझता हूं कि कैश सिस्टम को क्या अक्षम करेगा। हालाँकि, यह सुरक्षा-महत्वपूर्ण अनुप्रयोगों के लिए विश्वसनीयता बढ़ाने के लिए अंतरिक्ष अनुप्रयोगों में उपयोग की जाने वाली एक सामान्य तकनीक है। यहाँ कुछ संसाधन हैं जो इस घटना को दस्तावेजित करते हैं:

कैश मेमोरी के माध्यम से एम्बेडेड सॉफ़्टवेयर विकिरण-प्रेरित विफलताओं को कम करना

अंतरिक्ष विकिरण पर्यावरण में माइक्रोप्रोसेसरों के ग्राउंड विकिरण परीक्षण के लिए दिशानिर्देश

विषय पर भी किताबें हैं:

इलेक्ट्रॉनिक्स में आयनकारी विकिरण प्रभाव: यादें से लेकर ग्रामीणों तक


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

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

जवाबों:


2

आप इसे सीधे पाइथन में नहीं कर सकते, क्योंकि आपको ऐसा करने के लिए कर्नेल मॉड्यूल की आवश्यकता होती है (और उस मॉड्यूल को लोड करने के लिए मूल अधिकार)।

Http://1xr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 देखें कि यह L1 कैश को अमान्य करने के लिए क्या लेता है (अमान्य करें, अक्षम नहीं)।

कैश को निष्क्रिय करने के लिए विभिन्न सीपीयू आर्किटेक्चर (जैसे x86 बनाम एआरएम) को अलग-अलग विधानसभा कोड (सीपीयू निर्देश) की आवश्यकता होती है। मुझे यकीन नहीं है कि अगर लिनक्स कर्नेल में L1 / L2 / L3 / L4 कैश को अक्षम करने की कोई संभावना है और अगर ऐसा होता है, तो मेरा मानना ​​है कि यह थोड़े समय के लिए आंतरिक रूप से उपयोग किया जाएगा, क्योंकि CPU धीमा है इन कैश के बिना।

देखें कि लिनक्स सिस्टम पर CPU कैश (L1 / L2) को निष्क्रिय करने का कोई तरीका है? एक x86 / x64 सिस्टम पर आप कैश को कैसे निष्क्रिय कर सकते हैं, इसके लिंक के लिए (आपको रजिस्टर बदलने की आवश्यकता है cr0)। एआरएम चेक कैश अक्षम व्यवहार के लिए

मुझे यकीन नहीं है कि आप पूरी तरह से समझते हैं कि सीपीयू कैश क्या करता है। क्या आप कृपया विस्तृत कर सकते हैं कि आप अपने सिस्टम के प्रदर्शन को अपंग क्यों करना चाहते हैं?


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

सीपीयू कैश के बिना आपके पास "उच्च-प्रदर्शन" आवेदन कैसे हो सकता है? अपटाइम के साथ कैश का क्या करना है?
तेहनीकोर्ग

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

1
विडंबना यह है कि L1 कैश को अक्षम करना आज समझ में आता है!
रिंग Ø

4

आप इसे थोड़ा एएसएम कोड के साथ पूरा कर सकते हैं, इंटेल सिस्टम प्रोग्रामिंग गाइड के अध्याय 11 देखें

11.5.3 कैशिंग को रोकना

एल 1, एल 2 और एल 3 कैश को अक्षम करने के लिए सक्षम होने के बाद और कैश फिल प्राप्त करने के बाद, निम्न चरणों का पालन करें: 1. नो-फिल कैश मोड दर्ज करें। (CD फ्लैग को कंट्रोल रजिस्टर CR0 से 1 और NW फ्लैग को 0. पर सेट करें। WBVVD इंस्ट्रक्शन का उपयोग करके सभी कैश फ्लश करें। 3. MTRRs को अक्षम करें और अनचाहे मेमोरी टाइप के लिए सभी MTRRs को अनकैप्ड या सेट करने के लिए डिफ़ॉल्ट मेमोरी टाइप सेट करें। (धारा 11.11.2.1, "IA32_MTRR_DEF_TYPE MSR" में TYPE क्षेत्र और ई ध्वज की चर्चा की चर्चा देखें)।

मैं एक पायथन मॉड्यूल के बारे में नहीं जानता जो इसे लागू करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.