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>
This commit is contained in:
committed by
Javier Bueno Hedo
parent
e13d6dc9c0
commit
c2c1a976ee
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user