मेमोरी सुसंगतता मॉडल
एक मेमोरी सुसंगतता मॉडल यह निर्दिष्ट करता है कि समवर्ती थ्रेड्स साझा मेमोरी तक पहुँचते समय रीड्स कौन से मान देख सकते हैं, जो प्रोग्रामर भरोसा कर सकते हैं उन ऑर्डरिंग गारंटियों को परिभाषित करता है।
Definition
एक मेमोरी सुसंगतता मॉडल उन मानों का एक औपचारिक विनिर्देश है जो एक समवर्ती निष्पादन में रीड ऑपरेशन वापस कर सकते हैं, मेमोरी एक्सेस के उन ऑर्डरिंग को ठीक करते हुए जिनका भाषा, कंपाइलर और हार्डवेयर को सम्मान करना चाहिए।
Scope
यह विषय अनुक्रमिक सुसंगतता से लेकर शिथिल और कमजोर मॉडल तक के सुसंगतता मॉडल के स्पेक्ट्रम, हैपन्स-बिफोर संबंध और डेटा-रेस-फ्री गारंटियों, हार्डवेयर मेमोरी ऑर्डरिंग (जैसे टोटल स्टोर ऑर्डर), और C++ और जावा के लिए भाषा-स्तरीय मेमोरी मॉडल को शामिल करता है। यह बताता है कि शिथिल मॉडल क्यों मौजूद हैं, कैसे फेंस और एटॉमिक्स ऑर्डरिंग को बहाल करते हैं, और समवर्ती मेमोरी के बारे में सही ढंग से कैसे तर्क करें।
Core questions
- मेमोरी ऑपरेशंस के कौन से ऑर्डरिंग को एक प्रोग्राम कानूनी रूप से देख सकता है?
- शिथिल मेमोरी मॉडल क्यों मौजूद हैं और वे क्या अनुमति देते हैं?
- डेटा-रेस-फ्री गारंटी तर्क को कैसे सरल बनाती है?
- फेंस और एटॉमिक ऑपरेशन ऑर्डरिंग को कैसे लागू करते हैं?
Key theories
- अनुक्रमिक सुसंगतता
- लैम्पर्ट ने अनुक्रमिक सुसंगतता को परिभाषित किया, जिसमें एक मल्टीप्रोसेसर निष्पादन को ऑपरेशंस के कुछ एकल इंटरलीविंग के रूप में दिखना चाहिए जो प्रत्येक प्रोसेसर के प्रोग्राम ऑर्डर का सम्मान करता है, जो सबसे मजबूत सहज आधारभूत मॉडल है।
- शिथिल सुसंगतता और SC-फॉर-DRF गारंटी
- एडवे और घराचोरलू शिथिल मॉडल और इस सिद्धांत की व्याख्या करते हैं कि डेटा-रेस-फ्री प्रोग्राम ऐसे व्यवहार करते हैं जैसे कि वे अनुक्रमिक रूप से सुसंगत हों, प्रदर्शन को प्रोग्रामेबिलिटी के साथ सामंजस्य स्थापित करते हुए।
- भाषा-स्तरीय मेमोरी मॉडल
- मैन्सन, पुघ और एडवे ने हैपन्स-बिफोर संबंध का उपयोग करके जावा मेमोरी मॉडल को औपचारिक रूप दिया, यह परिभाषित करते हुए कि कौन से अनुकूलन कानूनी हैं और यहां तक कि रेसी प्रोग्राम भी क्या गारंटी प्राप्त करते हैं।
Clinical relevance
क्योंकि मल्टीकोर प्रोसेसर और ऑप्टिमाइज़िंग कंपाइलर मेमोरी ऑपरेशंस को पुनर्व्यवस्थित करते हैं, सही, पोर्टेबल समवर्ती कोड लिखने के लिए भाषा मेमोरी मॉडल आवश्यक हैं। वे प्रोग्रामर को बताते हैं कि सिंक्रनाइज़ेशन कब आवश्यक है और परिभाषित करते हैं कि लाइब्रेरी और रनटाइम क्या गारंटी दे सकते हैं।
History
लैम्पर्ट ने 1979 में अनुक्रमिक सुसंगतता को औपचारिक रूप दिया। जैसे-जैसे हार्डवेयर ने प्रदर्शन के लिए शिथिल ऑर्डरिंग को अपनाया, एडवे और घराचोरलू के 1996 के ट्यूटोरियल ने सुसंगतता-मॉडल परिदृश्य और डेटा-रेस-फ्री फ्रेमवर्क को संहिताबद्ध किया। फिर भाषा डिजाइनरों ने मेमोरी मॉडल को विनिर्देशों में बनाया, जिसमें जावा मेमोरी मॉडल (2005) और C++11 मेमोरी मॉडल ने आधुनिक दृष्टिकोण स्थापित किया।
Debates
- रेसी प्रोग्राम्स के सिमेंटिक्स
- एक कठिन प्रश्न यह है कि डेटा रेस वाले प्रोग्रामों को क्या गारंटी दी जाए, यदि कोई हो; भाषा मॉडल को 'आउट-ऑफ-थिन-एयर' मानों को रोकना चाहिए, जबकि अभी भी आक्रामक कंपाइलर और हार्डवेयर अनुकूलन की अनुमति देनी चाहिए।
Key figures
- Leslie Lamport
- Sarita Adve
- Kourosh Gharachorloo
- William Pugh
- Jeremy Manson
Related topics
Seminal works
- lamport1979
- adve1996
- manson2005
Frequently asked questions
- सभी सिस्टम केवल अनुक्रमिक सुसंगतता का उपयोग क्यों नहीं करते हैं?
- अनुक्रमिक सुसंगतता कई कंपाइलर और हार्डवेयर अनुकूलन को प्रतिबंधित करती है जो प्रदर्शन में सुधार करते हैं, इसलिए अधिकांश वास्तविक सिस्टम शिथिल मॉडल अपनाते हैं और केवल वहीं मजबूत ऑर्डरिंग को पुनः प्राप्त करने के लिए सिंक्रनाइज़ेशन प्रिमिटिव प्रदान करते हैं जहां इसकी आवश्यकता होती है।
- डेटा-रेस-फ्री गारंटी क्या है?
- कई भाषा मेमोरी मॉडल के तहत, एक प्रोग्राम जिसमें कोई डेटा रेस नहीं होती है (सभी विरोधाभासी एक्सेस ठीक से सिंक्रनाइज़ होते हैं) की गारंटी है कि वह ऐसे व्यवहार करेगा जैसे कि मेमोरी अनुक्रमिक रूप से सुसंगत थी।