40 #ifndef __MEM_CACHE_PREFETCH_ACCESS_MAP_PATTERN_MATCHING_HH__ 41 #define __MEM_CACHE_PREFETCH_ACCESS_MAP_PATTERN_MATCHING_HH__ 48 struct AccessMapPatternMatchingParams;
101 for (
auto &entry : states) {
191 struct AMPMPrefetcherParams;
203 #endif//__MEM_CACHE_PREFETCH_ACCESS_MAP_PATTERN_MATCHING_HH__ const Tick offChipMemoryLatency
Off chip memory latency to use for the epoch bandwidth calculation.
EventFunctionWrapper epochEvent
const double highAccuracyThreshold
A prefetch accuracy factor bigger than this is considered high.
Cycles is a wrapper class for representing cycle counts, i.e.
void processEpochEvent()
This event constitues the epoch of the statistics that keep track of the prefetcher accuracy...
std::vector< AccessMapState > states
vector containing the state of the cachelines in this zone
Bitfield< 21, 20 > stride
unsigned degree
Current degree.
~AccessMapPatternMatching()
AccessMapPatternMatching & ampm
void startup() override
startup() is the final initialization call before simulation.
const double lowCacheHitThreshold
A cache hit ratio smaller than this is considered low.
uint64_t numTotalPrefetches
Number of prefetches issued.
const double highCoverageThreshold
A prefetch coverage factor bigger than this is considered high.
void invalidate() override
Invalidates the entry.
unsigned usefulDegree
Current useful degree.
const double lowCoverageThreshold
A prefetch coverage factor smaller than this is considered low.
AccessMapEntry * getAccessMapEntry(Addr am_addr, bool is_secure)
Obtain an AccessMapEntry from the AccessMapTable, if the entry is not found a new one is initialized ...
uint64_t numGoodPrefetches
Number of good prefetches.
void calculatePrefetch(const BasePrefetcher::PrefetchInfo &pfi, std::vector< QueuedPrefetcher::AddrPriority > &addresses)
uint64_t numRawCacheHits
Number of raw cache hits.
Class containing the information needed by the prefetch to train and generate new prefetch requests...
AccessMapState
Data type representing the state of a cacheline in the access map.
uint64_t Tick
Tick count type.
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
AssociativeSet< AccessMapEntry > accessMapTable
Access map table.
const unsigned limitStride
Limit the stride checking to -limitStride/+limitStride.
ClockedObject declaration and implementation.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Associative container based on the previosuly defined Entry type Each element is indexed by a key of ...
AccessMapPatternMatching(const AccessMapPatternMatchingParams *p)
Copyright (c) 2018 Metempsy Technology Consulting All rights reserved.
const double highCacheHitThreshold
A cache hit ratio bigger than this is considered high.
Declaration of the Packet class.
const uint64_t hotZoneSize
Amount of memory covered by a hot zone.
Copyright (c) 2018 Metempsy Technology Consulting All rights reserved.
const unsigned blkSize
Cacheline size used by the prefetcher using this object.
virtual void invalidate()
Invalidates the entry.
AccessMapEntry(size_t num_entries)
const double lowAccuracyThreshold
A prefetch accuracy factor smaller than this is considered low.
uint64_t numRawCacheMisses
Number of raw cache misses.
const Cycles epochCycles
Cycles in an epoch period.
void setEntryState(AccessMapEntry &entry, Addr block, enum AccessMapState state)
Updates the state of a block within an AccessMapEntry, also updates the prefetcher metrics...
const unsigned startDegree
Maximum number of prefetch generated.
AccessMapEntry data type.
bool checkCandidate(std::vector< AccessMapState > const &states, Addr current, int stride) const
Given a target cacheline, this function checks if the cachelines that follow the provided stride have...