summaryrefslogtreecommitdiff
path: root/src/mem/cache/tags/fa_lru.cc
diff options
context:
space:
mode:
authorDaniel R. Carvalho <odanrc@yahoo.com.br>2018-04-24 11:20:38 +0200
committerDaniel Carvalho <odanrc@yahoo.com.br>2018-06-08 09:33:39 +0000
commit62db2c46f460deb41d43930e4b6460e53f70376a (patch)
treeb00cde3c6f1c2f7f12d8c86b5db8aa68ea69259a /src/mem/cache/tags/fa_lru.cc
parent815b12fb4aa45bfe8b38f96f923c150880bf9200 (diff)
downloadgem5-62db2c46f460deb41d43930e4b6460e53f70376a.tar.xz
mem-cache: Return evictions along with victims
For both sector and compressed caches multiple blocks may need to be evicted in order to make room for a new block. For example, when replacing a sector, all the blocks in this sector must be evicted. A replacement, however, does not always need to evict multiple blocks, as it is in the case of an insertion of a block whose sector is already present in the cache (i.e., its corresponding entry in the sector had not been brought in yet, so it was invalid). This patch creates the cache framework for that to happen. Change-Id: I77bedf69637cf899fef4d9432eb6da8529ea398b Reviewed-on: https://gem5-review.googlesource.com/10142 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem/cache/tags/fa_lru.cc')
-rw-r--r--src/mem/cache/tags/fa_lru.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mem/cache/tags/fa_lru.cc b/src/mem/cache/tags/fa_lru.cc
index a6e1b3be1..8eab62845 100644
--- a/src/mem/cache/tags/fa_lru.cc
+++ b/src/mem/cache/tags/fa_lru.cc
@@ -193,9 +193,15 @@ FALRU::findBlockBySetAndWay(int set, int way) const
}
CacheBlk*
-FALRU::findVictim(Addr addr)
+FALRU::findVictim(Addr addr, std::vector<CacheBlk*>& evict_blks) const
{
- return tail;
+ // The victim is always stored on the tail for the FALRU
+ FALRUBlk* victim = tail;
+
+ // There is only one eviction for this replacement
+ evict_blks.push_back(victim);
+
+ return victim;
}
void