Go to the documentation of this file.
53 :
BaseTags(
p), allocAssoc(
p->assoc), blks(
p->size /
p->block_size),
54 sequentialAccess(
p->sequential_access),
55 replacementPolicy(
p->replacement_policy)
59 fatal(
"Block size must be at least 4 and a power of 2");
67 for (
unsigned blk_index = 0; blk_index <
numBlocks; blk_index++) {
95 BaseSetAssocParams::create()
98 fatal_if(!indexing_policy,
"An indexing policy is required");
#define fatal(...)
This implements a cprintf based fatal() function.
virtual void invalidate(const std::shared_ptr< ReplacementData > &replacement_data) const =0
Invalidate replacement data to set it as the next probable victim.
BaseSetAssoc(const Params *p)
Construct and initialize this tag store.
virtual std::shared_ptr< ReplacementData > instantiateEntry()=0
Instantiate a replacement data entry.
void tagsInit() override
Initialize blocks as CacheBlk instances.
void invalidate(CacheBlk *blk) override
This function updates the tags when a block is invalidated.
void setEntry(ReplaceableEntry *entry, const uint64_t index)
Associate a pointer to an entry to its physical counterpart.
uint8_t * data
Contains a copy of the data in this block for easy access.
std::shared_ptr< ReplacementData > replacementData
Replacement data associated to this entry.
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
bool isPowerOf2(const T &n)
std::vector< CacheBlk > blks
The cache blocks.
BaseReplacementPolicy * replacementPolicy
Replacement policy.
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17