Go to the documentation of this file.
40 #ifndef __MEM_CACHE_PREFETCH_SIGNATURE_PATH_HH__
41 #define __MEM_CACHE_PREFETCH_SIGNATURE_PATH_HH__
48 struct SignaturePathPrefetcherParams;
113 entry.counter.reset();
129 if (entry.stride ==
stride) {
130 found_entry = &entry;
218 PatternStrideEntry
const &lookahead)
const;
227 PatternStrideEntry
const &entry)
const;
235 PatternStrideEntry &pstride_entry);
291 #endif//__MEM_CACHE_PREFETCH_SIGNATURE_PATH_HH__
stride_t lastBlock
Last accessed block within a page.
PatternEntry & getPatternEntry(Addr signature)
Obtains the PatternEntry of the given signature, if the signature is not found, it allocates a new on...
void reset()
Reset the counter to its initial value.
virtual void increasePatternEntryCounter(PatternEntry &pattern_entry, PatternStrideEntry &pstride_entry)
Increases the counter of a given PatternEntry/PatternStrideEntry.
A stride entry with its counter.
Copyright (c) 2018 Metempsy Technology Consulting All rights reserved.
AssociativeSet< PatternEntry > patternTable
Pattern table.
Associative container based on the previosuly defined Entry type Each element is indexed by a key of ...
void invalidate() override
Reset the entries to their initial values.
PatternStrideEntry & getStrideEntry(stride_t stride)
Gets the entry with the provided stride, if there is no entry with the associated stride,...
virtual double calculateLookaheadConfidence(PatternEntry const &sig, PatternStrideEntry const &lookahead) const
Computes the lookahead path confidence of the provided pattern entry.
void calculatePrefetch(const PrefetchInfo &pfi, std::vector< AddrPriority > &addresses) override
const unsigned stridesPerPatternEntry
Number of strides stored in each pattern entry.
stride_t stride
stride in a page in blkSize increments
PatternEntry(size_t num_strides, unsigned counter_bits)
int16_t stride_t
Stride type.
signature_t signature
Path signature.
const double lookaheadConfidenceThreshold
Minimum confidence to keep navigating lookahead entries.
signature_t updateSignature(signature_t sig, stride_t str) const
Generates a new signature from an existing one and a new stride.
Pattern entry data type, a set of stride and counter entries.
SatCounter counter
Saturating counter.
Copyright (c) 2018 Metempsy Technology Consulting All rights reserved.
virtual double calculatePrefetchConfidence(PatternEntry const &sig, PatternStrideEntry const &entry) const
Computes the prefetch confidence of the provided pattern entry.
AssociativeSet< SignatureEntry > signatureTable
Signature table.
std::vector< PatternStrideEntry > strideEntries
group of stides
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Implements an n bit saturating counter and provides methods to increment, decrement,...
const uint8_t signatureShift
Number of bits to shift when generating a new signature.
PatternStrideEntry(unsigned bits)
virtual void invalidate()
Invalidates the entry.
void updatePatternTable(Addr signature, stride_t stride)
Updates the pattern table with the provided signature and stride.
uint16_t signature_t
Signature type.
Bitfield< 21, 20 > stride
const double prefetchConfidenceThreshold
Minimum confidence to issue a prefetch.
virtual void auxiliaryPrefetcher(Addr ppn, stride_t current_block, bool is_secure, std::vector< AddrPriority > &addresses)
Auxiliar prefetch mechanism used at the end of calculatePrefetch.
SignatureEntry & getSignatureEntry(Addr ppn, bool is_secure, stride_t block, bool &miss, stride_t &stride, double &initial_confidence)
Obtains the SignatureEntry of the given page, if the page is not found, it allocates a new one,...
SatCounter counter
use counter, used by SPPv2
void addPrefetch(Addr ppn, stride_t last_block, stride_t delta, double path_confidence, signature_t signature, bool is_secure, std::vector< AddrPriority > &addresses)
Generates an address to be prefetched.
const signature_t signatureBits
Size of the signature, in bits.
virtual void handlePageCrossingLookahead(signature_t signature, stride_t last_offset, stride_t delta, double path_confidence)
Handles the situation when the lookahead process has crossed the boundaries of the current page.
SignaturePath(const SignaturePathPrefetcherParams *p)
PatternStrideEntry * findStride(stride_t stride)
Returns the entry with the desired stride.
virtual void handleSignatureTableMiss(stride_t current_block, signature_t &new_signature, double &new_conf, stride_t &new_stride)
Whenever a new SignatureEntry is allocated, it computes the new signature to be used with the new ent...
Signature entry data type.
T bits(T val, int first, int last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17