mem-cache: Use findBlock in FALRU's block access
An access must perform a block search, which is done by findBlock. The tagHash is indexed by tags, so use extractTag instead of re- implementing its functionality. Change-Id: Ib5abacbc65cddf0f2d7e4440eb5355b56998a585 Reviewed-on: https://gem5-review.googlesource.com/10082 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
committed by
Daniel Carvalho
parent
26f6b94584
commit
b11a6d508c
14
src/mem/cache/tags/fa_lru.cc
vendored
14
src/mem/cache/tags/fa_lru.cc
vendored
@@ -139,10 +139,9 @@ FALRU::accessBlock(Addr addr, bool is_secure, Cycles &lat,
|
||||
CachesMask *in_caches_mask)
|
||||
{
|
||||
CachesMask mask = 0;
|
||||
Addr blkAddr = blkAlign(addr);
|
||||
FALRUBlk* blk = hashLookup(blkAddr);
|
||||
FALRUBlk* blk = static_cast<FALRUBlk*>(findBlock(addr, is_secure));
|
||||
|
||||
if (blk && blk->isValid()) {
|
||||
if (blk != nullptr) {
|
||||
// If a cache hit
|
||||
lat = accessLatency;
|
||||
// Check if the block to be accessed is available. If not,
|
||||
@@ -153,13 +152,12 @@ FALRU::accessBlock(Addr addr, bool is_secure, Cycles &lat,
|
||||
lat = cache->ticksToCycles(blk->whenReady - curTick()) +
|
||||
accessLatency;
|
||||
}
|
||||
assert(blk->tag == blkAddr);
|
||||
mask = blk->inCachesMask;
|
||||
|
||||
moveToHead(blk);
|
||||
} else {
|
||||
// If a cache miss
|
||||
lat = lookupLatency;
|
||||
blk = nullptr;
|
||||
}
|
||||
if (in_caches_mask) {
|
||||
*in_caches_mask = mask;
|
||||
@@ -174,11 +172,11 @@ FALRU::accessBlock(Addr addr, bool is_secure, Cycles &lat,
|
||||
CacheBlk*
|
||||
FALRU::findBlock(Addr addr, bool is_secure) const
|
||||
{
|
||||
Addr blkAddr = blkAlign(addr);
|
||||
FALRUBlk* blk = hashLookup(blkAddr);
|
||||
Addr tag = extractTag(addr);
|
||||
FALRUBlk* blk = hashLookup(tag);
|
||||
|
||||
if (blk && blk->isValid()) {
|
||||
assert(blk->tag == blkAddr);
|
||||
assert(blk->tag == tag);
|
||||
assert(blk->isSecure() == is_secure);
|
||||
} else {
|
||||
blk = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user