HeadlinesBriefing favicon HeadlinesBriefing.com

ARM-এ x86 ইমুলেশনের কষ্ট

Hacker News •
×

আমাদের সাইটের প্রথম ফিচার আর্টিকেলে আপনাকে স্বাগত জানাই। আমরা এমুলেট করা সব অ্যাপ্লিকেশনকে প্রভাবিত করস্বরূপ একটি চালু সমস্যার উপর আমরা ঢাকুন। এটি একক এক বড় শব্দের রূপে উপস্থিত যা বহুমাত্রিক প্রভাব ফেলে; x86 মোটা স্টোর অর্ডারিং মেমরি মডেল (x86-TSO) এমুলেশন। ARM দ্বারা সংজ্ঞায়িত কম শক্তিশালী মেমরি মডেলে এই মেমরি মডেল এমুলেশন করার সমস্যাগুলি বহুপর্য্যায়ী এবং একাধিক সমস্যার ঢাকনা করে। আমরা এই লেখায় সব যা আমরা দেখতে পারি সমস্যাগুলি এবং আমরা কীভাবে সমাধান (কিছু ক্ষেত্রে আমরা কীভাবে সমাধান করতে পারি না) এগুলি এখানে আমরা সম্পূর্ণভাবে বর্ণনা করব।

ঠিক কি হল x86-TSO? মেমরি মডেল হল একটি সিস্টেমে মেমরি অ্যাক্সেসগুলি কীভাবে একে অপরকে সম্পর্কে কাজ করে তা নির্ধারণ করার জন্য একটি সেট নিয়ম। নিয়মগুলি নির্ধারণ করে কিভাবে লোড এবং স্টোর একক-থ্রেডেড বা মিল্টি-থ্রেডেড পরিবেশে পরস্পরে কীভাবে ইন্টারঅ্যাক্ট করে। আজ আমরা যে দুটি মডেল নিয়ে কথা বলছি তা হল ARM-এর রিল্যাক্সড (বা কম) সামঞ্জস্যতা মডেল এবং x86 ভ্যারিয়েন্টের টোটাল স্টোর অর্ডারিং সামঞ্জস্যতা মডেল। এই দুটি মডেল মূলত দুটি স্পেকট্রমের দুটি শেষ পয়েন্ট; যেখানে ARM সবচেয়ে রিল্যাক্সড, একটি গুরুত্বপূর্ণ হার্ডওয়্যার অপটিমাইজেশন অনুমতি দেয়; এবং x86 সবচেয়ে কড়া, একটি অত্যন্ত শক্তিশালী সামঞ্জস্যতা মডেল বাধ্যতামূলক করে।

TSO যদি খুব কড়া হয়, তাহলে প্রোগ্রামার মানে যে যখন একটি মেমরি স্টোর ঘটে, তা সমস্ত অন্য প্রসেসরের জন্য সামঞ্জস্যপূর্ণভাবে স্বজ্ঞানে দেখা যাবে। ARM-এর কম শক্তিশালী মেমরি মডেলটি এতটা ও আধিবাদিক নয়। ডিফল্টভাবে, সাধারণ মেমরি লোড এবং স্টোর কম শক্তিশালী প্রসেসরদের মধ্যে স্পষ্টভাবে সামঞ্জস্যযুক্ত নয়, যা CPU-কে বেশি কার্যকরভাবে চালাতে দেয়। ARM তাদের সামঞ্জস্যতা সমাধান করতে লোড-এক্যাকয়ুর এবং স্টোর-রিলিজ মেমরি নির্দেশ প্রয়োগ করেছে, যা C++ std::atomic-এর memory_order_acquire এবং memory_order_release-এর সাথে ম্যাপ করে।