Storage is not perfect. A flipped bit in a data array is a data error; a flipped bit in a cache state, a tag or a directory entry is a coherence bug, because it changes who may write or who gets invalidated. This topic shows which structures need which protection, how an uncorrectable data error travels as poison instead of stopping the machine, what H can do when it loses a directory entry, and where recovery has to stop. All RAS terms on these pages are generic (corrected error, detected uncorrectable error, poison, machine check, containment). No vendor's error-record format is described, and every number is illustrative.
Lesson | After it you can... |
|---|---|
Say what an undetected flip in each structure breaks, and check a SECDED code that corrects one flip and detects two. | |
Trace a poisoned line through a forwarded read and explain why only the consumer sees an error. | |
Rebuild a lost directory entry by recalling every possible holder, count the cost, and name the case that cannot be rebuilt. | |
Classify an error as corrected, contained or fatal with a decision flowchart. |
Suggested order: the four lessons in order. Prerequisites: SWMR Precisely, Snoop Filter Correctness and Conservative Metadata Rules. The traces use MSI on the course model; one lesson adds a third cache C2 and says so.
A clean data word can be detected and refetched from memory, and even if missed it corrupts one value. A lost sharer bit means H skips an Inv on the next GetM: a cache keeps a readable copy while another writes, so SWMR is broken and every later read of that copy can be stale. The data was never wrong; the permission record was.