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, আলাদা বিষয়।