Go to the documentation of this file.
39 #ifndef __MEM_CACHE_PREFETCH_INDIRECT_MEMORY_HH__
40 #define __MEM_CACHE_PREFETCH_INDIRECT_MEMORY_HH__
51 struct IndirectMemoryPrefetcherParams;
145 unsigned int num_shifts)
210 #endif//__MEM_CACHE_PREFETCH_INDIRECT_MEMORY_HH__
const std::vector< int > shiftValues
Shift values considered.
Addr baseAddr
BaseAddr detected.
IndirectMemory(const IndirectMemoryPrefetcherParams &p)
const int streamingDistance
Number of prefetches generated when using the streaming prefetcher.
int64_t idx2
Second index.
PrefetchTableEntry(unsigned indirect_counter_bits)
const unsigned int prefetchThreshold
Counter threshold to start prefetching.
AssociativeSet< PrefetchTableEntry > prefetchTable
Prefetch table.
IndirectPatternDetectorEntry * ipdEntryTrackingMisses
Entry currently tracking misses.
unsigned int streamCounter
Confidence counter of the stream.
bool secondIndexSet
Valid bit for the second index.
const int streamCounterThreshold
streamCounter value to trigger the streaming prefetcher
void trackMissIndex2(Addr miss_addr)
Update an IPD entry with a detected miss address, when the second index is being tracked.
void invalidate() override
Invalidate the block.
AssociativeSet< IndirectPatternDetectorEntry > ipd
Indirect Pattern Detector (IPD) table.
A tagged entry is an entry containing a tag.
Addr address
Accessed address.
Associative container based on the previosuly defined Entry type Each element is indexed by a key of ...
bool enabled
Enable bit of the indirect fields.
Indirect Pattern Detector entrt.
void reset()
Reset the counter to its initial value.
virtual void invalidate()
Invalidate the block.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
const unsigned int maxPrefetchDistance
Maximum number of prefetches generated per event.
void allocateOrUpdateIPDEntry(const PrefetchTableEntry *pt_entry, int64_t index)
Allocate or update an entry in the IPD.
SatCounter8 indirectCounter
Confidence counter of the indirect fields.
bool increasedIndirectCounter
This variable is set to indicate that there has been at least one match with the current index value.
void invalidate() override
Invalidate the block.
Overload hash function for BasicBlockRange type.
bool secure
Whether this address is in the secure region.
int64_t index
Current index value.
int numMisses
Number of misses currently recorded.
void checkAccessMatchOnActiveEntries(Addr addr)
Checks if an access to the cache matches any active PT entry, if so, the indirect confidence counter ...
void trackMissIndex1(Addr miss_addr)
Update an IPD entry with a detected miss address, when the first index is being tracked.
~IndirectMemory()=default
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::vector< std::vector< Addr > > baseAddr
Potential BaseAddr candidates for each recorded miss.
const ByteOrder byteOrder
Byte order used to access the cache.
IndirectPatternDetectorEntry(unsigned int num_addresses, unsigned int num_shifts)
void calculatePrefetch(const PrefetchInfo &pfi, std::vector< AddrPriority > &addresses) override
Class containing the information needed by the prefetch to train and generate new prefetch requests.
Generated on Sun Jul 30 2023 01:56:57 for gem5 by doxygen 1.8.17