साझा स्मृति और संगति
साझा-स्मृति वास्तुकला कई प्रोसेसरों को एक सामान्य एड्रेस स्पेस पर काम करने देती है; एक स्मृति संगति मॉडल उस क्रम को परिभाषित करता है जिसमें एक प्रोसेसर के स्मृति संचालन दूसरों के लिए दृश्यमान हो जाते हैं, जिस अनुबंध पर समानांतर प्रोग्राम निर्भर करते हैं।
Definition
एक स्मृति संगति मॉडल साझा-स्मृति प्रणाली में प्रोसेसरों के बीच स्मृति रीड और राइट के अनुमेय क्रमों का विनिर्देशन है, जो परिभाषित करता है कि एक लोड क्या मान लौटा सकता है और इस प्रकार हार्डवेयर और समवर्ती सॉफ्टवेयर के बीच अनुबंध को परिभाषित करता है।
Scope
यह विषय साझा-स्मृति मल्टीप्रोसेसिंग और, केंद्रीय रूप से, स्मृति संगति मॉडल को शामिल करता है: अनुक्रमिक संगति, शिथिल और कमजोर मॉडल, स्मृति फेंस, और संगति तथा सुसंगति के बीच संबंध। इसमें सिंक्रनाइज़ेशन प्रिमिटिव भी शामिल हैं जो संगति मॉडल पर निर्भर करते हैं। इसमें प्रति-स्थान सुसंगति तंत्र (कैश सुसंगति प्रोटोकॉल) और कोर का चिप-स्तर एकीकरण (मल्टीकोर और चिप मल्टीप्रोसेसर) शामिल नहीं है।
Core questions
- समानांतर प्रोग्राम स्मृति संचालन के किस क्रम को मान सकते हैं?
- अनुक्रमिक संगति शिथिल संगति मॉडल से कैसे भिन्न है?
- शिथिल मॉडल क्यों मौजूद हैं, और स्मृति फेंस आवश्यक क्रम को कैसे बहाल करते हैं?
- सुसंगति और संगति मिलकर सही साझा-स्मृति व्यवहार को कैसे परिभाषित करते हैं?
Key concepts
- साझा एड्रेस स्पेस
- स्मृति संगति मॉडल
- अनुक्रमिक संगति
- शिथिल और कमजोर संगति
- स्मृति फेंस और बैरियर
- संगति बनाम सुसंगति
- सिंक्रनाइज़ेशन प्रिमिटिव
- डेटा रेस
Key theories
- अनुक्रमिक संगति
- लैम्पर्ट की अनुक्रमिक संगति की आवश्यकता है कि निष्पादन का परिणाम ऐसा हो जैसे सभी प्रोसेसरों के संचालन को किसी एक वैश्विक क्रम में अंतर्विरोधी किया गया हो जो प्रत्येक प्रोसेसर के प्रोग्राम क्रम का सम्मान करता हो; यह सहज है लेकिन हार्डवेयर अनुकूलन को बाधित करता है, जिससे शिथिल मॉडल प्रेरित होते हैं।
Mechanisms
हार्डवेयर प्रदर्शन के लिए स्मृति संचालन को पुनर्व्यवस्थित और बफर करता है, इसलिए संगति मॉडल यह निर्दिष्ट करता है कि कौन से पुनर्व्यवस्था अन्य प्रोसेसरों के लिए दृश्यमान हैं। अनुक्रमिक संगति प्रोसेसरों के बीच दृश्यमान पुनर्व्यवस्था को प्रतिबंधित करती है; शिथिल मॉडल गति के लिए कुछ पुनर्व्यवस्था की अनुमति देते हैं और प्रोग्रामर को आवश्यकतानुसार क्रम को लागू करने के लिए स्मृति फेंस डालने की आवश्यकता होती है। लॉक और परमाणु संचालन जैसे सिंक्रनाइज़ेशन प्रिमिटिव इन गारंटियों पर निर्मित होते हैं, और डेटा रेस से बचने वाले प्रोग्राम अनुमानित रूप से व्यवहार करते हैं।
Clinical relevance
स्मृति संगति मॉडल सही समवर्ती प्रोग्रामिंग का आधार है: यह निर्धारित करता है कि एक मल्टीथ्रेडेड प्रोग्राम साझा अपडेट की दृश्यता और क्रम के बारे में वैध रूप से क्या मान सकता है। इसे गलत समझना सूक्ष्म, पुनरुत्पादित करने में कठिन बग का कारण बनता है, और भाषा स्मृति मॉडल (जैसे C++ और Java में) सीधे इन हार्डवेयर अवधारणाओं पर आधारित होते हैं।
History
लैम्पर्ट ने 1979 में अनुक्रमिक संगति को औपचारिक रूप दिया। जैसे-जैसे हार्डवेयर प्रदर्शन के लिए स्मृति एक्सेस को पुनर्व्यवस्थित करने में अधिक आक्रामक होता गया, 1980 और 1990 के दशक में आर्किटेक्चरों में शिथिल संगति मॉडल फैल गए, जिससे उन्हें परिभाषित करने और नियंत्रित करने के लिए काम शुरू हुआ और, अंततः, प्रोग्रामिंग भाषाओं को उनके अपने अच्छी तरह से निर्दिष्ट स्मृति मॉडल दिए गए।
Debates
- मजबूत बनाम शिथिल संगति
- अनुक्रमिक संगति जैसे मजबूत मॉडल पर तर्क करना आसान होता है लेकिन हार्डवेयर प्रदर्शन को सीमित करते हैं, जबकि शिथिल मॉडल प्रोग्रामर की जटिलता की कीमत पर अनुकूलन को सक्षम करते हैं; यह क्षेत्र सावधानीपूर्वक निर्दिष्ट मॉडल और फेंस के माध्यम से सहज अर्थ विज्ञान और दक्षता के बीच संतुलन बनाना जारी रखता है।
Key figures
- Leslie Lamport
- Sarita Adve
- Mark D. Hill
- David E. Culler
Related topics
Seminal works
- hennessy2019
- culler1999
Frequently asked questions
- सुसंगति और संगति में क्या अंतर है?
- सुसंगति यह गारंटी देती है कि सभी प्रोसेसर अंततः प्रत्येक व्यक्तिगत स्मृति स्थान के मूल्य पर सहमत होंगे और उस पर लिखे गए लेखों को एक समझदार क्रम में देखेंगे। संगति विभिन्न प्रोसेसरों द्वारा देखे गए विभिन्न स्थानों पर संचालन के क्रम को नियंत्रित करती है। एक संगति मॉडल सुसंगति को पूर्वकल्पित करता है और क्रॉस-स्थान क्रम नियमों को जोड़ता है।
- प्रोसेसर शिथिल स्मृति मॉडल का उपयोग क्यों करते हैं?
- कठोर क्रम हार्डवेयर को बफरिंग और पुनर्व्यवस्था को छोड़ने के लिए मजबूर करेगा जो स्मृति विलंबता को छिपाते हैं, जिससे प्रदर्शन को नुकसान होता है। शिथिल मॉडल हार्डवेयर को स्वतंत्र रूप से अनुकूलित करने देते हैं और प्रोग्रामर को केवल वहीं क्रम लागू करने के लिए स्पष्ट फेंस देते हैं जहां शुद्धता की आवश्यकता होती है।