Hi All,This is regarding the kd_wakeUpDependents() function 
of L1Cache_Controller in Ruby's MESI protocol. When an coherence event wakes up 
the dependent requests, it enqueues those stalled requests towards the tail of 
the mandatory queue (I guess, the "m_prio_heap.push_back" of 
reanalyzeMessages() (called from L1Cache_Controller::wakeUpBuffers) does that). 
In my work, when an input message is stalled and kept aside in the side table 
associated with the mandatory queue port of the L1 cache controller, any 
following requests from the cpu side also need to be blocked on the mandatory 
queue port; further, when those stalled requests are woken up, they should 
unblock the mandatory queue port, however since those requests are enqueued 
back towards the tail of that queue, they cannot reach the front of that queue 
and unblock the port. 


So, is there anyway to place those stalled requests towards the head of that 
queue, when they are woken up? I can get around someway by adding a flag in the 
L1 cache controller and putting all the following requests after the stalled 
one in the side table and woken all of them together later on an appropriate 
event, but this is not a clean solution!


Regards,
Dibakar
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to