diff options
author | Lena Olson <lena@cs.wisc.edu> | 2012-06-29 11:21:58 -0400 |
---|---|---|
committer | Lena Olson <lena@cs.wisc.edu> | 2012-06-29 11:21:58 -0400 |
commit | d2ebade5a5f5a20a159f62b9e76c6abdf8b00726 (patch) | |
tree | 5d8f67778c6e27970b5f31bd7fbcc7b1a8038513 /src/mem/cache/tags/cacheset.hh | |
parent | fcccab0dcdc57fe838bb64d584ebbcf28c059dee (diff) | |
download | gem5-d2ebade5a5f5a20a159f62b9e76c6abdf8b00726.tar.xz |
Cache: Fix the LRU policy for classic memory hierarchy
The LRU policy always evicted the least recently touched way, even if it
contained valid data and another way was invalid, as can happen if a block has
been invalidated by coherance. This can result in caches never warming up even
though they are replacing blocks. This modifies the LRU policy to move blocks
to LRU position on invalidation.
Diffstat (limited to 'src/mem/cache/tags/cacheset.hh')
-rw-r--r-- | src/mem/cache/tags/cacheset.hh | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mem/cache/tags/cacheset.hh b/src/mem/cache/tags/cacheset.hh index a1cf937cf..d38a1e927 100644 --- a/src/mem/cache/tags/cacheset.hh +++ b/src/mem/cache/tags/cacheset.hh @@ -66,6 +66,12 @@ class CacheSet */ void moveToHead(CacheBlk *blk); + /** + * Move the given block to the tail of the list. + * @param blk The block to move + */ + void moveToTail(CacheBlk *blk); + }; #endif |