2010-07-26 13 views
29

क्या यह सच है कि x86 ASM "LOCK" कमांड उपसर्ग सभी कोर को फ्रीज करने का कारण बनता है जबकि "LOCK" के बाद निर्देश निष्पादित किया जा रहा है?बहु-कोर CPUs पर x86 LOCK प्रश्न

मैंने इसे ब्लॉग पोस्ट में पढ़ा और यह समझ में नहीं आया। मुझे कुछ भी नहीं मिला जो इंगित करता है कि यह सच है या नहीं।

+0

संबंधित में यह अधिक चर्चा की: [? संख्या ++ 'पूर्णांक संख्या' के लिए किया जा सकता है परमाणु] (https://stackoverflow.com/questions/39393850/can-num-be -atomic-for-int-num) जहां मेरा उत्तर इस बारे में और बताता है कि 'लॉक' निर्देश आंतरिक रूप से कैसे निष्पादित होते हैं। –

उत्तर

41

यह उस पते के लिए मेमोरी बस लॉक करने के बारे में है। The Intel 64 and IA-32 Architectures Software Developer's Manual - Volume 3A: System Programming Guide, Part 1 हमें बताता है:

7.1.4 आंतरिक प्रोसेसर कैश पर एक LOCK ऑपरेशन के प्रभाव।

Intel486 और पेंटियम प्रोसेसर के लिए, लॉक # सिग्नल हमेशा एक ताला आपरेशन के दौरान बस में जोर दिया जाता है, भले ही स्मृति के क्षेत्र बंद होने प्रोसेसर में कैश किया गया है।

पी 6 और अधिक हाल ही में प्रोसेसर परिवारों के लिए, अगर स्मृति के क्षेत्र की जा रही एक ताला आपरेशन के दौरान बंद कर दिया प्रोसेसर कि लिखने-वापस स्मृति के रूप में लॉक कार्रवाई करते है और पूरी तरह से है में कैश किया गया है एक कैश लाइन में निहित, प्रोसेसर बस पर LOCK # सिग्नल पर जोर नहीं दे सकता है। इसके बजाय, यह आंतरिक रूप से मेमोरी स्थान को संशोधित करेगा और यह सुनिश्चित करने के लिए [0] कैश कोरेन्सी तंत्र को अनुमति देता है कि ऑपरेशन परमाणु रूप से किया जाता है। यह ऑपरेशन को "कैश लॉकिंग" कहा जाता है। कैश कोहेरेंसी तंत्र स्वचालित रूप से दो या दो से अधिक प्रोसेसर को रोकता है जिसमें मेमोरी का क्षेत्रफल उसी क्षेत्र में डेटा को संशोधित करने से होता है। (जोर जोड़ा)

यहाँ हम सीखना है, तो वे वास्तव में बस से उतर ब्लॉक करने के लिए है या आप केवल बुद्धिमान कैशिंग पर भरोसा कर सकते कि पी 6 और नए चिप्स बहुत चालाक निर्धारित करने के लिए कर रहे हैं। मुझे लगता है कि यह एक साफ अनुकूलन है।

मैं अपने ब्लॉग पोस्ट "How Do Locks Lock?"

+0

धन्यवाद जेफ! यह एक बहुत मददगार था :) – IamIC

+0

जेफ, रिक्त स्थान भरने और संदर्भ प्रदान करने के लिए धन्यवाद। यह देखना अच्छा लगता है कि हाल ही के प्रोसेसर लॉकिंग के बारे में कुछ हद तक बेहतर हैं। –

+0

धन्यवाद, यह केवल वही जानकारी है जो मुझे लॉक उपसर्ग के लिए googling के दौरान खोजने की उम्मीद है :) – cib

6

नहीं, लेकिन यह अन्य प्रोसेसर को प्रतीक्षा करने के लिए मजबूर कर सकता है जबकि यह स्मृति को एक्सेस करता है। क्या ये प्रतीक्षा राज्य कभी भी अंतर डालते हैं, इस पर निर्भर करता है कि प्रोसेसर कैश से बाहर चल रहे हैं।