Module 14: "Directory-based Cache Coherence"
  Lecture 32: "Protocol Occupancy and Directory Controllers"
 

AlphaServer GS320

  • Recall that SGI Origin 2000 eliminates NACKs related to late and early interventions
    • Late interventions are replied by home via writeback forwarding
    • Early interventions are buffered at writer until write is completed
  • Origin 2000 still uses NACKs if directory state is busy
  • GS320 eliminates all NACKs
    • Simply doesn’t have busy states
    • How do you serialize transactions?
  • Eliminating PSH: dirty sharing
    • Same as a standard MOESI protocol, but state change in directory is immediate
    • Suppose node P0 is caching a block in M state
    • Node P1 issues a read request to home
    • Home forwards it to P0, changes directory state to clean, and marks P0 as the owner (need an owner field in directory)
    • P0 supplies data to P1 and moves to O state
      • P1 could also become O (is it better or worse?)
    • All subsequent requests are forwarded to P0 by home
    • P0 must serialize them properly
      • Philosophy: keep home free, serialize in the periphery
  • Dirty sharing
    • Problem arises if owner evicts the cache block
    • Now home cannot figure out what to do
      • Directory only specifies the sharers and the owner
      • Home does not know exactly which sharers did not get the cache block from P0
      • Home only writes the block back to memory, marks that there is no owner for this block, and sends a writeback acknowledgment to owner
    • Owner in all cases must source the cache block until the writeback is acknowledged
      • Must hold evicted cache blocks in a writeback buffer
    • More problems: what if a request arrives at home before the WB, but reaches owner after the WB ACK?
  • Dirty sharing
    • GS320 maintains total order in the network
      • Needed by other optimizations related to invalidation acknowledgments also
    • What if the protocol allows the ownership to move along the sharer chain?
      • New problem: writeback ordering
      • Easy to resolve at home: only accept data from owner marked in the directory entry
      • Always acknowledge writebacks
      • Still need to rely on network order? No, if there are two types of writeback acknowledgments
  • Eliminating the PDEX state: write forwarding
    • Same as read case with ownership changing along a chain
  • Performance considerations
    • How will a migratory sharing pattern perform on GS320?
    • How will a large-scale producer-consumer pattern perform on GS320?
    • Any special considerations for LL/SC locks?
      • Note that lock acquire is essentially a large-scale producer-consumer pattern with the number of consumers decreasing from P-1 to zero