Read across for one system; read down to see how differently the same coherence problem is solved.
Snooping bus (MESI) | AMBA ACE | AMBA CHI | Directory systems | PCI Express | |
|---|---|---|---|---|---|
Policy | Invalidate | Invalidate | Invalidate | Invalidate | — (not a coherence protocol) |
States | M, E, S, I | MOESI-like (unique/shared, clean/dirty) | Unique Dirty, Unique Clean, Shared Dirty, Shared Clean, Invalid | MESI, MOESI or MESIF variants | — |
Finding copies | Broadcast on the bus | Interconnect snoops masters on AC; replies on CR, CD; snoop filters common | Home node snoops; directory or snoop filter | Directory at the line's home | — |
Ordering point | The bus | The interconnect | Home node | Home node | — |
Dirty sharing | No (write back on share) | Yes (shared dirty) | Yes (Shared Dirty) | With O or F states | — |
I/O coherence | Device snooped by bus | ACE-Lite: coherent reads and writes, no device cache | I/O coherent request nodes | Device requests go to the home | DMA snooped by host; No Snoop attribute to skip it |
Everyone invalidates; the differences are in how copies are found and who orders requests.
Small systems broadcast; large ones use a home node with a directory or snoop filter.
Dirty sharing (O, Shared Dirty) is how bigger systems avoid writebacks on every share.
Devices join at different depths: snooped, I/O coherent, fully coherent, or not at all with software maintenance.