next up previous contents
Next: System Interconnects Up: Directory and Memory Simulation Previous: Handling negative acknowledgments

Deadlock avoidance

 

Certain sequences of transactions at the directory require the directory to reprocess or reissue previous messages. Just as the caches reissue retries from previously allocated MSHRs or write-back buffer entries, the directories reprocess REQUESTs or reissue COHE messages from the buffers already allocated at the time of the original REQUEST.

The directory is also reponsible for breaking request-request cycles in the system. If such a condition arises, the directory buffers of some directory must have filled up, since all REQUESTs have a directory as an ultimate destination and all COHEs issue from the directory. If the request buffers of a directory fill up, the directory sends back later requests as RAR replies. These will not lead to deadlock, since the caches can always accept retries in a finite amount of time.

In certain pathological cases, the RSIM directory may starve a specific processor by always choosing its requests for retry. This can be changed by adding additional constraints on the requests that a directory can process once it resorts to retries.



Vijay Sadananda Pai
Thu Aug 7 14:18:56 CDT 1997