M | E | S | I | |
---|---|---|---|---|
M | X | X | X | O |
E | X | X | X | O |
S | X | X | O | O |
I | O | O | O | O |
Curstate | Operation | NextState | SOther Core |
---|---|---|---|
INVALID | Read | case EXCLUSIVE if other core is INVALID | INVALID (No operation) |
case SHARED if other core contains data | SHARED (no operation) MODIFIED -> Flush -> SHARED EXCLUSIVE -> SHARED |
||
INVALID | Write | MODIFIED | INVALID (no operation) SHARED -> INVALID MODIFIED -> Flush -> INVALID EXCLUSIVE -> INVALID |
EXCLUSIVE | Read | EXCLUSIVE | INVALID (No operation) |
EXCLUSIVE | Write | MODIFIED | INVALID (No operation) |
SHARED | Read | SHARED | INVALID (no operation) SHARED (no operation) |
SHARED | Write | MODIFIED | INVALID (no operation) SHARED -> INVALID |
MODIFIED | Read | MODIFIED | INVALID (No operation) |
MODIFIED | Write | MODIFIED | INVALID (No operation) |
Reference: https://github.com/Yefei100/Cache_coherence_protocol/blob/master/main.cc