|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|