Hi gem5 community, TL;DR:
1. In "classic" memory, the current 2 options, mostly_incl and mostly_excl, seem to apply only to cache fill but NOT eviction. As a result, blocks evicted from L2 may be still present in L1. Is my understanding correct? 2. What would be a reasonable way to enforce strict inclusivity and exclusivity? ---------------------- Details: This link may provide some background: https://m5-dev.m5sim.narkive.com/qRrXUtt7/gem5-dev-review-request-3156-mem-add-cache-clusivity-to-steer-behaviour-on-fill 1. In the case of a replacement eviction, BaseCache::allocateBlock() finds a victim and then calls BaseCache::handleEvictions() >> BaseCache::evictBlock() >> Cache::evictBlock(). As a result, a packet is pushed into writebacks list. doWritebacks() doesn't seem to bother upstream caches that hold the same block. 2. To implement strict inclusivity, the most obvious way to me is letting doWritebacks() send an invalidation packet through cpuSidePort. But I don't know how to stitch these things together without breaking other stuff.
_______________________________________________ gem5-users mailing list -- gem5-users@gem5.org To unsubscribe send an email to gem5-users-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s