Deadlock avoidance
The caches guarantee that all incoming replies (REPLYs and COHE_REPLYs) are accepted even if they require further messages to be sent out. If a REPLY leads to a retry (either because of an RAR or a NackUpgradeConflictReply), the MSHR originally allocated by the REQUEST will be used as a resource from which to send the message to the cache ports. If a REPLY leads to a writeback or replacement message, its write-back buffer entry or MSHR can be used as a resource from which to send the message. In all cases, the resources needed to send any possible messages on REPLY are reserved at the time of the REQUEST.
Additionally, the tag arrays of the caches have a special port reserved for COHE messages to insure that these messages do not interact with REQUESTs or REPLYs to cause a deadlock. Such a port would likely be considered excessive in a real system; an alternative is to have the caches break deadlocks caused by COHEs by sending these messages back to the directory marked with s.reply fields set to RAR (request a retry).
0 komentar:
Posting Komentar