summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFaissal Sleiman <Faissal.Sleiman@arm.com>2013-10-31 13:41:13 -0500
committerFaissal Sleiman <Faissal.Sleiman@arm.com>2013-10-31 13:41:13 -0500
commit397dc784fd44860cf9f58ebf453769e5e2bd830b (patch)
treef0b648277015ecf7d5ce0f5d06f2b11379c5e225
parent15938e049267d87e4272aa863741e56eba883117 (diff)
downloadgem5-397dc784fd44860cf9f58ebf453769e5e2bd830b.tar.xz
cpu: Construct ROB with cpu params struct instead of each variable
Most other structures/stages get passed the cpu params struct.
-rw-r--r--src/cpu/o3/cpu.cc5
-rw-r--r--src/cpu/o3/rob.hh14
-rw-r--r--src/cpu/o3/rob_impl.hh15
3 files changed, 13 insertions, 21 deletions
diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc
index f379b1068..e13d7a959 100644
--- a/src/cpu/o3/cpu.cc
+++ b/src/cpu/o3/cpu.cc
@@ -230,10 +230,7 @@ FullO3CPU<Impl>::FullO3CPU(DerivO3CPUParams *params)
freeList(name() + ".freelist", &regFile),
- rob(this,
- params->numROBEntries, params->squashWidth,
- params->smtROBPolicy, params->smtROBThreshold,
- params->numThreads),
+ rob(this, params),
scoreboard(name() + ".scoreboard",
regFile.totalNumPhysRegs(), TheISA::NumMiscRegs,
diff --git a/src/cpu/o3/rob.hh b/src/cpu/o3/rob.hh
index 171781ce2..b5651de11 100644
--- a/src/cpu/o3/rob.hh
+++ b/src/cpu/o3/rob.hh
@@ -52,6 +52,8 @@
#include "base/types.hh"
#include "config/the_isa.hh"
+struct DerivO3CPUParams;
+
/**
* ROB class. The ROB is largely what drives squashing.
*/
@@ -91,16 +93,10 @@ class ROB
public:
/** ROB constructor.
- * @param _numEntries Number of entries in ROB.
- * @param _squashWidth Number of instructions that can be squashed in a
- * single cycle.
- * @param _smtROBPolicy ROB Partitioning Scheme for SMT.
- * @param _smtROBThreshold Max Resources(by %) a thread can have in the ROB.
- * @param _numThreads The number of active threads.
+ * @param _cpu The cpu object pointer.
+ * @param params The cpu params including several ROB-specific parameters.
*/
- ROB(O3CPU *_cpu, unsigned _numEntries, unsigned _squashWidth,
- std::string smtROBPolicy, unsigned _smtROBThreshold,
- ThreadID _numThreads);
+ ROB(O3CPU *_cpu, DerivO3CPUParams *params);
std::string name() const;
diff --git a/src/cpu/o3/rob_impl.hh b/src/cpu/o3/rob_impl.hh
index c8ceb2909..c047981a7 100644
--- a/src/cpu/o3/rob_impl.hh
+++ b/src/cpu/o3/rob_impl.hh
@@ -49,20 +49,19 @@
#include "cpu/o3/rob.hh"
#include "debug/Fetch.hh"
#include "debug/ROB.hh"
+#include "params/DerivO3CPU.hh"
using namespace std;
template <class Impl>
-ROB<Impl>::ROB(O3CPU *_cpu, unsigned _numEntries, unsigned _squashWidth,
- std::string _smtROBPolicy, unsigned _smtROBThreshold,
- ThreadID _numThreads)
+ROB<Impl>::ROB(O3CPU *_cpu, DerivO3CPUParams *params)
: cpu(_cpu),
- numEntries(_numEntries),
- squashWidth(_squashWidth),
+ numEntries(params->numROBEntries),
+ squashWidth(params->squashWidth),
numInstsInROB(0),
- numThreads(_numThreads)
+ numThreads(params->numThreads)
{
- std::string policy = _smtROBPolicy;
+ std::string policy = params->smtROBPolicy;
//Convert string to lowercase
std::transform(policy.begin(), policy.end(), policy.begin(),
@@ -93,7 +92,7 @@ ROB<Impl>::ROB(O3CPU *_cpu, unsigned _numEntries, unsigned _squashWidth,
robPolicy = Threshold;
DPRINTF(Fetch, "ROB sharing policy set to Threshold\n");
- int threshold = _smtROBThreshold;;
+ int threshold = params->smtROBThreshold;;
//Divide up by threshold amount
for (ThreadID tid = 0; tid < numThreads; tid++) {