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:
committed by
GitHub
parent
a840dda23a
commit
b826d96f40
@@ -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];
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user