Hello,
I want to make a experiment about 'Cache Phase'. For example, I call a
replacement of dirty cache block as 'dirty replacement', which describes
the phase between the last written of the cache block and a replacement
just after it. The key of this test is focus on any changing of cache entry.
In order to count how many 'dirty replacement' happened, I add some
function in the implement file of cache coherence protocol. For example
in 'MI_example-cache.sm', I modify an action to
///this is an action of 'replacement' event/
/ action(h_deallocateL1CacheBlock, "h", desc="deallocate a cache block") {
if (is_valid(cache_entry)) {
//added by zheng
if(cache_entry.Dirty == true)
{
zheng_calc_dr();//my counter function of 'dirty replacement'
}
else
{
zheng_calc_cr();
}
cacheMemory.deallocate(address);
unset_cache_entry();
}
}/
This seems a good idea, but in a complex coherence protocol there is too
many state and event, so it's very hard to find out where the
replacement action happens.
It may be a better idea to modify the CacheMemory class instead of
coherence protocol, but it's impossible because the CacheMemory class
only export seven function to communicate with slicc. I think it's hard
to make a statistic focus on cache entry.
So, can someone gives me a better idea, or someone faces a similar
problem talks with me?
Any Help Really Appreciated!
Chuanlei
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users