Hi Tushar,
Thanks for the prompt reply. I have a follow up question/clarifications
though. Let's say I have successfully deflected a HEAD_ flit to a different
output port (from what was calculated in the RC stage) all the BODY_ and
TAIL_ flits will automatically follow right since they would use the same
input VC? At least that is how I understood the code in
InputUnit_D::wakeup().
Another question is, if we have deflected a flit to a non-optimal path,
is there a way to update its new path without diving into the details of
how the path is embedded into the message during the
NetworkInterface::flitisize ( ) part? What I would want to do is update the
shortest path to the source that is embedded in the flit/network message
based on its current deflected location. If I don't update the path/NetDest
inside the flit i think it would just go back to the router where it came
from since that would be the only node that would match in its routing
table.
cheers!
dean
On Thu, Mar 22, 2012 at 12:40 PM, Tushar Krishna <[email protected]>wrote:
> **
> 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
> [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
>
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users