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
