क्यों std::atomic का स्टोर अनुक्रमिक स्थिरता के लिए XCHG को नियोजित करता है
x86 और x86_64 आर्किटेक्चर के लिए std::atomic के संदर्भ में, a अनुक्रमिक स्थिरता (std::memory_order_seq_cst) के साथ स्टोर संचालन अनुक्रमिक-रिलीज़ सिमेंटिक्स प्राप्त करने की तकनीक के रूप में मेमोरी बैरियर के साथ एक साधारण स्टोर के बजाय XCHG को नियोजित करता है।
अनुक्रमिक स्थिरता और xchg
अनुक्रमिक स्थिरता यह तय करती है कि सभी मेमोरी ऑपरेशन कुछ अनुक्रमिक क्रम में निष्पादित होते प्रतीत होते हैं, और यह क्रम सभी थ्रेड्स के लिए समान है। XCHG, एक x86 निर्देश जो परमाणु रूप से दो ऑपरेंड के मूल्यों का आदान-प्रदान करता है, स्वाभाविक रूप से इस अनुक्रमिक स्थिरता आवश्यकता को पूरा करता है। राइट ऑपरेशन करने के लिए XCHG का उपयोग करके, std::atomic यह सुनिश्चित करता है कि स्टोर निष्पादन के क्रम में एक विशिष्ट बिंदु पर सभी थ्रेड्स के लिए विश्व स्तर पर दृश्यमान हो जाता है, बाद के ऑपरेशनों के साथ पुन: व्यवस्थित होने से रोकता है।
mov- स्टोर एमफेंस बनाम एक्ससीएचजी
जबकि मेमोरी फेंस (जैसे एमफेंस) के बाद एक साधारण मूव-स्टोर सैद्धांतिक रूप से रिलीज सिमेंटिक्स प्रदान कर सकता है, यह अनुक्रमिक-रिलीज स्टोर संचालन के लिए पर्याप्त नहीं है। एमएफईएनसीई, एक मेमोरी बाड़ निर्देश जो मेमोरी बैरियर स्थापित करता है, यह सुनिश्चित करता है कि आगे बढ़ने से पहले पिछले लेखन ऑपरेशन मेमोरी के लिए प्रतिबद्ध हैं। हालाँकि, यह रिलीज़ स्टोर से पहले बाद के लोड संचालन को फिर से व्यवस्थित होने से नहीं रोकता है। स्टोर संचालन में प्रदर्शन ट्रेड-ऑफ शामिल होता है। परमाणु ऑपरेशन के साथ। ]कार्यान्वयन विवरण
व्यवहार में, अनुक्रमिक स्थिरता के साथ std::atomic के स्टोर का विशिष्ट कार्यान्वयन कंपाइलर और हार्डवेयर आर्किटेक्चर के आधार पर भिन्न होता है।
GCC/ क्लैंग:Microsoft Visual C: Seq-cst स्टोर्स के लिए XCHG का भी उपयोग करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3