diff options
author | Javier Bueno <javier.bueno@metempsy.com> | 2019-04-02 23:34:20 +0200 |
---|---|---|
committer | Javier Bueno Hedo <javier.bueno@metempsy.com> | 2019-04-04 12:13:14 +0000 |
commit | c2c1a976ee76cf3064045a21187ca985ca88a347 (patch) | |
tree | 25e59c1f60fb26338a515a37afbcd21e3dc6eb8f /src/mem/cache/prefetch | |
parent | e13d6dc9c0d7a4ae0215f1ee6793eb32570c5169 (diff) | |
download | gem5-c2c1a976ee76cf3064045a21187ca985ca88a347.tar.xz |
mem-cache: AMPM Prefetcher fails when restoring from a checkpoint
The preriodic event triggers an assertion due to an incorrect tick value to
schedule when restoring from a checkpoint.
Change-Id: I9454dd0c97d5a098f8a409886e63f7a7e990947c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17732
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem/cache/prefetch')
-rw-r--r-- | src/mem/cache/prefetch/access_map_pattern_matching.cc | 10 | ||||
-rw-r--r-- | src/mem/cache/prefetch/access_map_pattern_matching.hh | 1 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/mem/cache/prefetch/access_map_pattern_matching.cc b/src/mem/cache/prefetch/access_map_pattern_matching.cc index df2a9f7ec..731d6069c 100644 --- a/src/mem/cache/prefetch/access_map_pattern_matching.cc +++ b/src/mem/cache/prefetch/access_map_pattern_matching.cc @@ -57,9 +57,12 @@ AccessMapPatternMatching::AccessMapPatternMatching( { fatal_if(!isPowerOf2(hotZoneSize), "the hot zone size must be a power of 2"); - if (!epochEvent.scheduled()) { - schedule(epochEvent, clockEdge(epochCycles)); - } +} + +void +AccessMapPatternMatching::startup() +{ + schedule(epochEvent, clockEdge(epochCycles)); } void @@ -153,6 +156,7 @@ AccessMapPatternMatching::calculatePrefetch( std::vector<QueuedPrefetcher::AddrPriority> &addresses) { assert(addresses.empty()); + bool is_secure = pfi.isSecure(); Addr am_addr = pfi.getAddr() / hotZoneSize; Addr current_block = (pfi.getAddr() % hotZoneSize) / blkSize; diff --git a/src/mem/cache/prefetch/access_map_pattern_matching.hh b/src/mem/cache/prefetch/access_map_pattern_matching.hh index 0968e6475..397bc788a 100644 --- a/src/mem/cache/prefetch/access_map_pattern_matching.hh +++ b/src/mem/cache/prefetch/access_map_pattern_matching.hh @@ -180,6 +180,7 @@ class AccessMapPatternMatching : public ClockedObject AccessMapPatternMatching(const AccessMapPatternMatchingParams* p); ~AccessMapPatternMatching() {} + void startup() override; void calculatePrefetch(const BasePrefetcher::PrefetchInfo &pfi, std::vector<QueuedPrefetcher::AddrPriority> &addresses); }; |