cpu-o3: add PerThreadUnifiedThreadMap to O3 CPU (#842)

Github issue: https://github.com/gem5/gem5/issues/373

Change-Id: I1c8aba9bc5ea4e45faa6c174780904b8bd618604
This commit is contained in:
Arnabjyoti Kalita
2024-02-12 12:26:31 -05:00
committed by GitHub
parent a840dda23a
commit b826d96f40
6 changed files with 11 additions and 6 deletions

View File

@@ -254,7 +254,7 @@ Commit::setActiveThreads(std::list<ThreadID> *at_ptr)
}
void
Commit::setRenameMap(UnifiedRenameMap rm_ptr[MaxThreads])
Commit::setRenameMap(UnifiedRenameMap::PerThreadUnifiedRenameMap& rm_ptr)
{
for (ThreadID tid = 0; tid < numThreads; tid++)
renameMap[tid] = &rm_ptr[tid];

View File

@@ -167,7 +167,7 @@ class Commit
void setActiveThreads(std::list<ThreadID> *at_ptr);
/** Sets pointer to the commited state rename map. */
void setRenameMap(UnifiedRenameMap rm_ptr[MaxThreads]);
void setRenameMap(UnifiedRenameMap::PerThreadUnifiedRenameMap& rm_ptr);
/** Sets pointer to the ROB. */
void setROB(ROB *rob_ptr);

View File

@@ -110,6 +110,9 @@ class CPU : public BaseCPU
BaseMMU *mmu;
using LSQRequest = LSQ::LSQRequest;
using PerThreadUnifiedRenameMap =
UnifiedRenameMap::PerThreadUnifiedRenameMap;
/** Overall CPU status. */
Status _status;
@@ -420,10 +423,10 @@ class CPU : public BaseCPU
UnifiedFreeList freeList;
/** The rename map. */
UnifiedRenameMap renameMap[MaxThreads];
PerThreadUnifiedRenameMap renameMap;
/** The commit rename map. */
UnifiedRenameMap commitRenameMap[MaxThreads];
PerThreadUnifiedRenameMap commitRenameMap;
/** The re-order buffer. */
ROB rob;

View File

@@ -286,7 +286,7 @@ Rename::setActiveThreads(std::list<ThreadID> *at_ptr)
void
Rename::setRenameMap(UnifiedRenameMap rm_ptr[MaxThreads])
Rename::setRenameMap(UnifiedRenameMap::PerThreadUnifiedRenameMap& rm_ptr)
{
for (ThreadID tid = 0; tid < numThreads; tid++)
renameMap[tid] = &rm_ptr[tid];

View File

@@ -170,7 +170,7 @@ class Rename
void setActiveThreads(std::list<ThreadID> *at_ptr);
/** Sets pointer to rename maps (per-thread structures). */
void setRenameMap(UnifiedRenameMap rm_ptr[MaxThreads]);
void setRenameMap(UnifiedRenameMap::PerThreadUnifiedRenameMap& rm_ptr);
/** Sets pointer to the free list. */
void setFreeList(UnifiedFreeList *fl_ptr);

View File

@@ -182,6 +182,8 @@ class UnifiedRenameMap
typedef SimpleRenameMap::RenameInfo RenameInfo;
typedef std::array<UnifiedRenameMap, MaxThreads> PerThreadUnifiedRenameMap;
/** Default constructor. init() must be called prior to use. */
UnifiedRenameMap() : regFile(nullptr) {};