Hi Malek, According to what I understand in the first solution you suggest the boolean is related to a cache entry, what this will force is that if both ports needs to access the same cache line, only one of them will be able to. What I want is that each cycle only one of the two ports issues a request.
The second option seems to work better, the problem there is that if I schedule my_InPort in one cycle, where the L1RequestToL2 consumer is not scheduled, but later on, the L1RequestToL2 consumer is scheduled in a cycle where my_InPort is scheduled, both will be executed again in the same cycle. My question here would be: "In this situation it would be possible to reschedule my_InPort consumer to another cycle?" And how? :D If we find out that my issue would be totally solved! Thanks in advance! 2012/2/23 Malek Musleh <[email protected]> > Hi Marti, > > I would think that you could use a boolean variable that you defined > in the CacheEntry/DirEntry Structure of the L2, and when set to false, > don't do the desired action. > > For example: > > inport(my_port, RequestMsg, latency="") { > peek(my_port, RequestMsg) { > > bool flag := getEntryFlag(cache_entry, address); > > if(flag) { > > trigger(Event: ........); > > } > // else do nothing > o > } > } > > The getEntryFlag Function could be something you define similar to the > isLocalOwnerValid Function. > > But in this case, the port is still scheduled and woken up every > cycle, but you just don't execute anything. > > If you truly don't want the port to be scheduled for wakeup, it is a > little more tricky. Essentially each in_port inherits from the > Consumer Class (/ruby/common/Consumer.hh) > > What you can do, is check to see if the L1RequestToL2 in_port > (consumer) is scheduled for some said cycle using > the bool alreadySchedule(Time) function, and if not, then schedule > your port (consumer) to wake up. > > Does that make sense? > > Malek > > 2012/2/22 Martí Torrents Lapuerta <[email protected]>: > > Hi Nilay! > > > > That seems a good point :D But how can I do that? > > > > Thanks! > > > > > > 2012/2/22 Nilay Vaish <[email protected]> > >> > >> Why can you not use a boolean variable to track whether or not the L1 > >> cache sent a request to the L2 cache in this cycle? > >> > >> -- > >> Nilay > >> > >> > >> On Wed, 22 Feb 2012, Martí Torrents Lapuerta wrote: > >> > >>> Hy Malek, > >>> > >>> Thanks for your answer, but I think that this parameter (rank) is only > >>> used > >>> when 2 inports are going to access the same address. In my case I want > to > >>> issue only one of the two InPorts per cycle. Do you know any other way? > >>> > >>> Thanks for your attention. > >>> > >>> 2012/2/22 Malek Musleh <[email protected]> > >>> > >>>> Hi Marti, > >>>> > >>>> I believe you would need to specify the rank of the inport. > >>>> > >>>> For example: > >>>> > >>>> // Response Network > >>>> in_port(responseNetwork_in, ResponseMsg, responseToL1Cache, rank=2) { > >>>> > >>>> You would then need to define the priority for each of the in_ports. > >>>> > >>>> Take a look at the MOESI_CMP_Token protocol as reference. > >>>> > >>>> Malek > >>>> > >>>> 2012/2/22 Martí Torrents Lapuerta <[email protected]>: > >>>>> > >>>>> Hello everybody, > >>>>> > >>>>> I am working with the MOESI_CMP_directory-L2cache protocol in Ruby. I > >>>> > >>>> have > >>>>> > >>>>> just added a new input port with some requests that I would like to > >>>> > >>>> inject > >>>>> > >>>>> in L2, however I only want to process this requests, when there is a > >>>> > >>>> cycle > >>>>> > >>>>> where the L1 is not sending any request to the L2. So myInPort must > >>>>> have > >>>>> less priority than the L1requestNetwork_in InPort. I do not know how > to > >>>> > >>>> do > >>>>> > >>>>> this, Is there anybody who could help me with this issue? > >>>>> > >>>>> Thanks > >>>>> > >>>>> Marti > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> _______________________________________________ > >>>>> gem5-users mailing list > >>>>> [email protected] > >>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users > >>>> > >>>> _______________________________________________ > >>>> gem5-users mailing list > >>>> [email protected] > >>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users > >>>> > >>> > >>> > >>> > >>> -- > >>> Martí Torrents Lapuerta > >>> [email protected] > >>> (+34)649 65 10 57 > >> > >> > >> _______________________________________________ > >> gem5-users mailing list > >> [email protected] > >> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users > > > > > > > > > > -- > > Martí Torrents Lapuerta > > [email protected] > > (+34)649 65 10 57 > > > > _______________________________________________ > > gem5-users mailing list > > [email protected] > > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users > _______________________________________________ > gem5-users mailing list > [email protected] > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users > -- Martí Torrents Lapuerta [email protected] (+34)649 65 10 57
_______________________________________________ gem5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
