gem5 v24.0.0.0
|
A sector is composed of sub-blocks, and each sub-block has information regarding its sector and a pointer to its sector tag. More...
#include <sector_blk.hh>
Public Member Functions | |
SectorSubBlk () | |
SectorSubBlk (const SectorSubBlk &)=delete | |
SectorSubBlk & | operator= (const SectorSubBlk &)=delete |
SectorSubBlk (SectorSubBlk &&)=delete | |
SectorSubBlk & | operator= (SectorSubBlk &&other)=default |
Move assignment operator. | |
~SectorSubBlk ()=default | |
void | setSectorBlock (SectorBlk *sector_blk) |
Set sector block associated to this block. | |
SectorBlk * | getSectorBlock () const |
Get sector block associated to this block. | |
void | setSectorOffset (const int sector_offset) |
Set offset of this sub-block within the sector. | |
int | getSectorOffset () const |
Get offset of this sub-block within the sector. | |
Addr | getTag () const override |
Get tag associated to this block. | |
void | setValid () override |
Set valid bit and inform sector block. | |
void | insert (const Addr tag, const bool is_secure) override |
Insert the block by assigning it a tag and marking it valid. | |
void | invalidate () override |
Invalidate the block and inform sector block. | |
std::string | print () const override |
Pretty-print sector offset and other CacheBlk information. | |
CacheBlk & | operator= (const CacheBlk &)=delete |
virtual CacheBlk & | operator= (CacheBlk &&other) |
Move assignment operator. | |
Public Member Functions inherited from gem5::CacheBlk | |
CacheBlk () | |
CacheBlk (const CacheBlk &)=delete | |
CacheBlk & | operator= (const CacheBlk &)=delete |
CacheBlk (const CacheBlk &&)=delete | |
virtual | ~CacheBlk () |
void | setCoherenceBits (unsigned bits) |
Sets the corresponding coherence bits. | |
void | clearCoherenceBits (unsigned bits) |
Clear the corresponding coherence bits. | |
bool | isSet (unsigned bits) const |
Checks the given coherence bits are set. | |
bool | wasPrefetched () const |
Check if this block was the result of a hardware prefetch, yet to be touched. | |
void | clearPrefetched () |
Clear the prefetching bit. | |
void | setPrefetched () |
Marks this blocks as a recently prefetched block. | |
Tick | getWhenReady () const |
Get tick at which block's data will be available for access. | |
void | setWhenReady (const Tick tick) |
Set tick at which block's data will be available for access. | |
uint32_t | getTaskId () const |
Get the task id associated to this block. | |
uint32_t | getSrcRequestorId () const |
Get the requestor id associated to this block. | |
uint64_t | getPartitionId () const |
Getter for _partitionId. | |
unsigned | getRefCount () const |
Get the number of references to this block since insertion. | |
void | increaseRefCount () |
Get the number of references to this block since insertion. | |
Tick | getAge () const |
Get the block's age, that is, the number of ticks since its insertion. | |
void | insert (const Addr tag, const bool is_secure, const int src_requestor_ID, const uint32_t task_ID, const uint64_t partition_id) |
Set member variables when a block insertion occurs. | |
void | trackLoadLocked (PacketPtr pkt) |
Track the fact that a local locked was issued to the block. | |
void | clearLoadLocks (const RequestPtr &req) |
Clear the any load lock that intersect the request, and is from a different context. | |
bool | checkWrite (PacketPtr pkt) |
Handle interaction of load-locked operations and stores. | |
void | insert (const Addr tag) override |
Insert the block by assigning it a tag and marking it valid. | |
Public Member Functions inherited from gem5::TaggedEntry | |
TaggedEntry () | |
~TaggedEntry ()=default | |
bool | isSecure () const |
Check if this block holds data from the secure memory space. | |
virtual bool | matchTag (Addr tag, bool is_secure) const |
Checks if the given tag information corresponds to this entry's. | |
void | invalidate () override |
Invalidate the block. | |
std::string | print () const override |
Prints relevant information about this entry. | |
bool | matchTag (const Addr tag) const override |
Checks if the given tag information corresponds to this entry's. | |
void | insert (const Addr tag) override |
Insert the block by assigning it a tag and marking it valid. | |
Public Member Functions inherited from gem5::CacheEntry | |
CacheEntry ()=default | |
~CacheEntry ()=default | |
virtual bool | isValid () const |
Checks if the entry is valid. | |
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 Attributes | |
SectorBlk * | _sectorBlk |
Sector block associated to this block. | |
int | _sectorOffset |
The offset of this sub-block in the sector. | |
Protected Attributes inherited from gem5::CacheBlk | |
std::list< Lock > | lockList |
List of thread contexts that have performed a load-locked (LL) on the block since the last store. | |
unsigned | coherence |
The current coherence status of this block. | |
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. | |
Additional Inherited Members | |
Public Types inherited from gem5::CacheBlk | |
enum | CoherenceBits : unsigned { WritableBit = 0x02 , ReadableBit = 0x04 , DirtyBit = 0x08 , AllBits = 0x0E } |
Cache block's enum listing the supported coherence bits. More... | |
Public Attributes inherited from gem5::CacheBlk | |
uint8_t * | data = nullptr |
Contains a copy of the data in this block for easy access. | |
Tick | whenReady = 0 |
Which curTick() will this block be accessible. | |
Public Attributes inherited from gem5::ReplaceableEntry | |
std::shared_ptr< replacement_policy::ReplacementData > | replacementData |
Replacement data associated to this entry. | |
Protected Member Functions inherited from gem5::CacheBlk | |
void | setTaskId (const uint32_t task_id) |
Set the task id value. | |
void | setSrcRequestorId (const uint32_t id) |
Set the source requestor id. | |
void | setPartitionId (const uint64_t partitionId) |
Setter for _partitionId. | |
void | setRefCount (const unsigned count) |
Set the number of references to this block since insertion. | |
void | setTickInserted () |
Set the current tick as this block's insertion tick. | |
Protected Member Functions inherited from gem5::TaggedEntry | |
virtual void | setSecure () |
Set secure bit. | |
Protected Member Functions inherited from gem5::CacheEntry | |
virtual void | setTag (Addr _tag) |
Set tag associated to this block. | |
A sector is composed of sub-blocks, and each sub-block has information regarding its sector and a pointer to its sector tag.
Definition at line 51 of file sector_blk.hh.
|
inline |
Definition at line 65 of file sector_blk.hh.
|
delete |
|
delete |
|
default |
SectorBlk * gem5::SectorSubBlk::getSectorBlock | ( | ) | const |
Get sector block associated to this block.
Definition at line 52 of file sector_blk.cc.
References _sectorBlk.
Referenced by gem5::SectorTags::accessBlock(), gem5::CompressionBlk::checkExpansionContraction(), gem5::SectorTags::insertBlock(), gem5::SectorTags::invalidate(), gem5::SectorTags::moveBlock(), gem5::SectorTags::regenerateBlkAddr(), gem5::CompressionBlk::setSizeBits(), and gem5::BaseCache::updateCompressionData().
int gem5::SectorSubBlk::getSectorOffset | ( | ) | const |
Get offset of this sub-block within the sector.
Definition at line 64 of file sector_blk.cc.
References _sectorOffset.
Referenced by print(), and gem5::SectorTags::regenerateBlkAddr().
|
overridevirtual |
Get tag associated to this block.
Reimplemented from gem5::CacheEntry.
Definition at line 70 of file sector_blk.cc.
References _sectorBlk, gem5::CacheEntry::getTag(), gem5::CacheEntry::isValid(), and gem5::CacheEntry::tag.
|
overridevirtual |
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 from gem5::CacheBlk.
Definition at line 86 of file sector_blk.cc.
References _sectorBlk, gem5::CacheBlk::insert(), gem5::TaggedEntry::insert(), gem5::SectorBlk::isValid(), gem5::TaggedEntry::matchTag(), gem5::MaxAddr, panic_if, and gem5::CacheEntry::tag.
|
overridevirtual |
Invalidate the block and inform sector block.
Reimplemented from gem5::CacheBlk.
Definition at line 101 of file sector_blk.cc.
References _sectorBlk, gem5::CacheBlk::invalidate(), and gem5::SectorBlk::invalidateSubBlk().
Referenced by gem5::CompressionBlk::invalidate().
Move assignment operator.
This should only be used to move an existing valid entry into an invalid one, not to create a new entry. In the end the valid entry will become invalid, and the invalid, valid. All location related variables will remain the same, that is, an entry cannot move its data, just its metadata contents.
Reimplemented from gem5::CacheBlk.
Definition at line 173 of file cache_blk.hh.
|
delete |
|
default |
Move assignment operator.
This should only be used to move an existing valid entry into an invalid one, not to create a new entry. In the end the valid entry will become invalid, and the invalid, valid. All location related variables will remain the same, that is, an entry cannot change its sector block nor its offset.
|
overridevirtual |
Pretty-print sector offset and other CacheBlk information.
Reimplemented from gem5::CacheBlk.
Definition at line 108 of file sector_blk.cc.
References gem5::csprintf(), getSectorOffset(), and gem5::CacheBlk::print().
Referenced by gem5::CompressionBlk::print().
void gem5::SectorSubBlk::setSectorBlock | ( | SectorBlk * | sector_blk | ) |
Set sector block associated to this block.
sector_blk | The sector block pointer. |
Definition at line 45 of file sector_blk.cc.
References _sectorBlk.
Referenced by gem5::CompressedTags::tagsInit(), and gem5::SectorTags::tagsInit().
void gem5::SectorSubBlk::setSectorOffset | ( | const int | sector_offset | ) |
Set offset of this sub-block within the sector.
sector_offset | The block's offset. |
Definition at line 58 of file sector_blk.cc.
References _sectorOffset.
Referenced by gem5::CompressedTags::tagsInit(), and gem5::SectorTags::tagsInit().
|
overridevirtual |
Set valid bit and inform sector block.
Reimplemented from gem5::CacheEntry.
Definition at line 79 of file sector_blk.cc.
References _sectorBlk, gem5::CacheEntry::setValid(), and gem5::SectorBlk::validateSubBlk().
|
protected |
Sector block associated to this block.
Definition at line 57 of file sector_blk.hh.
Referenced by getSectorBlock(), getTag(), insert(), invalidate(), setSectorBlock(), and setValid().
|
protected |
The offset of this sub-block in the sector.
Definition at line 62 of file sector_blk.hh.
Referenced by getSectorOffset(), and setSectorOffset().