संदर्भ स्विच पर कैश सामग्री का क्या होता है?


50

एक मल्टीकोर प्रोसेसर में, कोर के कैश की सामग्री का क्या होता है (L1 कहते हैं) जब उस कैश पर एक संदर्भ स्विच होता है?

क्या व्यवहार वास्तुकला पर निर्भर है या यह सभी चिप निर्माताओं द्वारा पीछा किया जाने वाला एक सामान्य व्यवहार है?

जवाबों:


42

यह दोनों प्रोसेसर पर निर्भर करता है (न केवल प्रोसेसर श्रृंखला, यह मॉडल से मॉडल में भिन्न हो सकता है) और ऑपरेटिंग सिस्टम, लेकिन सामान्य सिद्धांत हैं। क्या एक प्रोसेसर मल्टीकोर है इस पहलू पर कोई सीधा प्रभाव नहीं है; एक ही प्रक्रिया कई कोर पर एक साथ क्रियान्वित की जा सकती है (यदि यह बहुस्तरीय है), और मेमोरी को प्रक्रियाओं के बीच साझा किया जा सकता है, इसलिए संदर्भ स्विच पर क्या होता है, इसके बावजूद कैश सिंक्रनाइज़ेशन अपरिहार्य है।

जब कोई प्रोसेसर कैश में मेमोरी लोकेशन देखता है, अगर कोई MMU है , तो वह उस स्थान के भौतिक या आभासी पते का उपयोग कर सकता है (कभी-कभी दोनों का संयोजन भी, लेकिन यह वास्तव में यहां प्रासंगिक नहीं है)।

भौतिक पते के साथ, इससे कोई फर्क नहीं पड़ता कि कौन सी प्रक्रिया पते तक पहुंच रही है, सामग्री साझा की जा सकती है। इसलिए संदर्भ स्विच के दौरान कैश सामग्री को अमान्य करने की आवश्यकता नहीं है। यदि दो प्रक्रियाएं एक ही भौतिक पृष्ठ को विभिन्न विशेषताओं के साथ मैप करती हैं, तो यह MMU ( MPU (मेमोरी प्रोटेक्शन यूनिट) के रूप में कार्य करता है ) द्वारा नियंत्रित किया जाता है । एक भौतिक रूप से संबोधित कैश का नकारात्मक पहलू यह है कि MMU को प्रोसेसर और कैश के बीच बैठना पड़ता है, इसलिए कैश लुकअप धीमा होता है। एल 1 कैश लगभग कभी भी शारीरिक पते नहीं हैं; उच्च स्तर के कैश हो सकते हैं।

एक ही वर्चुअल एड्रेस अलग-अलग प्रोसेस में अलग-अलग मेमोरी लोकेशन को डिनोट कर सकता है। इसलिए, वस्तुतः संबोधित कैश के साथ, प्रोसेसर और ऑपरेटिंग सिस्टम को यह सुनिश्चित करने के लिए सहयोग करना चाहिए कि एक प्रक्रिया सही मेमोरी मिलेगी। कई सामान्य तकनीकें हैं। ऑपरेटिंग सिस्टम द्वारा प्रदान किया गया संदर्भ-स्विचिंग कोड पूरे कैश को अमान्य कर सकता है; यह सही है लेकिन बहुत महंगा है। कुछ CPU आर्किटेक्चर के पास ASID (एड्रेस स्पेस आइडेंटिफ़ायर) के लिए उनकी कैश लाइन में एक प्रक्रिया ID का हार्डवेयर संस्करण होता है, जिसका उपयोग MMU द्वारा भी किया जाता है। यह अलग-अलग प्रक्रियाओं से कैश प्रविष्टियों को प्रभावी ढंग से अलग करता है, और इसका मतलब है कि एक ही पृष्ठ पर मैप करने वाली दो प्रक्रियाओं में एक ही भौतिक पृष्ठ के असंगत विचार होंगे (एक साझा पृष्ठ का संकेत देने वाला आमतौर पर एक विशेष एएसआईडी मूल्य है,) लेकिन इन्हें फुलाने की जरूरत है, यदि उन्हें सभी प्रक्रियाओं में एक ही पते पर मैप नहीं किया जाता है जहां वे मैप किए गए हैं)। यदि ऑपरेटिंग सिस्टम ध्यान रखता है कि विभिन्न प्रक्रियाएं गैर-अतिव्यापी पते रिक्त स्थान का उपयोग करती हैं (जो वर्चुअल मेमोरी का उपयोग करने के उद्देश्य से कुछ को हराती है, लेकिन कभी-कभी किया जा सकता है), तो कैश लाइनें वैध रहती हैं।

ज्यादातर प्रोसेसर जिनके पास MMU होता है, उनके पास भी TLB होता है । टीएलबी आभासी पते से भौतिक पते तक मैपिंग का एक कैश है। शारीरिक रूप से संबोधित किए गए कैश में लुकअप से पहले टीएलबी से परामर्श किया जाता है, ताकि संभव होने पर भौतिक पता जल्दी से निर्धारित किया जा सके; टीएलबी लुकअप पूरा होने से पहले प्रोसेसर कैश लुकअप शुरू कर सकता है, क्योंकि अक्सर उम्मीदवार कैश लाइनों को पते के मध्य बिट्स से पहचाना जा सकता है, बिट्स के बीच जो कैश लाइन में ऑफसेट का निर्धारण करते हैं और बिट्स जो पृष्ठ निर्धारित करते हैं। कैश-हिट होने पर टीएलबी को वस्तुतः संबोधित किया जाता है, हालांकि प्रोसेसर टीएलबी लुकअप को आरंभ कर सकता है जबकि यह कैश की कमी है, मिस होने की स्थिति में।

TLB को एक संदर्भ स्विच के दौरान प्रबंधित किया जाना चाहिए। यदि TLB प्रविष्टियों में एक ASID होता है, तो वे जगह में बने रह सकते हैं; ऑपरेटिंग सिस्टम को केवल TLB प्रविष्टियों को फ्लश करने की आवश्यकता है यदि उनका ASID अर्थ बदल गया है (जैसे कि एक प्रक्रिया से बाहर निकल गया है)। यदि TLB प्रविष्टियाँ वैश्विक हैं, तो उन्हें किसी भिन्न संदर्भ पर स्विच करते समय अमान्य कर दिया जाना चाहिए।


2
बहुत सूचनाप्रद। यदि आप कुछ उदाहरण जोड़ सकते हैं कि वास्तविक आर्किटेक्चर में यह कैसे किया जाता है तो यह और भी बेहतर होगा।
जॉनटोर्टुगो

2
@JohnTortugo मैंने जो लिखा है वह ARMv7 (जैसे कि आपके स्मार्टफोन का सीपीयू) (केवल आर्किटेक्चर जहां मैंने कभी MMU हैंडलिंग कोड लिखा है) पर काफी बारीकी से मेल खाता है। मुझे उम्मीद है कि x86 जैसे अन्य प्लेटफॉर्म काफी हद तक समान होंगे लेकिन मैं उनके बारे में नहीं लिख सकता। यदि आप एक वास्तविक मंच के बारे में ठोस जानकारी की तलाश में हैं, तो कंप्यूटर साइंस सही साइट नहीं है, आप स्टैक ओवरफ्लो या इलेक्ट्रिकल इंजीनियरिंग या एंबेडेड (प्रस्तावित) पर पूछ सकते हैं ।
गिलेस एसओ- बुराई को रोकना '

10

कैश आमतौर पर संदर्भ स्विच से अनजान है। केवल एक्सेस किए गए मेमोरी पतों का क्रम निर्धारित करता है कि कौन सी कैश लाइनें बदली गई हैं।

प्रतिस्थापन नीति आमतौर पर निर्माता और विशेष रूप से माइक्रोआर्किटेक्चर पर आश्रित है। समस्या यह है कि भविष्यवादी भविष्य की भविष्यवाणी नहीं कर सकता है, जो पता और इसलिए कैश लाइन तक पहुंच जाएगा।

LRU (कम से कम हाल ही में उपयोग किया गया) के रूप में अनुमानी एक सरल हो सकता है। लेकिन आधुनिक सीपीयू के साथ उत्तराधिकार अधिक जटिल हैं।

Intel® 64 और IA-32 आर्किटेक्चर सॉफ़्टवेयर डेवलपर के मैनुअल वॉल्यूम 3 अध्याय 11 पर एक नज़र डालें, जो मेमोरी कैश और कैश कंट्रोल तंत्र की व्याख्या करता है। AMD के पास AMD64 आर्किटेक्चर प्रोग्रामर के मैनुअल वॉल्यूम 2: सिस्टम प्रोग्रामिंग के अध्याय 7 में यह है । एआरएम आधारित सीपीयू के लिए ऐसा लगता है कि पीडीएफ केवल पंजीकृत ग्राहकों के लिए उपलब्ध हैं।


क्या आप पहले पैराग्राफ के लिए एक संदर्भ दे सकते हैं? या जुड़े दस्तावेज़ इस मुद्दे को संदर्भित करते हैं?
राफेल

व्यवहार बहुत हद तक इस बात पर निर्भर करता है कि कैश भौतिक है या वस्तुतः संबोधित है। प्रतिस्थापन नीति यहां प्रासंगिक नहीं है। एआरएम के लिए, प्रोसेसर तकनीकी मैनुअल में जानकारी है, जो सार्वजनिक हैं, उदाहरण के लिए कॉर्टेक्स-ए 9 पर एल 1 (जो आपको नवीनतम-पीढ़ी के सेल फोन में मिलता है), हालांकि गैर-सार्वजनिक वास्तुकला संदर्भ मैनुअल के बिना समझना मुश्किल हो सकता है ।
गाइल्स 'एसओ- बुराई को रोकना'

1
@ राफेल मैंने "आम तौर पर" लिखा है क्योंकि प्रोसेसर के साथ मैं भर आया हूं, अपने आप में कैश को थ्रेड्स, प्रक्रियाओं, संदर्भों आदि के बारे में कोई ज्ञान नहीं है। यह सिर्फ मेमोरी एक्सेस पर प्रतिक्रिया करता है। यदि डेटा कैश को फ्लश किया जाता है और निर्देश कैश को संदर्भ स्विच पर अमान्य कर दिया जाता है, तो यह ओएस है जो इस कार्रवाई को चलाता है कैश नहीं। यदि आप एक अलग OS स्थापित करते हैं, तो यह व्यवहार बदल सकता है।
ूली

@ गिल्स एक बार के लिए मैंने एक छोटा सा जवाब देने की कोशिश की और वर्चुअल मेमोरी के बारे में नहीं लिखने का फैसला किया, क्योंकि इसमें तुरंत ओएस शामिल है। और विचार करने के लिए कई बार है। "कुछ भी नहीं बदलता है" संदर्भ स्विच और अगली मेमोरी एक्सेस के बीच के समय के लिए एक उत्तर हो सकता है, क्योंकि कैश सामग्री अमान्य हो सकती है लेकिन बिल्कुल भी नहीं बदली गई है।
ूली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.