2009-06-03 6 views
28

मल्टीकोर सीपीयू या मल्टीप्रोसेसर सिस्टम में उपयोग की जाने वाली कैश यादों के संबंध में मेरे कुछ प्रश्न हैं। (सीधे प्रोग्रामिंग से संबंधित नहीं है, यह है, जबकि एक मल्टीकोर प्रोसेसर/multiprocessors प्रणालियों के लिए सॉफ्टवेयर लिखते हैं, इसलिए यहाँ पूछ कई नतीजों है!)मल्टीकोर इंटेल CPUs में कैश यादें कैसे साझा की जाती हैं?

  1. एक मल्टीप्रोसेसर प्रणाली या एक मल्टीकोर प्रोसेसर (इंटेल क्वाड कोर, कोर दो में डुओ इत्यादि ..) क्या प्रत्येक सीपीयू कोर/प्रोसेसर की अपनी कैश मेमोरी (डेटा और प्रोग्राम कैश) होती है?

  2. क्या एक प्रोसेसर/कोर एक दूसरे की कैश मेमोरी एक्सेस कर सकता है, क्योंकि अगर उन्हें एक-दूसरे के कैश तक पहुंचने की इजाजत है, तो मुझे लगता है कि कम कैश मिस हो सकता है, इस परिदृश्य में कि यदि उस विशेष प्रोसेसर कैश में कुछ नहीं है डेटा लेकिन कुछ अन्य दूसरे प्रोसेसर के कैश में इस प्रकार स्मृति से पहले प्रोसेसर के कैश में पढ़ने से बचा जा सकता है? क्या यह धारणा मान्य और सत्य है?

  3. किसी भी प्रोसेसर को अन्य प्रोसेसर की कैश मेमोरी तक पहुंचने में अनुमति देने में कोई समस्या होगी?

+0

सेमी से संबंधित: [गैर-हाइपर भाई बहन बनाम हाइपर-भाई बहनों के बीच स्मृति स्थान के निर्माता-उपभोक्ता साझाकरण की विलंबता और थ्रूपुट लागत क्या हैं?] (Https://stackoverflow.com/questions/45602699/what-are -इस-विलंबता और throughput-लागत के- निर्माता-उपभोक्त साझा करने संबंधी की एक ज्ञापन)। और यह भी [थ्रेड के बीच डेटा एक्सचेंज के लिए क्या उपयोग किया जाएगा एक कोर पर एचटी के साथ निष्पादित कर रहे हैं?] (https://stackoverflow.com/questions/32979067/what-will-be-used-for-data-exchange-between- उत्कृष्ट कागज़ को इंगित करने के लिए –

उत्तर

2

अपने पहले उत्तर के लिए, मैं जानता हूँ कि कोर 2 डुओ एक 2 स्तरीय कैशिंग प्रणाली, जिसमें प्रत्येक प्रोसेसर का अपना प्रथम स्तर कैश है, और वे एक दूसरे स्तर कैश साझा करें। यह डेटा सिंक्रनाइज़ेशन और स्मृति के उपयोग दोनों के साथ मदद करता है।

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

अपने तीसरे प्रश्न का उत्तर देने के लिए, संभावित रूप से अन्य प्रोसेसर की कैश मेमोरी तक पहुंचने में समस्या हो सकती है, जो "सिंगल लिखित मल्टीपल रीड" सिद्धांत पर जाती है। हम एक ही समय में एक ही स्थान पर स्मृति में एक से अधिक प्रक्रिया लिखने की अनुमति नहीं दे सकते हैं।

कोर 2 जोड़ी पर अधिक जानकारी के लिए, इस साफ लेख को पढ़ें।

http://software.intel.com/en-us/articles/software-techniques-for-shared-cache-multi-core-systems/

10

त्वरित उत्तर 1) हाँ 2) नहीं, लेकिन यह सब क्या स्मृति उदाहरण/संसाधन आप बात कर रहे हैं, डेटा एक ही समय में कई स्थानों में मौजूद हो सकता है पर निर्भर हो सकता। 3) हाँ।

इस मुद्दे की पूरी लंबाई के स्पष्टीकरण के लिए आपको 9 भाग लेख "Ulrik Drepper (http://lwn.net/Articles/250967/) द्वारा" प्रत्येक प्रोग्रामर को स्मृति के बारे में क्या पता होना चाहिए "पढ़ना चाहिए, आपको उन मुद्दों की पूरी तस्वीर मिल जाएगी जो आप पूछ रहे हैं एक अच्छी और सुलभ विस्तार में।

+1

+1) धागे-निष्पादन-ऑन-वन-कोर-वाईआई)। – sybreon

29

एक मल्टीप्रोसेसर प्रणाली या एक मल्टीकोर प्रोसेसर में (इंटेल क्वाड कोर, कोर दो जोड़ी आदि ..) प्रत्येक सीपीयू कोर/प्रोसेसर का अपना कैश स्मृति (डेटा और प्रोग्राम कैश) है?

  1. हां। यह सटीक चिप मॉडल से भिन्न होता है, लेकिन सबसे आम डिजाइन प्रत्येक सीपीयू कोर के लिए अपने निजी एल 1 डेटा और निर्देश कैश रखने के लिए होता है। एल 2 एकीकृत कैश आमतौर पर सभी कोर के बीच साझा किया जाता है।

कर सकते हैं एक प्रोसेसर/कोर का उपयोग एक दूसरे की कैश स्मृति, क्योंकि अगर वे एक दूसरे के कैश का उपयोग करने की अनुमति दी जाती है, तो मेरा मानना ​​है कि वहाँ कम कैश छूट जाए हो सकता है, स्थिति में है कि अगर उस विशेष प्रोसेसर कैश में कुछ डेटा नहीं है लेकिन कुछ अन्य दूसरे प्रोसेसर के कैश में इस प्रकार स्मृति से कैश को पहले प्रोसेसर में पढ़ने से बचा जा सकता है? क्या यह धारणा मान्य और सत्य है?

  1. सं प्रत्येक सीपीयू कोर के एल 1 कैश कोर के रूप में एक ही मरने पर हैं और अन्य कोर द्वारा पहुँचा नहीं जा सकता। कोर प्रत्येक साझा डेटा बस के माध्यम से एल 2 कैश से जुड़े होते हैं।

वहाँ किसी भी प्रोसेसर अन्य प्रोसेसर की कैश स्मृति का उपयोग करने की अनुमति में कोई समस्या हो जाएगा?

  1. हाँ - वहाँ बस नहीं अन्य कोर के लिए विभिन्न सीपीयू कैश जोड़ने वाली तारों कर रहे हैं। यदि कोई कोर किसी अन्य कोर के कैश में डेटा तक पहुंचना चाहता है, तो केवल डेटा पथ जिसके माध्यम से यह कर सकता है वह सिस्टम बस है।

cache coherency problem एक बहुत ही महत्वपूर्ण समस्या है। निम्न पर विचार करें: मान लें कि एक सीपीयू कोर में उसके कैश में एक विशेष मेमोरी लोकेशन है, और यह उस मेमोरी लोकेशन को लिखता है। फिर, एक और कोर उस स्मृति स्थान को पढ़ता है। आप कैसे सुनिश्चित करते हैं कि दूसरा कोर अद्यतन मूल्य देखता है? वह कैश समेकन समस्या है। कई प्रकार के समाधान हैं; विकिपीडिया एट अल देखें।

+1

समाधान की "विविधता" वास्तव में भिन्न नहीं है। बहुत कुछ सब कुछ [एमईएसआई प्रोटोकॉल] (https://en.wikipedia.org/wiki/MESI_protocol) पर कुछ मामूली बदलाव का उपयोग करता है।कई कैशों में साझा लाइन की एक प्रति हो सकती है, लेकिन कोहेरेंसी डोमेन (यानी सिस्टम) में केवल एक कैश संशोधित या विशिष्ट राज्य में एक पंक्ति हो सकती है। तो एक लाइन लिखने के लिए, एक सीपीयू एक रीड-फॉर-स्वामित्व करता है यह सुनिश्चित करने के लिए कि सिस्टम में कोई अन्य कैश उस रेखा की प्रति नहीं है। संबंधित: कैसे परमाणु पढ़ने-संशोधित-लेखन कार्य ('लॉक inc [mem]'): https://stackoverflow.com/questions/39393850/can-num-be-atomic-for-int-num –

+1

8 साल बाद अपडेट करें : इन दिनों सीपीयू के लिए साझा एल 3 के साथ निजी प्रति-कोर एल 1 और एल 2 कैश होने के लिए यह सामान्य है। (नेहलेम के बाद से इंटेल।) एल 3 समेकन यातायात को पीछे छोड़ सकता है, इसलिए इसे स्मृति के लिए सभी तरह से जाना नहीं है। –

+1

इसके अलावा NUMA (https://en.wikipedia.org/wiki/Non-uniform_memory_access) एक दिलचस्प और प्रासंगिक विषय है। – HongboZhu

3

इंटेल कोर कैश साझाकरण तकनीक इंटेल स्मार्ट कैश कॉल करता है। इसके बारे में एक विकी पेज स्टब है: https://en.wikipedia.org/wiki/Smart_Cache

उदाहरण के लिए प्रोसेसर i5-3210M के लिए, ark page में "इंटेल स्मार्ट कैश: 3 एमबी" फ़ील्ड है।

और Datasheet Volume 1 1.1 "प्रोसेसर फ़ीचर विवरण" का कहना है:

  • एक 32 केबी अनुदेश और 32 केबी डाटा प्रथम स्तर कैश (एल 1) प्रत्येक कोर
  • एक 256 KB के लिए साझा अनुदेश/डेटा दूसरे स्तर कैश (एल 2) प्रत्येक कोर
  • ऊपर से 8 एमबी अनुदेश/डेटा तीसरे स्तर कैश साझा (एल 3), सभी कोर के बीच साझा के लिए
संबंधित मुद्दे