36#ifndef __MEM_CACHE_PREFETCH_BOP_HH__
37#define __MEM_CACHE_PREFETCH_BOP_HH__
47struct BOPPrefetcherParams;
155 BOP(
const BOPPrefetcherParams &
p);
Information provided to probes on a cache event.
std::deque< DelayQueueEntry > delayQueue
void calculatePrefetch(const PrefetchInfo &pfi, std::vector< AddrPriority > &addresses, const CacheAccessor &cache) override
unsigned int round
Current round.
std::vector< Addr > rrLeft
unsigned int bestScore
Max score found so far.
const unsigned int delayQueueSize
void insertIntoDelayQueue(Addr addr)
Insert the specified address into the delay queue.
BOP(const BOPPrefetcherParams &p)
unsigned int hash(Addr addr, unsigned int way) const
Generate a hash for the specified address to index the RR table.
const unsigned int rrEntries
Recent requests table parameteres.
const unsigned int tagMask
std::vector< OffsetListEntry >::iterator offsetsListIterator
Current test offset index.
const unsigned int badScore
const bool delayQueueEnabled
Delay queue parameters.
const unsigned int scoreMax
Learning phase parameters.
std::pair< int16_t, uint8_t > OffsetListEntry
Structure to save the offset and the score.
std::vector< Addr > rrRight
bool issuePrefetchRequests
Hardware prefetcher enabled.
Addr tag(Addr addr) const
Generate the tag for the specified address based on the tag bits and the block size.
void delayQueueEventWrapper()
Event to handle the delay queue processing.
void bestOffsetLearning(Addr)
Learning phase of the BOP.
const unsigned int roundMax
void insertIntoRR(Addr addr, unsigned int way)
Insert the specified address into the RR table.
Addr phaseBestOffset
Current best offset found in the learning phase.
EventFunctionWrapper delayQueueEvent
void notifyFill(const CacheAccessProbeArg &arg) override
Update the RR right table after a prefetch fill.
std::vector< OffsetListEntry > offsetsList
bool testRR(Addr) const
Test if @X-O is hitting in the RR table to update the offset score.
void resetScores()
Reset all the scores from the offset list.
Addr bestOffset
Current best offset to issue prefetches.
const unsigned int delayTicks
Class containing the information needed by the prefetch to train and generate new prefetch requests.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
Declaration of the Packet class.
Provides generic cache lookup functions.
In a first implementation of the BO prefetcher, both banks of the RR were written simultaneously when...
DelayQueueEntry(Addr x, Tick t)