5.4.15 · HinglishMemory Hierarchy & Caches

MESI - MOESI coherence protocols

2,376 words11 min readRead in English

5.4.15 · Hardware › Memory Hierarchy & Caches


WHY coherence ko ek protocol ki zaroorat hai?

Socho do cores hain, dono ke paas private L1 cache hai, aur woh address X = 5 share kar rahe hain.

  • Core 0 X load karta hai → X=5 cache karta hai.
  • Core 1 X load karta hai → X=5 cache karta hai.
  • Core 0 X=9 apni cache mein likhta hai (fast, memory trip nahi).
  • Core 1 ab apni cache se X padhta hai → 5 milta hai. ❌ Stale!

Hardware ko Single-Writer / Multiple-Reader (SWMR) invariant guarantee karni hi padti hai:

Coherence protocols SWMR ko enforce karte hain — har cache line ka state track karke aur shared bus (ya directory) par snooping karke ki doosri caches kya kar rahi hain.


MESI states — HAR letter ka MATLAB

Har cache line 2 bits state carry karta hai:

WHY four states, do nahi? Naive "Valid/Invalid" scheme har write par bus broadcast force karta hai. E ek clever optimization hai: agar tum ek clean line ke sirf ek holder ho, toh E→M transition karke silently likh sakte ho (koi bus traffic nahi). Isliye kisi private variable ko load karke modify karna sasta hai.


HOW state transitions kaam karte hain (SWMR se derivation)

Hum transitions derive karte hain yeh puch ke: "SWMR ko sach rakhne ke liye kya hona chahiye?"

Local read (Core load karta hai):

  • Agar line M/E/S hai → hit, same raho.
  • Agar I hai → read miss. BusRd broadcast karo.
    • Agar koi doosri cache ke paas hai → woh supply karta hai (ya memory); tum S mein land karte ho. M mein koi bhi cache pehle write back karega.
    • Agar koi nahi rakhta → tum E mein land karte ho (tum sole owner ho). WHY E? Kyunki ab tum jaante ho ki tum exclusive ho, baad mein silent write enable ho jaata hai.

Local write (Core store karta hai):

  • Agar M hai → hit, M hi raho.
  • Agar E hai → silently E→M jao (koi bus traffic nahi!). WHY allowed? Tum akele holder ho, toh kisi aur ko invalidate karne ki zaroorat nahi.
  • Agar S hai → BusRdX (Read-for-Ownership) broadcast karo taaki baaki saari copies invalidate ho jayein, phir S→M jao. WHY? SWMR: likhne se pehle tum single writer hone chahiye.
  • Agar I hai → write miss: BusRdX broadcast karo, data fetch karo, doosron ko invalidate karo, M mein land karo.

Snooped (remote) events — bus par react karo:

  • M mein ho aur BusRd dekho → koi padhna chahta hai; supply/flush karna padega → M→S jao (aur memory update karo).
  • E mein ho aur BusRd dekho → E→S jao (ab shared).
  • BusRdX (ya invalidate) kisi bhi valid state mein suno → → I jao. Agar M mein the, toh pehle write back karo (akeli sahi copy mat kho!).
Figure — MESI - MOESI coherence protocols

MOESI — O (Owned) state add karna

WHY O add karein? Plain MESI mein, jab M mein koi core BusRd sunta hai, toh use M→S transition karna padta hai aur dirty data memory mein write back karna padta hai. Woh write-back expensive hai aur aksar waste hota hai (value jald hi phir badal sakti hai).

MOESI ke saath:

  • BusRd par, M holder M→O jata hai instead of M→S. Woh dirty data apne paas rakhta hai, owner ban jaata hai, aur data directly requester ko forward karta hai (cache-to-cache transfer). Memory update NAHI hoti. Requesters ko S milta hai.
  • Sirf jab owner finally evict hota hai tab memory likhi jaati hai.

MOESI states: M, O, E, S, I (5 states, 3 bits).


Worked examples


Common mistakes (steel-manned)


Active recall

Recall Quick self-test (answers cover karo!)
  • Kaun sa ek MESI state hai jo tumhe bina bus traffic ke likhne deta hai? → E (E→M silent).
  • Kaun sa invariant saare coherence protocols enforce karte hain? → SWMR.
  • MOESI kaun sa state add karta hai aur woh kya represent karta hai? → O, dirty-and-shared owner.
  • M-state line ko MESI mein BusRd snoop karte waqt kya karna padta hai? → write back karo aur M→S jao.
  • MOESI mein BusRd par M line ___ jati hai aur memory mein likhne ki bajay data forward karti hai. → O.
Recall Feynman: ek 12-saal ke bacche ko samjhao

Socho ek class ek library book share kar rahi hai pages photocopying karke apni notebooks mein. Agar sab sirf padhein apni copy, theek hai. Lekin agar Aisha edit kare apni copy, toh baaki sabki notebook galat ho jaati hai. Toh hum rule banate hain: edit karne se pehle chillao "Main edit kar raha/rahi hoon! Sablog woh page faad do!" (yahi hai invalidate). Agar sirf tumne copy ki thi, toh quietly edit kar sakte ho. Aur 'Owned' (MOESI) yeh hai: jab bhi koi dost book maange, library jaake master book update karne ki bajay, jis insaan ke paas latest edits hain woh seedha uske liye photocopy karta hai — bahut fast.


Flashcards

Cache coherence protocols kaun si problem solve karte hain?
Multiple private caches ko consistent rakhna taaki koi core shared memory ki stale copy na padhe (SWMR enforce karna).
SWMR invariant batao.
Kisi bhi waqt kisi location par ya toh ek writer hoga (koi aur valid copy nahi) YA kaafi saare readers honge (koi writer nahi).
MESI ke letters ka matlab kya hai?
Modified, Exclusive, Shared, Invalid.
Exclusive (E) state kya hai aur yeh kyun exist karta hai?
Sole clean copy; exist karta hai taaki ek write E→M silently upgrade kar sake bina kisi bus traffic ke.
M aur E mein kya fark hai?
Dono sole copies hain, lekin M dirty hai (write-back chahiye), E clean hai (memory se match karta hai).
E aur S mein kya fark hai?
E = provably sirf ek copy hai (silently likh sakte ho); S = possibly shared hai, likhne se pehle broadcast/invalidate karna padega.
Shared line par write karne par kaun sa bus message bheja jata hai?
BusRdX (Read-for-Ownership) taaki baaki saari copies invalidate ho jayein, phir S→M.
M line ko BusRd snoop karte waqt MESI mein kya hota hai?
Woh memory mein write back karti hai aur M→S transition karti hai.
MOESI mein O (Owned) state kya represent karta hai?
Ek dirty line jo shared bhi ho sakti hai; yeh cache iska owner hai aur readers ko data forward karta hai, memory write-back defer karta hai.
MOESI shared dirty data ke liye MESI se faster kyun hai?
Remote read par owner data cache-to-cache forward karta hai (M→O) instead of memory mein write back karne ke.
Kya BusRdX data ko memory mein likhta hai?
Nahi — yeh requester ke liye line fetch karta hai aur doosron ko invalidate karta hai; store baad mein locally hota hai.
Jab koi doosri cache line hold nahi karti toh read miss se kaun sa state milta hai?
Exclusive (E).
5 MOESI states list karo.
Modified, Owned, Exclusive, Shared, Invalid.
MESI-impossible kaun sa combination O fill karta hai?
Dirty + Shared.

Connections

Concept Map

solves

needs

tracks

via

four states

M

E

S

I

silent write E to M

read miss BusRd sole

read miss BusRd others

adds dirty plus shared

SWMR invariant

Stale data problem

Coherence protocol

Per cache line state

Bus snooping

MESI

Modified dirty sole owner

Exclusive clean sole owner

Shared clean read only

Invalid no data

MOESI