2011-01-04 15 views
5

मैं हाल ही में मेमोरी मॉडल पर पढ़ रहा हूं और यह इस तरह काम करने के तरीके पर उलझन में था।मेमोरी मॉडल को समझना

http://cis.poly.edu/muller/CS623/weakmemory.htm

के शब्दों में यदि प्रोसेसर एक नई एक्स फिर एक नया वाई, सभी अन्य प्रोसेसर है कि बाद में निष्पादित पढ़ने Y तो पढ़ने एक्स लिखते लिखते हैं, पहुँच या तो नई Y और नई एक्स , पुराना वाई और नया एक्स, या पुराना एक्स और पुराना वाई: लेकिन कोई प्रोसेसर नए वाई और पुराने एक्स तक पहुंच जाएगा। मजबूत क्रम की धारणा पर एक बार उचित है। वर्तमान कंप्यूटर विनिर्माण करता है, हालांकि, प्रोग्रामर स्मृति ऑर्डरिंग पर भरोसा नहीं करते हैं। ऐसा इसलिए है क्योंकि नई मेमोरी प्रबंधन प्रणाली ऑप्टिमाइज़ेशन उद्देश्यों के लिए मेमोरी एक्सेस को पुन: व्यवस्थित करने का प्रयास करती है। सिस्टम जिन्हें रीडर ऑर्डर अनुरोध की अनुमति है कमजोर आदेशित मेमोरी सिस्टम (मॉडल) कहा जाता है। यह देखने के लिए कि प्रदर्शन को बेहतर बनाने के लिए कैसे उपयोग किया जा सकता है, निम्नलिखित असेंबलर कोड [2] पर विचार करें।

Load reg1, A     // register1 = contents of memory A 
Load reg2, B     // register2 = contents of memory B 
ADD reg3, reg1, reg2  // register3 = register1 + register2 
Store reg3, C     // contents of memory C = contents of register3 

अगर हम मान लेते हैं कि स्थान बी कैश और स्थान एक में वर्तमान में है कैश नहीं है, तो एक लोड हो रहा है इसके बजाय के लिए इंतज़ार कर एक की, सीपीयू कर सकते हैं बी से अधिक समय ले जाएगा बी को अपने कैश से लाएं, बी की विलंबता छिपाएं: इस प्रकार सीपीयू ए उपलब्ध होने पर अतिरिक्त प्रदर्शन कर सकता है। निष्पादन (अनुक्रमिक) मेमोरी मॉडल निष्पादन (यानी, ए को पहले लोड करना चाहिए, बी के बाद), अधिक प्रदर्शन संभव है ---- लेकिन रीडरिंग सॉफ़्टवेयर के लिए पारदर्शी नहीं हो सकता है। नीचे कोड खंड पर विचार करें, यह कोड का हिस्सा है जिसका उपयोग स्पिनलॉक सेमफोर [2] लागू करने के लिए किया जा सकता है।

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

एक और चीज जो मुझे यकीन नहीं है वह यह है कि कौन सा घटक मेमोरी एक्सेस रीडरिंग की अनुमति देता है, मेरी धारणा अब यह है कि एक कंपाइलर को निर्देशों को पुन: व्यवस्थित करने की अनुमति है। लेकिन क्या एक सीपीयू भी उन्हें पुन: व्यवस्थित कर सकता है?

धन्यवाद

उत्तर

4

आपको याद रखना चाहिए कि कैश सीपीयू और मेमोरी के बीच बैठता है। जब सॉफ़्टवेयर एक मान लिखता है तो यह निश्चित रूप से कैश में उतरता है, लेकिन कैश की प्रतिलिपि बनाने से पहले मान को फिर से लिखा जाने पर यह मुख्य स्मृति पर कभी भी नहीं जा सकता है (सोच लूप चर और स्थानीय)। यह पूरी चर्चा अलग-अलग मॉडलों के चारों ओर घूमती है जब डेटा वास्तव में रैम में रखा जाता है या रैम से पढ़ा जाता है।एक कोर के भीतर यह वास्तव में कोई फर्क नहीं पड़ता, क्योंकि वे उस अंतिम मूल्य लिखित मौसम का उपयोग करेंगे, यह कैश या रैम से आता है।

0

दोनों कंपाइलर और सीपीयू निर्देशों को पुन: व्यवस्थित कर सकते हैं। देखें Memory ordering

संबंधित मुद्दे