From: Faissal Sleiman Date: Thu, 31 Oct 2013 18:41:13 +0000 (-0500) Subject: cpu: Construct ROB with cpu params struct instead of each variable X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=397dc784fd44860cf9f58ebf453769e5e2bd830b;p=gem5.git cpu: Construct ROB with cpu params struct instead of each variable Most other structures/stages get passed the cpu params struct. --- 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::FullO3CPU(DerivO3CPUParams *params) freeList(name() + ".freelist", ®File), - 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 -ROB::ROB(O3CPU *_cpu, unsigned _numEntries, unsigned _squashWidth, - std::string _smtROBPolicy, unsigned _smtROBThreshold, - ThreadID _numThreads) +ROB::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::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++) {