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
