Go to the documentation of this file.
40 #ifndef __MEM_CACHE_PREFETCH_SIGNATURE_PATH_HH__
41 #define __MEM_CACHE_PREFETCH_SIGNATURE_PATH_HH__
51 struct SignaturePathPrefetcherParams;
117 entry.counter.reset();
133 if (entry.stride ==
stride) {
134 found_entry = &entry;
222 PatternStrideEntry
const &lookahead)
const;
231 PatternStrideEntry
const &entry)
const;
239 PatternStrideEntry &pstride_entry);
296 #endif//__MEM_CACHE_PREFETCH_SIGNATURE_PATH_HH__
const unsigned stridesPerPatternEntry
Number of strides stored in each pattern entry.
const signature_t signatureBits
Size of the signature, in bits.
PatternEntry(size_t num_strides, unsigned counter_bits)
PatternStrideEntry(unsigned bits)
stride_t stride
stride in a page in blkSize increments
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.
const double lookaheadConfidenceThreshold
Minimum confidence to keep navigating lookahead entries.
Signature entry data type.
const uint8_t signatureShift
Number of bits to shift when generating a new signature.
void invalidate() override
Reset the entries to their initial values.
virtual double calculateLookaheadConfidence(PatternEntry const &sig, PatternStrideEntry const &lookahead) const
Computes the lookahead path confidence of the provided pattern entry.
const double prefetchConfidenceThreshold
Minimum confidence to issue a prefetch.
constexpr uint64_t mask(unsigned nbits)
Generate a 64-bit mask of 'nbits' 1s, right justified.
signature_t signature
Path signature.
uint16_t signature_t
Signature type.
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.
A tagged entry is an entry containing a tag.
PatternStrideEntry * findStride(stride_t stride)
Returns the entry with the desired stride.
virtual void increasePatternEntryCounter(PatternEntry &pattern_entry, PatternStrideEntry &pstride_entry)
Increases the counter of a given PatternEntry/PatternStrideEntry.
SatCounter8 counter
use counter, used by SPPv2
void updatePatternTable(Addr signature, stride_t stride)
Updates the pattern table with the provided signature and stride.
Associative container based on the previosuly defined Entry type Each element is indexed by a key of ...
int16_t stride_t
Stride type.
stride_t lastBlock
Last accessed block within a page.
void reset()
Reset the counter to its initial value.
A stride entry with its counter.
PatternEntry & getPatternEntry(Addr signature)
Obtains the PatternEntry of the given signature, if the signature is not found, it allocates a new on...
void calculatePrefetch(const PrefetchInfo &pfi, std::vector< AddrPriority > &addresses) override
PatternStrideEntry & getStrideEntry(stride_t stride)
Gets the entry with the provided stride, if there is no entry with the associated stride,...
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
SignaturePath(const SignaturePathPrefetcherParams &p)
virtual void invalidate()
Invalidate the block.
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...
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
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.
AssociativeSet< SignatureEntry > signatureTable
Signature table.
AssociativeSet< PatternEntry > patternTable
Pattern table.
Pattern entry data type, a set of stride and counter entries.
std::vector< PatternStrideEntry > strideEntries
group of stides
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,...
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
virtual double calculatePrefetchConfidence(PatternEntry const &sig, PatternStrideEntry const &entry) const
Computes the prefetch confidence of the provided pattern entry.
Bitfield< 21, 20 > stride
signature_t updateSignature(signature_t sig, stride_t str) const
Generates a new signature from an existing one and a new stride.
SatCounter8 counter
Saturating counter.
Generated on Sun Jul 30 2023 01:56:57 for gem5 by doxygen 1.8.17