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

Cache Coherence

ক্যাশ কোহেরেন্স

একাধিক core-এর private cache-এ একই memory address-এর copy থাকলে সব core সামঞ্জস্যপূর্ণ মান দেখে তা নিশ্চিত করার protocol — MESI সবচেয়ে প্রচলিত বাস্তবায়ন।

also: MESI, MOESI

Single-core-এ caching অদৃশ্য অপ্টিমাইজেশন ছিল। Multi-core-এ প্রতিটা core-এর private L1/L2 থাকায় একই address-এর ভিন্ন copy ভিন্ন core-এ একসাথে থাকতে পারে — coherence protocol ছাড়া একটা core আরেকটার লেখা কখনো দেখবে না, চিরস্থায়ী stale ডেটা পড়বে।

MESI-এর চার state:

Stateঅর্থ
M (Modified)একমাত্র কপি, dirty
E (Exclusive)একমাত্র কপি, clean
S (Shared)একাধিক কপি, সব clean
I (Invalid)কপি অকেজো

E state MSI-এর তুলনায় একটা বাস্তব সাশ্রয় দেয় — read-then-write প্যাটার্নে (single owner) E→M-এ কোনো bus transaction লাগে না, কারণ hardware ইতিমধ্যে জানে এটাই একমাত্র কপি।

MOESI একটা পঞ্চম state (O = Owned) যোগ করে — dirty ডেটা memory-তে writeback না করেই cache-to-cache শেয়ার করা যায় (AMD, ARM-এ ব্যবহৃত)। MESI-তে dirty ডেটা শেয়ার করতে বাধ্যতামূলক immediate writeback লাগে, MOESI-তে লাগে না।

দাম আসল, শূন্য না: দুই core একই line-এ পালাক্রমে লিখলে প্রতিটা লেখাই একটা inter-core round-trip ঘটায় (ping-pong) — independent, local লেখার চেয়ে ১০×+ ধীর হতে পারে। এই একই ব্যয় কাকতালীয়ভাবে ঘটলে (দুইটা অসম্পর্কিত variable এক line-এ) তাকে বলে false sharing।

Coherence ≠ consistency — coherence শুধু একটা address-এর সব copy-র সামঞ্জস্য গ্যারান্টি দেয়; ভিন্ন address জুড়ে অপারেশনের ক্রম (ordering) একটা ভিন্ন প্রশ্ন — memory consistency model, আলাদা বিষয়।