|
Handling a write miss
- Request opcode could be upgrade or read exclusive
- State busy: send NACK
- State unowned: if ReadX send cache block, change state to M, mark owner in vector; if upgrade what do you do?
- State shared: send reply (upgrade ack or ReadX reply) with number of sharers, send invalidations to sharers, change state to M, mark owner in vector; sharers send invalidation acknowledgments to requester directly
- What if outgoing request network queue fills up before all invalidations are sent?
- State M: same as read miss except directory remains in PDEX state until completion message (no data) is received from owner; directory remains in M state, only the owner changes; how do you handle upgrades here?
Serializing requests
- The tricky situation is collection of invalidation acknowledgments
- Note from previous slides that even before all acknowledgments are collected at the requester, the directory at home goes to M state with the new owner marked
- A subsequent request will get forwarded to the new owner (at this point directory goes to PSH or PDEX state)
- The owner is responsible for serializing the new request with the previous write
- The write is not complete until all invalidation acknowledgments are collected
- OTT (aka CRB) of the owner is equipped to block any incoming request until all the acknowledgments and the reply from home are collected (early interventions)
- Note that there is no completion message back to home
Handling writebacks
- Valid directory states: M or busy; cannot be S or I
- State M
- Just clear directory entry, write block to memory
- Need to send writeback acknowledgment to the evicting processor (explanation coming up)
- State busy
- How can this happen? (Late intervention race)
- Can NACK writeback? What support needed for this?
- Better solution: writeback forwarding
- Any special consideration at the evicting node?
- How does the directory state change in this case?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|