|
gem5 [DEVELOP-FOR-25.0]
|
A tagged entry is an entry containing a tag. More...
#include <tagged_entry.hh>
Public Types | |
| using | KeyType = TaggedTypes::KeyType |
| using | IndexingPolicy = TaggedIndexingPolicy |
| using | TagExtractor = std::function<Addr(Addr)> |
Public Member Functions | |
| TaggedEntry () | |
| ~TaggedEntry ()=default | |
| void | registerTagExtractor (TagExtractor ext) |
| virtual bool | isValid () const |
| Checks if the entry is valid. | |
| bool | isSecure () const |
| Check if this block holds data from the secure memory space. | |
| virtual Addr | getTag () const |
| Get tag associated to this block. | |
| bool | match (const KeyType &key) const |
| Checks if the given tag information corresponds to this entry's. | |
| virtual void | insert (const KeyType &key) |
| Insert the block by assigning it a tag and marking it valid. | |
| virtual void | invalidate () |
| Invalidate the block. | |
| std::string | print () const override |
| Prints relevant information about this entry. | |
Public Member Functions inherited from gem5::ReplaceableEntry | |
| ReplaceableEntry () | |
| virtual | ~ReplaceableEntry ()=default |
| virtual void | setPosition (const uint32_t set, const uint32_t way) |
| Set both the set and way. | |
| uint32_t | getSet () const |
| Get set number. | |
| uint32_t | getWay () const |
| Get way number. | |
Protected Member Functions | |
| virtual void | setTag (Addr tag) |
| Set tag associated to this block. | |
| virtual void | setSecure () |
| Set secure bit. | |
| void | clearSecure () |
| Clear secure bit. | |
| virtual void | setValid () |
| Set valid bit. | |
Protected Attributes | |
| TagExtractor | extractTag |
| Callback used to extract the tag from the entry. | |
Protected Attributes inherited from gem5::ReplaceableEntry | |
| uint32_t | _set |
| Set to which this entry belongs. | |
| uint32_t | _way |
| Way (relative position within the set) to which this entry belongs. | |
Private Attributes | |
| bool | _valid |
| Valid bit. | |
| bool | _secure |
| Secure bit. | |
| Addr | _tag |
| The entry's tag. | |
Additional Inherited Members | |
Public Attributes inherited from gem5::ReplaceableEntry | |
| std::shared_ptr< replacement_policy::ReplacementData > | replacementData |
| Replacement data associated to this entry. | |
A tagged entry is an entry containing a tag.
Each tag is accompanied by a secure bit, which informs whether it belongs to a secure address space. A tagged entry's contents are only relevant if it is marked as valid.
Definition at line 110 of file tagged_entry.hh.
Definition at line 114 of file tagged_entry.hh.
Definition at line 113 of file tagged_entry.hh.
| using gem5::TaggedEntry::TagExtractor = std::function<Addr(Addr)> |
Definition at line 115 of file tagged_entry.hh.
|
inline |
Definition at line 117 of file tagged_entry.hh.
References _secure, _tag, _valid, and gem5::MaxAddr.
Referenced by gem5::prefetch::AccessMapPatternMatching::AccessMapEntry::AccessMapEntry(), gem5::prefetch::STeMS::ActiveGenerationTableEntry::ActiveGenerationTableEntry(), gem5::prefetch::IrregularStreamBuffer::AddressMappingEntry::AddressMappingEntry(), gem5::CacheBlk::CacheBlk(), gem5::prefetch::SignaturePathV2::GlobalHistoryEntry::GlobalHistoryEntry(), gem5::prefetch::PIF::IndexEntry::IndexEntry(), gem5::prefetch::IndirectMemory::IndirectPatternDetectorEntry::IndirectPatternDetectorEntry(), gem5::prefetch::SignaturePath::PatternEntry::PatternEntry(), gem5::prefetch::IndirectMemory::PrefetchTableEntry::PrefetchTableEntry(), gem5::SectorBlk::SectorBlk(), gem5::prefetch::SignaturePath::SignatureEntry::SignatureEntry(), gem5::prefetch::Stride::StrideEntry::StrideEntry(), and gem5::prefetch::IrregularStreamBuffer::TrainingUnitEntry::TrainingUnitEntry().
|
default |
|
inlineprotected |
Clear secure bit.
Should be only used by the invalidation function.
Definition at line 206 of file tagged_entry.hh.
References _secure.
Referenced by invalidate().
|
inlinevirtual |
Get tag associated to this block.
Reimplemented in gem5::SectorSubBlk.
Definition at line 147 of file tagged_entry.hh.
References _tag.
Referenced by gem5::FALRU::findBlock(), gem5::SectorSubBlk::getTag(), gem5::FALRU::insertBlock(), gem5::FALRU::invalidate(), match(), print(), gem5::BaseSetAssoc::regenerateBlkAddr(), gem5::FALRU::regenerateBlkAddr(), gem5::SectorTags::regenerateBlkAddr(), and gem5::prefetch::IndirectMemory::trackMissIndex2().
|
inlinevirtual |
Insert the block by assigning it a tag and marking it valid.
Touches block if it hadn't been touched previously.
| tag | The tag value. |
Reimplemented in gem5::CacheBlk, gem5::SectorSubBlk, and gem5::TempCacheBlk.
Definition at line 170 of file tagged_entry.hh.
References gem5::TaggedTypes::KeyType::address, extractTag, gem5::TaggedTypes::KeyType::secure, setSecure(), setTag(), and setValid().
|
inlinevirtual |
Invalidate the block.
Its contents are no longer valid.
Reimplemented in gem5::CacheBlk, gem5::CompressionBlk, gem5::prefetch::AccessMapPatternMatching::AccessMapEntry, gem5::prefetch::IndirectMemory::IndirectPatternDetectorEntry, gem5::prefetch::IndirectMemory::PrefetchTableEntry, gem5::prefetch::IrregularStreamBuffer::AddressMappingEntry, gem5::prefetch::SignaturePath::PatternEntry, gem5::prefetch::STeMS::ActiveGenerationTableEntry, gem5::prefetch::Stride::StrideEntry, gem5::SectorSubBlk, gem5::SuperBlk, and gem5::TempCacheBlk.
Definition at line 180 of file tagged_entry.hh.
References _valid, clearSecure(), gem5::MaxAddr, and setTag().
Referenced by gem5::CacheBlk::invalidate(), gem5::prefetch::AccessMapPatternMatching::AccessMapEntry::invalidate(), gem5::prefetch::IndirectMemory::IndirectPatternDetectorEntry::invalidate(), gem5::prefetch::IndirectMemory::PrefetchTableEntry::invalidate(), gem5::prefetch::IrregularStreamBuffer::AddressMappingEntry::invalidate(), gem5::prefetch::SignaturePath::PatternEntry::invalidate(), gem5::prefetch::STeMS::ActiveGenerationTableEntry::invalidate(), gem5::prefetch::Stride::StrideEntry::invalidate(), gem5::SuperBlk::invalidate(), and gem5::SectorBlk::invalidateSubBlk().
|
inline |
Check if this block holds data from the secure memory space.
Definition at line 140 of file tagged_entry.hh.
References _secure.
Referenced by gem5::Cache::cleanEvictBlk(), gem5::BaseCache::cmpAndSwap(), gem5::FALRU::findBlock(), gem5::BaseCache::handleFill(), gem5::FALRU::insertBlock(), gem5::FALRU::invalidate(), gem5::SectorTags::regenerateBlkAddr(), gem5::BaseCache::satisfyRequest(), gem5::BaseCache::updateBlockData(), gem5::BaseCache::updateCompressionData(), gem5::BaseCache::writebackBlk(), gem5::BaseCache::writebackVisitor(), and gem5::BaseCache::writecleanBlk().
|
inlinevirtual |
Checks if the entry is valid.
Reimplemented in gem5::SectorBlk.
Definition at line 133 of file tagged_entry.hh.
References _valid.
Referenced by gem5::BaseCache::access(), gem5::Cache::access(), gem5::NoncoherentCache::access(), gem5::FALRU::accessBlock(), gem5::Cache::cleanEvictBlk(), gem5::BaseTags::cleanupRefsVisitor(), gem5::BaseTags::computeStatsVisitor(), gem5::Cache::createMissPacket(), gem5::NoncoherentCache::createMissPacket(), gem5::FALRU::findBlock(), gem5::CompressedTags::findVictim(), gem5::SectorTags::findVictim(), gem5::BaseCache::functionalAccess(), gem5::SectorSubBlk::getTag(), gem5::Cache::handleAtomicReqMiss(), gem5::BaseCache::handleFill(), gem5::Cache::handleSnoop(), gem5::BaseCache::handleTimingReqMiss(), gem5::Cache::handleTimingReqMiss(), gem5::NoncoherentCache::handleTimingReqMiss(), gem5::CacheBlk::insert(), gem5::BaseTags::insertBlock(), gem5::BaseTags::invalidate(), gem5::BaseCache::invalidateBlock(), gem5::BaseCache::invalidateVisitor(), gem5::CacheBlk::isSet(), gem5::BaseCache::maintainClusivity(), match(), gem5::BaseTags::moveBlock(), gem5::SectorTags::moveBlock(), gem5::CacheBlk::operator=(), gem5::CacheBlk::print(), print(), gem5::FALRU::CacheTracking::recordAccess(), gem5::BaseCache::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::BaseCache::satisfyRequest(), gem5::Cache::serviceMSHRTargets(), gem5::CacheBlk::setCoherenceBits(), setValid(), gem5::BaseCache::writebackBlk(), and gem5::BaseCache::writebackVisitor().
|
inline |
Checks if the given tag information corresponds to this entry's.
| tag | The tag value to compare to. |
| is_secure | Whether secure bit is set. |
Definition at line 157 of file tagged_entry.hh.
References gem5::TaggedTypes::KeyType::address, extractTag, getTag(), gem5::ArmISA::isSecure(), isValid(), and gem5::TaggedTypes::KeyType::secure.
Referenced by gem5::BaseTags::findBlock(), gem5::CompressedTags::findVictim(), and gem5::SectorTags::findVictim().
|
inlineoverridevirtual |
Prints relevant information about this entry.
Reimplemented from gem5::ReplaceableEntry.
Definition at line 188 of file tagged_entry.hh.
References gem5::csprintf(), getTag(), gem5::ArmISA::isSecure(), isValid(), and gem5::ReplaceableEntry::print().
Referenced by gem5::CacheBlk::print(), and gem5::SectorBlk::print().
|
inline |
Definition at line 123 of file tagged_entry.hh.
References gem5::ArmISA::ext, and extractTag.
Referenced by gem5::prefetch::AccessMapPatternMatching::AccessMapEntry::AccessMapEntry(), gem5::prefetch::STeMS::ActiveGenerationTableEntry::ActiveGenerationTableEntry(), gem5::prefetch::IrregularStreamBuffer::AddressMappingEntry::AddressMappingEntry(), gem5::prefetch::SignaturePathV2::GlobalHistoryEntry::GlobalHistoryEntry(), gem5::prefetch::PIF::IndexEntry::IndexEntry(), gem5::prefetch::IndirectMemory::IndirectPatternDetectorEntry::IndirectPatternDetectorEntry(), gem5::prefetch::SignaturePath::PatternEntry::PatternEntry(), gem5::prefetch::IndirectMemory::PrefetchTableEntry::PrefetchTableEntry(), gem5::prefetch::SignaturePath::SignatureEntry::SignatureEntry(), gem5::prefetch::Stride::StrideEntry::StrideEntry(), gem5::BaseSetAssoc::tagsInit(), gem5::TempCacheBlk::TempCacheBlk(), and gem5::prefetch::IrregularStreamBuffer::TrainingUnitEntry::TrainingUnitEntry().
|
inlineprotectedvirtual |
Set secure bit.
Definition at line 203 of file tagged_entry.hh.
References _secure.
Referenced by insert().
|
inlineprotectedvirtual |
Set tag associated to this block.
| tag | The tag value. |
Definition at line 200 of file tagged_entry.hh.
References _tag.
Referenced by insert(), and invalidate().
|
inlineprotectedvirtual |
Set valid bit.
The block must be invalid beforehand.
Reimplemented in gem5::SectorSubBlk.
Definition at line 210 of file tagged_entry.hh.
References _valid, and isValid().
Referenced by insert(), and gem5::SectorSubBlk::setValid().
|
private |
Secure bit.
Marks whether this entry refers to an address in the secure memory space. Must always be modified along with the tag.
Definition at line 231 of file tagged_entry.hh.
Referenced by clearSecure(), isSecure(), setSecure(), and TaggedEntry().
|
private |
The entry's tag.
Definition at line 234 of file tagged_entry.hh.
Referenced by getTag(), setTag(), and TaggedEntry().
|
private |
Valid bit.
The contents of this entry are only valid if this bit is set.
Definition at line 225 of file tagged_entry.hh.
Referenced by invalidate(), isValid(), setValid(), and TaggedEntry().
|
protected |
Callback used to extract the tag from the entry.
Definition at line 217 of file tagged_entry.hh.
Referenced by insert(), match(), and registerTagExtractor().