Hi Dean,
The OutputUnit does not wake up when the flit has to leave the router (it only wakes up to receive credits).
It is the switch that wakes up and schedules the output link.

The SWallocator_d removes winning flits from their respective input VCs and places them in the switch buffer. The Switch_d reads from the switch buffer and pushes flits into the out_buffer of the particular output unit.
The NetworkLink_d wakes up and reads flits out of the output buffers.

If you want to implement locking, I think you will need changes in the SwitchAllocator_d where input flits place requests for output ports and output ports arbitrate among these requests. You need ensure that an output port only favors packets of the same input VC, before it can serve other VCs/ports.
The Switch and Link are dumb units that just transfer flits.

- Tushar


On 03/22/2012 09:47 AM, Dean Michael Ancajas wrote:
Hi,
I want to implement deflection routing in garnet. At the InputUnit_d::wakeup() I lock the output port of the router (everytime a HEAD flit or HEAD_FLIT_ is encountered) so that no other flit will be scheduled thru this output port. My question is, when do I release the lock? Is it in the OutputUnit_d::wakeup() when a TAIL flit is about to traverse the link (i.e. when it puts the flit on the network link)?

-dean


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

Reply via email to