gem5  v22.1.0.0
Public Types | Public Member Functions | Private Attributes | Static Private Attributes | List of all members
gem5::o3::UnifiedRenameMap Class Reference

Unified register rename map for all classes of registers. More...

#include <rename_map.hh>

Public Types

typedef SimpleRenameMap::RenameInfo RenameInfo
 

Public Member Functions

 UnifiedRenameMap ()
 Default constructor. More...
 
 ~UnifiedRenameMap ()
 Destructor. More...
 
void init (const BaseISA::RegClasses &regClasses, PhysRegFile *_regFile, UnifiedFreeList *freeList)
 Initializes rename map with given parameters. More...
 
RenameInfo rename (const RegId &arch_reg)
 Tell rename map to get a new free physical register to remap the specified architectural register. More...
 
PhysRegIdPtr lookup (const RegId &arch_reg) const
 Look up the physical register mapped to an architectural register. More...
 
void setEntry (const RegId &arch_reg, PhysRegIdPtr phys_reg)
 Update rename map with a specific mapping. More...
 
unsigned numFreeEntries () const
 Return the minimum number of free entries across all of the register classes. More...
 
unsigned numFreeEntries (RegClassType type) const
 
bool canRename (DynInstPtr inst) const
 Return whether there are enough registers to serve the request. More...
 

Private Attributes

std::array< SimpleRenameMap, CCRegClass+1 > renameMaps
 
PhysRegFileregFile
 The register file object is used only to get PhysRegIdPtr on MiscRegs, as they are stored in it. More...
 

Static Private Attributes

static PhysRegId invalidPhysRegId {}
 

Detailed Description

Unified register rename map for all classes of registers.

Wraps a set of class-specific rename maps. Methods that do not specify a register class (e.g., rename()) take register ids, while methods that do specify a register class (e.g., renameInt()) take register indices.

Definition at line 168 of file rename_map.hh.

Member Typedef Documentation

◆ RenameInfo

Definition at line 183 of file rename_map.hh.

Constructor & Destructor Documentation

◆ UnifiedRenameMap()

gem5::o3::UnifiedRenameMap::UnifiedRenameMap ( )
inline

Default constructor.

init() must be called prior to use.

Definition at line 186 of file rename_map.hh.

◆ ~UnifiedRenameMap()

gem5::o3::UnifiedRenameMap::~UnifiedRenameMap ( )
inline

Destructor.

Definition at line 189 of file rename_map.hh.

Member Function Documentation

◆ canRename()

bool gem5::o3::UnifiedRenameMap::canRename ( DynInstPtr  inst) const

Return whether there are enough registers to serve the request.

Definition at line 120 of file rename_map.cc.

References gem5::ArmISA::i, and renameMaps.

◆ init()

void gem5::o3::UnifiedRenameMap::init ( const BaseISA::RegClasses regClasses,
PhysRegFile _regFile,
UnifiedFreeList freeList 
)

Initializes rename map with given parameters.

Definition at line 110 of file rename_map.cc.

References gem5::o3::UnifiedFreeList::freeLists, gem5::ArmISA::i, regFile, and renameMaps.

◆ lookup()

PhysRegIdPtr gem5::o3::UnifiedRenameMap::lookup ( const RegId arch_reg) const
inline

Look up the physical register mapped to an architectural register.

This version takes a flattened architectural register id and calls the appropriate class-specific rename table.

Parameters
arch_regThe architectural register to look up.
Returns
The physical register it is currently mapped to.

Definition at line 225 of file rename_map.hh.

References gem5::RegId::classValue(), gem5::o3::PhysRegFile::getMiscRegId(), gem5::RegId::index(), invalidPhysRegId, gem5::InvalidRegClass, gem5::MiscRegClass, regFile, and renameMaps.

Referenced by gem5::o3::CPU::getArchReg(), gem5::o3::CPU::getWritableArchReg(), rename(), gem5::o3::Rename::renameSrcRegs(), gem5::o3::CPU::setArchReg(), and setEntry().

◆ numFreeEntries() [1/2]

unsigned gem5::o3::UnifiedRenameMap::numFreeEntries ( ) const
inline

Return the minimum number of free entries across all of the register classes.

The minimum is used so we guarantee that this number of entries is available regardless of which class of registers is requested.

Definition at line 269 of file rename_map.hh.

References renameMaps.

◆ numFreeEntries() [2/2]

unsigned gem5::o3::UnifiedRenameMap::numFreeEntries ( RegClassType  type) const
inline

Definition at line 281 of file rename_map.hh.

References renameMaps, and gem5::X86ISA::type.

◆ rename()

RenameInfo gem5::o3::UnifiedRenameMap::rename ( const RegId arch_reg)
inline

Tell rename map to get a new free physical register to remap the specified architectural register.

This version takes a RegId and reads the appropriate class-specific rename table.

Parameters
arch_regThe architectural register id to remap.
Returns
A RenameInfo pair indicating both the new and previous physical registers.

Definition at line 204 of file rename_map.hh.

References gem5::RegId::classValue(), gem5::RegId::isRenameable(), lookup(), and renameMaps.

Referenced by gem5::o3::Rename::renameDestRegs().

◆ setEntry()

void gem5::o3::UnifiedRenameMap::setEntry ( const RegId arch_reg,
PhysRegIdPtr  phys_reg 
)
inline

Update rename map with a specific mapping.

Generally used to roll back to old mappings on a squash. This version takes a flattened architectural register id and calls the appropriate class-specific rename table.

Parameters
arch_regThe architectural register to remap.
phys_regThe physical register to remap it to.

Definition at line 247 of file rename_map.hh.

References gem5::RegId::classValue(), gem5::PhysRegId::is(), gem5::RegId::isRenameable(), lookup(), and renameMaps.

Referenced by gem5::o3::Commit::commitHead(), gem5::o3::Rename::doSquash(), and gem5::o3::CPU::insertThread().

Member Data Documentation

◆ invalidPhysRegId

PhysRegId gem5::o3::UnifiedRenameMap::invalidPhysRegId {}
inlinestaticprivate

Definition at line 173 of file rename_map.hh.

Referenced by lookup().

◆ regFile

PhysRegFile* gem5::o3::UnifiedRenameMap::regFile
private

The register file object is used only to get PhysRegIdPtr on MiscRegs, as they are stored in it.

Definition at line 179 of file rename_map.hh.

Referenced by init(), and lookup().

◆ renameMaps

std::array<SimpleRenameMap, CCRegClass + 1> gem5::o3::UnifiedRenameMap::renameMaps
private

Definition at line 171 of file rename_map.hh.

Referenced by canRename(), init(), lookup(), numFreeEntries(), rename(), and setEntry().


The documentation for this class was generated from the following files:

Generated on Wed Dec 21 2022 10:24:18 for gem5 by doxygen 1.9.1