Hi Daniel,
Firstly regarding the mapping of input port numbers to port type:
the network models in Ruby can model any topology, not just a mesh. Even in a 
mesh, some routers (edges/corners) have fewer ports, while others have more 
etc. Hence the mapping between input port id and direction is arbitrary.
To get around this problem, what  I have often done in the past is to store a 
table/map of input port number to direction in each router, and populate it 
when the network is being created in GarnetNetwork_d.
From the src and dest switch ids, you can figure out the direction, and 
accordingly populate this table when the input and output ports are being 
created.

I didn't really understand what you mean by VCs are already mapped to a 
specific output port.
Garnet models input VCs, i.e each input port has N VCs. These VCs are allocated 
by flits sitting at the previous router. Once a flit comes in  and sits in its 
input VC, it can arbitrate for any VC at its output port (i.e. any VC at the 
neighbor's input port).
I don't know the details of the Row-Column router paper, but from what I can 
guess, the input VCs are statically partitioned such that flits going straight 
sit in one set of VCs, and flits that are turning sit in another set of VCs. A 
flit sitting in the W input port, and going straight (E) arbitrates for the 
switch with those VCs at other input ports that wish to turn E. And so on.
Once you have a mapping of which input port corresponds to what direction, all 
this should be easy to model.

- Tushar


On Nov 19, 2012, at 11:07 AM, Daniel Bueso wrote:

> Hi Tushar,
> 
> I noticed you have answered many questions in regards to the Garnet network.  
> I was wondering if you could offer some advice for some changes I'd like to 
> implement.  I am trying to apply the Garnet router in a Row-Column fashion as 
> discussed here: http://dl.acm.org/citation.cfm?id=1136487 .  The decouple 
> scheme discussed in that paper performs VA and SA in a separable manner by 
> using different arbitration blocks for flits traveling East-West then those 
> going North-South.  I noticed in NetworkInterface_d a VC is calculated for a 
> flit.  I am thinking about splitting the VCs up for flits traveling East-West 
> and flits going North-South, am I right in thinking that VCs are already 
> mapped to a specific output port?  After splitting the VCs I believe much 
> will need to be changed in the VC allocator.  I was also wondering where 
> could I print out the input port numbers, is this simply the InputUnit_d id?  
> From there I would need to know if 0 = East, 1 = West, ...., and 5 = NI.
> 
> Thanks in advance for your help.  It is very much appreciated!
> 
> Best,
> 
> Daniel Bueso
> Texas A&M University

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

Reply via email to