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