कहें कि कोर ए एक चर एक्स को संशोधित कर रहा है और कोर बी उस चर (एक्स) को पढ़ रहा है। इस मामले में एक कैश समेकन प्रोटोकॉल कोर बी के कैश को अपडेट करेगा, क्योंकि एक्स को कोर ए द्वारा संशोधित किया गया है और इस कैश समेकन कोर बी पर निष्पादन को धीमा कर देगा। हालांकि, क्या यह कैश समेकन कोर ए के प्रदर्शन को भी प्रभावित करेगा, यह मानते हुए कि चर एक्स अपने कैश में रहता है।कैश समेकन इस मामले में प्रदर्शन को प्रभावित करता है
उत्तर
हां। कई तरीकों से यह प्रदर्शन को प्रभावित कर सकता है। मानक प्रोटोकॉल जो लोग उपयोग करते हैं, वे ओएसआई (संशोधित, साझा, अमान्य) के कुछ प्रकार हैं कभी-कभी ओ (मालिक) और अक्सर ई (एक्सक्लूसिव) प्रोटोकॉल में जोड़े जाते हैं। आपके उदाहरण में, कोर ए संशोधित (या विशिष्ट) स्थिति में शुरू होगा, और कोर बी के पढ़ने से कोर ए को साझा स्थिति में बदलने के लिए मजबूर किया जाएगा। यह क्रिया कैश में चक्र लेती है क्योंकि कोर केवल इतना ही ऑपरेशन होता है कि कोर किसी भी समय पर प्रदर्शन कर सकता है। कोर ए पर इसका प्रभाव बहुत अधिक नहीं है हालांकि यह महत्वपूर्ण पथ में नहीं है। बड़ा प्रभाव यह है कि कोर ए फिर से लिखता है। चूंकि कैश लाइन साझा (या अमान्य) स्थिति में है, इसलिए इसे स्वयं को एम या ई में अपग्रेड करने का अनुरोध जारी करना होगा। वह अनुरोध कोर बी पर जाना होगा। यह ऑपरेशन महत्वपूर्ण पथ पर है और लिखना तब तक समाप्त नहीं हो सकता है कैश ब्लॉक अपग्रेड किया गया है। उस ने कहा, लिखते हैं आमतौर पर buffered और प्रोसेसर आम तौर पर इस ऑपरेशन पर अवरुद्ध नहीं किया जाएगा।
हां, वर्तमान में माइक्रो (एम) एसआई समेकन प्रोटोकॉल का उपयोग करते हुए सूक्ष्मजीवों पर, यह X
पर ए के अपडेट को धीमा कर देगा। इसका कारण यह है कि बी के पढ़ने से X
युक्त कैश लाइन को 'साझा' स्थिति में कॉपी करने से पहले रखा जाएगा, और फिर ए के लिखने से पहले इसे संशोधित करने से पहले 'अनन्य' स्थिति में प्रवेश करने के लिए बी की प्रति को अमान्य करना होगा।
सभी ने कहा, एपर लिखता है वास्तव में ए की निष्पादन पाइपलाइन को रोक नहीं सकता है। यह आर्किटेक्चर और प्रोग्रामिंग भाषा के मेमोरी स्थिरता मॉडल पर निर्भर करता है, और क्या लेखन को परमाणु संचालन या बाद में लिखने वाली बाड़ के रूप में मजबूर किया जाता है।
मेरे मामले में कोर ए अक्सर लिख रहा है, और कोर बी कभी-कभी पढ़ता है, इसलिए मुझे लगता है कि यह प्रदर्शन को थोड़ा सा नुकसान पहुंचाएगा। सही? – pythonic
यदि अधिकांश कोर जो कर रहा है वह लिख रहा है और अधिकांश कोर बी क्या कर रहा है पढ़ रहा है, तो हाँ, आप समस्याओं में भाग ले सकते हैं। इसे आम तौर पर पिंग-पोंगिंग कहा जाता है। आप किस तरह का संचार करने की कोशिश कर रहे हैं? इस सामान पर बहुत से कागजात हैं। उदाहरण के लिए, यदि आप कोर ए पर कुछ उत्पादित कर रहे हैं और इसे मूल बी पर उपभोग करना चाहते हैं, तो आपको एक कैशबल, लॉकलेस कतार डेटास्ट्रक्चर का उपयोग करना चाहिए जो जितना संभव हो उतना पिंग-पोंगिंग से बचाता है। (इसमें छाया सिर और छाया पूंछ जैसी अवधारणाएं होनी चाहिए।) –
नाथन, इस तरह की एक सूचनात्मक टिप्पणी के लिए धन्यवाद। मैं इस पिंग-पोंगिंग में अधिक विस्तार से सोचूंगा। – pythonic