Previous | Next --- Slide 52 of 57
Back to Lecture Thumbnails
Kapteyn

In class we discussed an example of deadlock where the L1 cache could not send a response to a BusRdx to the L2 because it had filled up the L1->L2 queue with its own request. That request could not be processed because the cache cannot get access to the bus until it responds to the BusRdx but the response cannot be sent until the request gets processed, and thus we have a circular dependency. In this example, the circular dependence runs clockwise. A request from the L2->L1 queue generated a response in the L1->L2 queue, causing a circular dependence.

However, I'm having trouble finding a similar example for the counter-clockwise direction. Yes it is true that requests from the L1->L2 queue will generate responses in the L2->L1 queue. However, I don't think this creates a circular dependence because requests for data from the L2->L1 queue can processed by the L1 cache regardless of what responses are behind it in the L2->L1 queue.

If this is not the case, can someone please provide a situation where there will be deadlock in the counter-clockwise direction?