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