Module 6: Shared Memory Multiprocessors: Consistency and Coherence
  Lecture 12: Cache Coherence Protocols
 


MOESI Protocol

  • Some SMPs implement MOESI today e.g., AMD Athlon MP and the IBM servers
  • Why is the O state needed?
    • O state is very similar to E state with four differences: 1. If a cache line is in O state in some cache, that cache is responsible for sourcing the line to the next requester; 2. The memory may not have the most up-to-date copy of the line (this implies 1); 3. Eviction of a line in O state generates a BusWB ; 4. Write to a line in O state must generate a bus transaction
    • When a line transitions from M to S it is necessary to write the line back to memory
    • For a migratory sharing pattern (frequent in database workloads) this leads to a series of writebacks to memory
    • These writebacks just keep the memory banks busy and consumes memory bandwidth
  • Take the following example
    • P0 reads x, P0 writes x, P1 reads x, P1 writes x, P2 reads x, P2 writes x, …
    • Thus at the time of a BusRd response the memory will write the line back: one writeback per processor handover
    • O state aims at eliminating all these writebacks by transitioning from M to O instead of M to S on a BusRd /Flush
    • Subsequent BusRd requests are replied by the owner holding the line in O state
    • The line is written back only when the owner evicts it: one single writeback