Hi Nilay,

Sure, using a local variable to further reduce the calls to getCacheEntry is a 
great idea.  I think that is orthogonal to the suggestion I was making.  I just 
want the ability to directly set the cache_entry and tbe_entry variables in the 
trigger function.  That way the address, cache_entry, and tbe_entry variables 
are dealt with consistently and it avoids adding the separate calls to 
set_cache_entry() and set_tbe () in the inports.

Brad


-----Original Message-----
From: Nilay Vaish [mailto:ni...@cs.wisc.edu] 
Sent: Friday, January 07, 2011 11:40 AM
To: Beckmann, Brad
Cc: Default
Subject: RE: Review Request: Changing how CacheMemory interfaces with SLICC

Brad, my comments are inline.


On Fri, 7 Jan 2011, Beckmann, Brad wrote:

> Hi Nilay,
>
>
>
> Unfortunately I can't provide you an example of a protocol where 
> getCacheEntry behaves in a different manner, but they do exist.  I 
> reviewed your most recent patch updates and I don't think what we're 
> asking for is much different than what you have on reviewboard right 
> now.  Basically, all we need to do is add back in the capability for 
> the programmer to write their own getCacheEntry function in the .sm file.
> I know that I initially asked you to automatically generate those 
> functions, and I still think that is useful for most protocols, but 
> Lisa made me realize that we need customized getCacheEntry functions as well.
> Also we may want to change the name of generated getCacheEntry 
> function to getExclusiveCacheEntry so that one realizes the exclusive 
> assumption made by the function.
>
>
>
> Other than that, the only other change I suggest is to allow the trigger 
> function to directly set the implicit cache_entry and tbe_entry 
> variables.  Below is example of what I'm envisioning:
>

[Nilay] If we do things in this way, then any in_port, in which cache / tb 
entries are accessed before the trigger function, would still make calls 
to isCacheTagPresent().

>
>
> Currently in MOESI_CMP_directory-L1cache.sm:
>
>
>
> in_port(useTimerTable_in, Address, useTimerTable) {
>
>    if (useTimerTable_in.isReady()) {
>
>        set_cache_entry(getCacheEntry(useTimerTable.readyAddress()));
>
>        set_tbe(TBEs[useTimerTable.readyAddress()]);
>
>        trigger(Event:Use_Timeout, useTimerTable.readyAddress());
>
>    }
>
> }
>
>
>
> Replace that with the following:
>
>
>
> in_port(useTimerTable_in, Address, useTimerTable) {
>
>    if (useTimerTable_in.isReady()) {
>
>        trigger(Event:Use_Timeout, useTimerTable.readyAddress(),
>
>                getExclusiveCacheEntry(useTimerTable.readyAddress()),
>
>               TBEs[useTimerTable.readyAddress()]);
>
>    }
>
> }
>

[Nilay] Instead of passing cache and tb entries as arguments, we can 
create local variables in the trigger function using the address argument.

>
>
> Please let me know if you have any questions.
>
>
>
> Thanks...you're almost done.  :)
>
>
>
> Brad
>
>
>
>
>

Thanks
Nilay


_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to