Hi Jinzhu,
While it is true that the a garnet router is more accurate than the 
PerfectSwitch as it models contention in a detailed manner, I don't think your 
problem has anything to do with that.
I think you should track messages through each router and see why/where 2 
messages from the same source get re-ordered.

I am wondering if the problem could with the topology itself… 
Are you modeling multiple buses as multiple links between routers?
How does a router guarantee that certain messages only go on certain links 
(buses), and certain others go on other links? By default both simple/garnet 
networks try to route using the shortest path, and here all buses will be on 
the shortest path.

- Tushar


On Aug 19, 2012, at 11:41 PM, gem5 gem5 wrote:

> Hi Tushar,
> 
> I have tried to modify the PerfectSwitch to schedule messages according to a 
> fixed round robin order. And then I also did the same to the throttle link by 
> changing the wakeup order. However, I still cannot see the total order in 
> multiple logic buses. I wonder if that is because the implementation of 
> PerfectSwtich does not reflect the timing characteristic of a real router. It 
> just simply copies everything from the inport to the outport. Although I 
> scheduled according to a predefined order, but actually it's still done right 
> away. Maybe a more detailed model such as Garnet router can solve the 
> problem? I wonder if that's the issue or there is something else I am missing 
> here.
> 
> What I did is just to take a few logic buses (I have tested a individual bus 
> with a broadcast protocol and it works). Each node has a router before all 
> the input links from the buses to model multiple reading channels for the 
> node. Each node only has one output link connecting to its dedicated writing 
> bus to model the single writing channel. In this way, it models single write 
> multi read bus-based crossbar....I am not sure if this is the right way to 
> model it and if this kind of design should provide total order. Any comments?
> 
> Thank you very much!
> 
> Best,
> 
> Jinzhu
> 
> On Fri, Aug 10, 2012 at 9:58 PM, gem5 gem5 <gem5.user....@gmail.com> wrote:
> Tushar,
> 
> Thank you very much. Yes, I guess all the routers are connected to the same 
> MessageBuffer and each router represents a logic bus. I think the controller 
> does not listen to all the buses according to a particular order. Even if I 
> connect a router before the controller, the router might not listen to all 
> the buses according to a particular order.  I thought the simple network's 
> router arbitrates/allocates everything following the same round robin, but 
> maybe that's not the case... 
> 
> Thanks for your suggestion. I will look at the simple router first and then 
> check the event queue if necessary.
> 
> Best,
> 
> Jinzhu
> 
> 
> On Fri, Aug 10, 2012 at 12:19 AM, Tushar Krishna <tus...@csail.mit.edu> wrote:
> Hi Jinzhu,
> Hmm if I understand your topology correctly, each controller connects to 
> multiple routers: each router corresponding to one bus.
> The problem is that all these routers connect  to the same MessageBuffer in 
> the controller... ?
> And I guess the problem occurs because the routers on each bus can wake up in 
> any order within a cycle which means the controller's MessageBuffer does not 
> see messages from each bus in a particular order.
> 
> If this is the problem, connecting all buses/routers to *one* router which 
> then connects to the controller, and then reading each bus in a particular 
> order should solve the problem. But you say you tried that? You should 
> probably debug why that doesn't work..
> 
> If your problem can be solved by a particular wakeup order, you could look 
> into the event queue to see if you can create some  order between events with 
> the same time. I don't have any experience with that though...
> 
> - Tushar
> 
> 
> On Aug 9, 2012, at 5:37 PM, gem5 gem5 <gem5.user....@gmail.com> wrote:
> 
> > Hi,
> >
> > I have created a logic bus to run a broadcast protocol which requires total 
> > ordering in ruby simple network. It works. Now I need to have multiple 
> > logic buses. To achieve total ordering among different buses, each 
> > cache/directory controller needs to listen to all the buses according to a 
> > predefined order.  I have tried several methods, such as, set the interface 
> > MessageBuffer order to be true, connect a router between all the input 
> > links and a controller, but none of them works. I wonder what 's the right 
> > way to achieve the goal. Thanks.
> >
> > Best,
> >
> > Jinzhu
> > _______________________________________________
> > gem5-users mailing list
> > gem5-users@gem5.org
> > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
> _______________________________________________
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
> 
> 
> _______________________________________________
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to