Foundationপ্রথম নীতি থেকে
LEVEL 11 · Advanced Architecture & Performance

Memory Consistency Model

মেমরি কনসিস্টেন্সি মডেল

একাধিক ভিন্ন memory address-এ করা লেখা অন্য core-রা কোন ক্রমে দেখবে, তার চুক্তি — cache coherence-এর থেকে আলাদা, যা একটা single address-এর গল্প বলে।

also: memory ordering, TSO, sequential consistency, consistency model

Coherence নিশ্চিত করে একটা address-এর সব কপি সামঞ্জস্যপূর্ণ। Consistency নিয়ন্ত্রণ করে একাধিক ভিন্ন address-এর লেখার মধ্যে আপেক্ষিক দৃশ্যমানতার ক্রম — সম্পূর্ণ ভিন্ন প্রশ্ন।

Sequential Consistency (SC): সব operation যেন একটা একক global interleaved order-এ ঘটেছে, প্রতিটা core-এর নিজের program order মেনে। স্বজ্ঞাত কিন্তু বাস্তবায়নে ব্যয়বহুল — বাস্তব হার্ডওয়্যার ডিফল্টভাবে দেয় না।

x86 TSO (Total Store Order): প্রায় SC, একটা exception সহ — store buffer-এর কারণে store→load reordering অনুমোদিত (একটা write-এর পরের read আগে চলে যেতে পারে, ভিন্ন address হলে)। Store→Store, Load→Load, Load→Store সংরক্ষিত।

ARM/RISC-V (weak model): ডিফল্টভাবে প্রায় সব reordering অনুমোদিত (Store→Store সহ) — explicit dmb/barrier ছাড়া order-এর গ্যারান্টি নেই।

C++11 সমাধান — portable, hardware-independent:

flag.store(1, std::memory_order_release);   /* producer */
while (flag.load(std::memory_order_acquire) == 0);  /* consumer */

release/acquire জোড়া একটা happens-before edge তৈরি করে — compiler প্রতিটা target-এ সঠিক instruction বসায় (x86-এ প্রায়ই কিছুই লাগে না, ARM-এ dmb)। ডিফল্ট memory_order_seq_cst সবচেয়ে নিরাপদ, relaxed শুধু pure counter-এ যথেষ্ট।