summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Bueno <javier.bueno@metempsy.com>2019-04-02 23:34:20 +0200
committerJavier Bueno Hedo <javier.bueno@metempsy.com>2019-04-04 12:13:14 +0000
commitc2c1a976ee76cf3064045a21187ca985ca88a347 (patch)
tree25e59c1f60fb26338a515a37afbcd21e3dc6eb8f
parente13d6dc9c0d7a4ae0215f1ee6793eb32570c5169 (diff)
downloadgem5-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>
-rw-r--r--src/mem/cache/prefetch/access_map_pattern_matching.cc10
-rw-r--r--src/mem/cache/prefetch/access_map_pattern_matching.hh1
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);
};