Hmmm the ruby_network_tester is supposed to be used only with the NetworkTest 
coherence protocol …
Not sure how it interacts with other protocols.
With Hammer,  I would suggest using ruby_random_test

Don't know how controllers work with multiple input links. I think they should 
work fine.
In any case, if you get deadlocks, look at the protocol trace to figure out 
what went wrong…

- Tushar
 

On Aug 28, 2012, at 3:38 AM, gem5 gem5 wrote:

> Actually Pt2Pt will also have a deadlock if the sim cycles are that many.....
> 
> On Tue, Aug 28, 2012 at 1:57 AM, gem5 gem5 <gem5.user....@gmail.com> wrote:
> Hi Tushar,
> 
> I wonder if all the nodes(controllers) need to have a router before them. 
> This is what I have seen for all the topologies created in GEM5. I have tried 
> topology like the one I attach here. If I run it with ruby_network_tester for 
> simple network with Hammer protocol for 1000000000 sim-cycles. I will have 
> deadlock. But if I run the same for Pt2Pt in GEM5 for example, then there is 
> no deadlock. Do you think because controllers do not know how to handle 
> multiple input links well? or there are some other reasons. Please help me 
> figure it out. Thank you very much!
> 
> Best,
> 
> Jinzhu
> 
> On Thu, Aug 23, 2012 at 10:07 PM, gem5 gem5 <gem5.user....@gmail.com> wrote:
> Thank you very much, Tushar:) 
> 
> Best,
> 
> Jinzhu
> 
> 
> On Wed, Aug 22, 2012 at 12:24 AM, Tushar Krishna <tus...@csail.mit.edu> wrote:
> Hi Jinzhu,
> Do the orange routers guarantee that the message is delivered out of all 
> output links simultaneously?
> I think something like the following could be the problem:
> Suppose Core B and Core C are sharing a line.
> Core A does a broadcast for GETX. At the orange routers, suppose it reaches 
> Core B and Core C, but not Core D since that output link is busy and/or no 
> free buffer at Core D.
> Now Core B looks at this message and invalidates its copy. Now it sends out a 
> GETX.
> Suppose Core D receives this GETX (via Core B's orange router) before the 
> older GETX from Core A (still stuck in Core A's router for some reason).
> This will violate ordering (because other cores saw Core A's broadcast before 
> Core B's).
> 
> (1) since the orange routers are modeling a "bus", any message being 
> broadcast should wait till ALL output links are free and then  be sent out of 
> all output links simultaneously.
> (2) after that the blue routers should guarantee a FIFO ordering (to ensure 
> that messages received from two different "buses" don't get reordered) when 
> delivering messages to the core.
> 
> I *think* (though you should check) that (2) is guaranteed automatically in 
> the code since the input queues are implemented as MessageBuffers which order 
> messages according to time of receipt, but I know (1) is not guaranteed by 
> default in the simple router. 
> See if that solves your issue. 
> While a stronger condition of latency between two nodes always being the same 
> will definitely solve your problem, I think a weaker condition of ensuring 
> that ALL the blue routers receive messages from different buses in the same 
> order should be the constraint.
> 
> - Tushar
> 
> 
> On Aug 21, 2012, at 5:30 PM, gem5 gem5 wrote:
> 
>> Tushar,
>> 
>> All the links used in my topology are single directional. The connection is 
>> as the attached image. It's Single writer multiple reader and  I think this 
>> topology should be able to guarantee that certain messages only go on 
>> certain buses.
>> 
>> I am thinking the problem is that the total order is achieved only when the 
>> latency between any two nodes is always the same, but the throttle link 
>> creates lots of delays(some messages got sent much later) so latency is not 
>> always the same.....And maybe I should also create one MessageBuffer/queue 
>> for every bus in the controller instead of just one MessageBuffer for one 
>> vnet. Then I can read messages from all the messagebuffer round robin. Is 
>> the simple network modeled cycle accurate? Any suggestions? Thank you very 
>> much!
>> 
>> Best,
>> Jinzhu
>> 
>> On Mon, Aug 20, 2012 at 1:14 AM, Tushar Krishna <tus...@csail.mit.edu> wrote:
>> 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
>> 
>> <SWMR.jpg>_______________________________________________
>> 
>> 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