What do the different access_type
enum values defined in inc/channel.h
represent?
#425
-
The access type is passed to the replacement policy via the
What does the Moreover, while implementing replacement policies, how can I distinguish between the memory requests from the core side and the cache fills from the RAM side? I assume that this line in the LRU implementation checks for this. However, what I don't understand is that why a cache fill is not a |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
The access types all refer to the type of request, not the type of action being taken. So, When |
Beta Was this translation helpful? Give feedback.
Yea, if we examine
src/cache.cc
, we see that there are two calls toupdate_replacement_state()
: one inCACHE::try_hit()
withhit=1
, and the other inCACHE::handle_fill()
withhit=0
. So misses do not become visible to the replacement policy until they are filled. This is retained because it was an older behavior of ChampSim. The interface should probably be modified to match the prefetcher: having acache_operate()
function called after the tag check whether it hits or misses, and having acache_fill()
function that is called when a miss is filled. Or, perhaps, we should just makeupdate_replacement_state()
the operate function and rely onfind_victim()
to act as the fill hook.