Notes:
Request source |
Incoming request |
Data state |
Directory state |
Outgoing snoop |
Outgoing requests (after snoop) |
Possible final data states |
Possible final directory states |
Upstream cache |
ReadShared ReadNotSharedDirty |
I |
I |
- |
ReadShared (if no HNF) ReadNotSharedDirty (if no HNF and SD state not allowed by configuration) ReadNoSnp (if HNF) |
Rcvd data state (if alloc) or I |
I, RSC |
I |
RSC,RUSC |
SnpOnce (if no DCT) SnpSharedFwd (if DCT) |
- |
Rcvd data state (if alloc) or I |
RSC |
||
UD, SD, UC, SC |
I, RSC, RSD,RUSC |
- |
- |
Same as previous |
Same as previous |
||
UD,UC,I |
RU |
SnpShared (if no DCT) SnpSharedFwd (if DCT) |
- |
Same as previous or UC/UD (if alloc) |
RSC |
||
I |
RSD, RUSD |
SnpShared (if no DCT) SnpSharedFwd (if DCT) |
- |
SC/UD/UC (if alloc)
or I |
RSC |
||
ReadUnique |
I |
I |
- |
ReadUnique (if no HNF) ReadNoSnp (if HNF) |
UC (if alloc)
or I |
RU |
|
UD, UC |
I |
- |
- |
Same as previous |
RU |
||
UD, UC |
RSC, RSD |
SnpUnique (if no DCT) SnpUniqueFwd (if DCT) |
- |
Same as previous |
RU |
||
UD, UC, I |
RUSD, RUSC |
SnpUnique (if no DCT) SnpUniqueFwd (if DCT) |
- |
Same as previous or UC (if alloc) |
RU |
||
SC, SD |
I |
- |
ReadUnique (if no HNF) |
UD, UC |
RU |
||
SC, SD |
RSC, RSD |
SnpUnique |
ReadUnique (if no HNF) |
UD, UC |
RU |
||
CleanUnique |
I |
RUSC, RUSD |
SnpUnique |
I |
RU |
||
UD, UC |
RSC, RSD |
SnpUnique |
Same as previous |
RU |
|||
I, SC, SD |
RSC, RSD |
SnpUnique |
CleanUnique (if no HNF) |
I, UD, UC |
RU |
||
Evict |
UD, SD, UC, SC |
RSC |
- |
- |
Same as previous |
I |
|
I |
RSC |
Evict (if not HNF) |
Same as previous |
I |
|||
WriteBackFull |
UD, SD, UC, I |
RSD, RUSD, RU |
UD ,SD |
I, RSC |
|||
WriteEvictFull |
UD, UC, I |
RU |
UD, UC |
I |
|||
ReadOnce |
UD, SD, UC, SC |
RSD, RUSD, RUSC RU, RSC, I |
- |
- |
Same as previous |
Same as previous |
|
I |
RSD, RUSD, RUSC, RU, RSC |
SnpOnce (if no DCT) SnpOnceFwd (if DCT) |
- |
I |
Same as previous |
||
I |
I |
- |
ReadOnce (if no HNF) ReadNoSnp (if HNF) |
I |
I |
||
WriteUniquePtl |
UD, UC |
I |
- |
- |
UD |
I |
|
UD, UC |
RSD, RUSD, RU, RSC |
- |
SnpCleanInvalid |
UD |
I |
||
SD, SC, I |
RSD, RUSD, RU, RSC, I |
WriteUniquePtl |
I |
I |
|||
WriteUniquePtl ( at HNF) |
UD, SD, UC, SC |
I |
- |
- |
UD |
I |
|
UD, SD, UC, SC |
RSD, RUSD, RU, RSC |
- |
SnpCleanInvalid |
UD |
I |
||
I |
RSD, RUSD, RU |
WriteNoSnp |
SnpCleanInvalid |
I |
I |
||
I |
RSC, I |
WriteNoSnpPtl |
SnpCleanInvalid |
I |
I |
||
Internal |
LocalEvictionHNF |
UD, SD |
I, RSC |
WriteNoSnp |
I |
Same as previous |
|
UD, UC, SC, SD |
RU, RSD |
- |
- |
I |
Same as previous |
||
LocalEviction |
SC |
I |
- |
Evict |
I |
I |
|
UD, SD |
I |
- |
WriteBackFull |
I |
I |
||
UC |
I |
- |
WriteEvictFull |
I |
I |
||
UD, UC |
RU, RSD |
- |
- |
I |
RU, RSD, RUSD |
||
UD,SD |
RSC |
SnpCleanInvalid |
WriteBackFull |
I |
I |
||
UC |
RSC |
SnpCleanInvalid |
WriteEvictFull |
I |
I |
||
GlobalEviction |
UD, SD |
RSC, RU |
SnpCleanInvalid |
WriteBackFull / WriteNoSnp |
I |
I |
|
UC |
RSC, RU |
SnpCleanInvalid |
WriteEvictFull (if not HNF) |
I |
I |
||
SC |
RSC |
SnpCleanInvalid |
Evict (if not HNF) |
I |
I |
||
Downstream cache |
SnpCleanInvalid |
UD,SD,UC, SC |
I |
- |
- |
I |
I |
UD,SD,UC, SC, I |
RSC, RU, RSD, RUSD |
SnpCleanInvalid |
- |
I |
I |
||
SnpUnique SnpUniqueFwd |
UD,SD,UC, SC |
I |
- |
- |
I |
I |
|
UD,SD,UC, SC, I |
RSC, RU, RSD, RUSD |
SnpUnique |
- |
I |
I |
||
SnpShared SnpSharedFwd SnpNotSharedDirty SnpNotSharedDirtyFwd |
UD, SD, UC |
I, RSC |
- |
- |
SC |
Same as previous |
|
UD, SD, UC, SC, I |
RU, RSD, RUSD |
SnpShared |
- |
I, SC |
RSC |
||
Local
CPU/DMA port (i.e. incoming from sequencer through the “mandatoryQueue”) |
Load |
UD, SD, UC, SC |
- |
- |
- |
Same as previous |
Same as previous |
I |
- |
- |
ReadShared ReadNotSharedDirty (if SD state not allowed by configuration) |
Rcvd data state |
Same as previous |
||
Load (alloc_seq = false) |
I |
- |
- |
ReadOnce |
I |
||
Store |
UD, UC |
- |
- |
- |
UD |
Same as previous |
|
SD, SC, I |
- |
- |
ReadUnique |
UD_T |
Same as previous |
||
Store (alloc_seq = false) |
I |
- |
- |
WriteUniquePtl |
I |
Same as previous |