HeadlinesBriefing favicon HeadlinesBriefing.com

ARM पर x86 इमुलेशन की पथड़ी

Hacker News •
×

हमारे वेबसाइट के पहले फीचर आर्टिकल में आपका स्वागत है। हम x86 इमुलेशन के साथ आंकड़े के साथ हम इमुलेट कर रहे हर एप्लिकेशन को प्रभावित करने वाली एक चल रही समस्या को कवर करेंगे। यह एकल एकरूप शब्द के रूप में उपस्थित है जो बड़े पैमाने पर प्रभाव डालता है; x86-TSO मेमोरी मॉडल (Total Store Ordering) का इमुलेशन। ARM द्वारा परिभाषित कमज़ोर क्रमवां मेमोरी मॉडल पर इस मेमोरी मॉडल का इमुलेशन करने के समस्याएँ बहुआयामिक हैं और कई समस्याओं को कवर करती हैं। हम इस लेख में हम कौन-कौन सी समस्याएँ देख सकते हैं और हम कैसे समाधान (या कुछ मामलों में हम सकते नहीं) हल करते हैं इसके बारे में पूरी तरह से बताएंगे।

ठीक क्या है x86-TSO? मेमोरी मॉडल एक सिस्टम में मेमोरी एक्सेसेज के साथ-साथ के बीच कैसे स्वरूपित होते हैं उनका एक सेट नियम है। नियम यह तय करते हैं कि लोड और स्टोर कैसे एक-एकल-थ्रेड या मल्टी-थ्रेड एनवायर्नमेंट में परस्पर कार्य करते हैं। आज हम लिए दो मॉडल हैं ARM का रिलैक्स्ड (या विकल्पात्मक) समन्वय मॉडल और x86 वैरिएंट का Total Store Ordering समन्वय मॉडल। ये दो मॉडल मूल रूप से दो सरके के दोनों अंत हैं; जहां ARM सबसे अनुकूलित है, भारी हार्डवेयर ऑप्टिमाइज़ेशन की अनुमति देता है; और x86 सबसे कड़ा है, एक बहुत मजबूत समन्वय मॉडल लागू करता है।

TSO बहुत कड़ा होने के कारण, प्रोग्रामर को मान सकते हैं कि जब मेमोरी स्टोर होता है, तो यह सभी अन्य प्रोसेसर के लिए समन्वयपूर्ण रूप से दृश्यमान होगा। ARM का कमज़ोर मेमोरी मॉडल इतना भी इंटुइटिव नहीं है। डिफॉल्ट रूप से, सामान्य मेमोरी लोड और स्टोर प्रोसेसरों के बीच सख्त ईसाबदार नहीं होते, जो CPU को अधिक कुशलता से चलने की अनुमति देता है। ARM ने समन्वय को संबोधित करने के लिए लोड-ऐक्क्वायर और स्टोर-रिलीज मेमोरी निर्देश परिभाषित किए हैं, जो C++ std::atomic के memory_order_acquire और memory_order_release मानचित्र पर हैं।