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

Reply via email to