diff options
author | Daniel R. Carvalho <odanrc@yahoo.com.br> | 2018-10-18 15:31:51 +0200 |
---|---|---|
committer | Daniel Carvalho <odanrc@yahoo.com.br> | 2018-11-14 21:02:08 +0000 |
commit | c6e0d8f54f1ce90933f95a7a3a875fed53b8ee3e (patch) | |
tree | 60bb086bf5b96e5c694eb662f0e34abeae26e6ad /src/mem/cache/base.hh | |
parent | ea0f654923d13a2f81fe7c22eeca4c8cffae947a (diff) | |
download | gem5-c6e0d8f54f1ce90933f95a7a3a875fed53b8ee3e.tar.xz |
mem-cache: Move access latency calculation to Cache
Access latency was not being calculated properly, as it was
always assuming that for hits reads take as long as writes,
and that parallel accesses would produce the same latency
for read and write misses.
By moving the calculation to the Cache we can use the write/
read information, reduce latency variables duplication and
remove Cache dependency from Tags.
The tag lookup latency is still calculated by the Tags.
Change-Id: I71bc68fb5c3515b372c3bf002d61b6f048a45540
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/13697
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem/cache/base.hh')
-rw-r--r-- | src/mem/cache/base.hh | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mem/cache/base.hh b/src/mem/cache/base.hh index ad5ff3bc4..240bf216f 100644 --- a/src/mem/cache/base.hh +++ b/src/mem/cache/base.hh @@ -419,6 +419,17 @@ class BaseCache : public MemObject Addr regenerateBlkAddr(CacheBlk* blk); /** + * Calculate access latency in ticks given a tag lookup latency, and + * whether access was a hit or miss. + * + * @param blk The cache block that was accessed. + * @param lookup_lat Latency of the respective tag lookup. + * @return The number of ticks that pass due to a block access. + */ + Cycles calculateAccessLatency(const CacheBlk* blk, + const Cycles lookup_lat) const; + + /** * Does all the processing necessary to perform the provided request. * @param pkt The memory request to perform. * @param blk The cache block to be updated. @@ -805,6 +816,11 @@ class BaseCache : public MemObject */ const Cycles responseLatency; + /** + * Whether tags and data are accessed sequentially. + */ + const bool sequentialAccess; + /** The number of targets for each MSHR. */ const int numTarget; |