inorder: dyn inst initialization
remove constructors that werent being used (it just gets confusing) use initialization list for all the variables instead of relying on initVars() function
This commit is contained in:
parent
e0a021005d
commit
3e1ad73d08
|
@ -47,49 +47,45 @@ using namespace std;
|
|||
using namespace TheISA;
|
||||
using namespace ThePipeline;
|
||||
|
||||
InOrderDynInst::InOrderDynInst(TheISA::ExtMachInst machInst,
|
||||
const TheISA::PCState &instPC,
|
||||
const TheISA::PCState &_predPC,
|
||||
InstSeqNum seq_num, InOrderCPU *cpu)
|
||||
: staticInst(machInst, instPC.instAddr()), traceData(NULL), cpu(cpu)
|
||||
{
|
||||
seqNum = seq_num;
|
||||
|
||||
pc = instPC;
|
||||
predPC = _predPC;
|
||||
|
||||
initVars();
|
||||
}
|
||||
|
||||
InOrderDynInst::InOrderDynInst(InOrderCPU *cpu,
|
||||
InOrderThreadState *state,
|
||||
InstSeqNum seq_num,
|
||||
ThreadID tid,
|
||||
unsigned _asid)
|
||||
: traceData(NULL), cpu(cpu)
|
||||
: seqNum(seq_num), bdelaySeqNum(0), threadNumber(tid), asid(_asid),
|
||||
virtProcNumber(0), staticInst(NULL), traceData(NULL), cpu(cpu),
|
||||
thread(state), fault(NoFault), memData(NULL), loadData(0),
|
||||
storeData(0), effAddr(0), physEffAddr(0), memReqFlags(0),
|
||||
readyRegs(0), pc(0), predPC(0), memAddr(0), nextStage(0),
|
||||
memTime(0), splitMemData(NULL), splitMemReq(NULL), totalSize(0),
|
||||
split2ndSize(0), split2ndAddr(0), split2ndAccess(false),
|
||||
split2ndDataPtr(NULL), split2ndFlags(0), splitInst(false),
|
||||
splitFinishCnt(0), split2ndStoreDataPtr(NULL), splitInstSked(false),
|
||||
inFrontEnd(true), frontSked(NULL), backSked(NULL),
|
||||
squashingStage(0), predictTaken(false), procDelaySlotOnMispred(false),
|
||||
fetchMemReq(NULL), dataMemReq(NULL), instEffAddr(0), eaCalcDone(false),
|
||||
lqIdx(0), sqIdx(0), instListIt(NULL)
|
||||
{
|
||||
seqNum = seq_num;
|
||||
thread = state;
|
||||
threadNumber = tid;
|
||||
asid = _asid;
|
||||
initVars();
|
||||
}
|
||||
for(int i = 0; i < MaxInstSrcRegs; i++) {
|
||||
instSrc[i].integer = 0;
|
||||
instSrc[i].dbl = 0;
|
||||
_readySrcRegIdx[i] = false;
|
||||
_srcRegIdx[i] = 0;
|
||||
}
|
||||
|
||||
InOrderDynInst::InOrderDynInst(StaticInstPtr &_staticInst)
|
||||
: seqNum(0), staticInst(_staticInst), traceData(NULL)
|
||||
{
|
||||
initVars();
|
||||
}
|
||||
for(int j = 0; j < MaxInstDestRegs; j++) {
|
||||
_destRegIdx[j] = 0;
|
||||
_prevDestRegIdx[j] = 0;
|
||||
}
|
||||
|
||||
++instcount;
|
||||
DPRINTF(InOrderDynInst, "DynInst: [tid:%i] [sn:%lli] Instruction created."
|
||||
" (active insts: %i)\n", threadNumber, seqNum, instcount);
|
||||
|
||||
InOrderDynInst::InOrderDynInst()
|
||||
: seqNum(0), traceData(NULL), cpu(cpu)
|
||||
{
|
||||
initVars();
|
||||
}
|
||||
|
||||
int InOrderDynInst::instcount = 0;
|
||||
|
||||
|
||||
void
|
||||
InOrderDynInst::setMachInst(ExtMachInst machInst)
|
||||
{
|
||||
|
@ -133,7 +129,6 @@ InOrderDynInst::initVars()
|
|||
|
||||
memAddrReady = false;
|
||||
eaCalcDone = false;
|
||||
memOpDone = false;
|
||||
|
||||
predictTaken = false;
|
||||
procDelaySlotOnMispred = false;
|
||||
|
@ -164,16 +159,10 @@ InOrderDynInst::initVars()
|
|||
}
|
||||
|
||||
// Update Instruction Count for this instruction
|
||||
++instcount;
|
||||
if (instcount > 100) {
|
||||
fatal("Number of Active Instructions in CPU is too high. "
|
||||
"(Not Dereferencing Ptrs. Correctly?)\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
DPRINTF(InOrderDynInst, "DynInst: [tid:%i] [sn:%lli] Instruction created."
|
||||
" (active insts: %i)\n", threadNumber, seqNum, instcount);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -106,17 +106,6 @@ class InOrderDynInst : public FastAlloc, public RefCounted
|
|||
};
|
||||
|
||||
public:
|
||||
/** BaseDynInst constructor given a binary instruction.
|
||||
* @param inst The binary instruction.
|
||||
* @param PC The PC of the instruction.
|
||||
* @param predPC The predicted next PC.
|
||||
* @param seq_num The sequence number of the instruction.
|
||||
* @param cpu Pointer to the instruction's CPU.
|
||||
*/
|
||||
InOrderDynInst(ExtMachInst inst, const TheISA::PCState &PC,
|
||||
const TheISA::PCState &predPC, InstSeqNum seq_num,
|
||||
InOrderCPU *cpu);
|
||||
|
||||
/** BaseDynInst constructor given a binary instruction.
|
||||
* @param seq_num The sequence number of the instruction.
|
||||
* @param cpu Pointer to the instruction's CPU.
|
||||
|
@ -125,14 +114,6 @@ class InOrderDynInst : public FastAlloc, public RefCounted
|
|||
InOrderDynInst(InOrderCPU *cpu, InOrderThreadState *state,
|
||||
InstSeqNum seq_num, ThreadID tid, unsigned asid = 0);
|
||||
|
||||
/** BaseDynInst constructor given a StaticInst pointer.
|
||||
* @param _staticInst The StaticInst for this BaseDynInst.
|
||||
*/
|
||||
InOrderDynInst(StaticInstPtr &_staticInst);
|
||||
|
||||
/** Skeleton Constructor. */
|
||||
InOrderDynInst();
|
||||
|
||||
/** InOrderDynInst destructor. */
|
||||
~InOrderDynInst();
|
||||
|
||||
|
@ -219,12 +200,6 @@ class InOrderDynInst : public FastAlloc, public RefCounted
|
|||
/** The effective physical address. */
|
||||
Addr physEffAddr;
|
||||
|
||||
/** Effective virtual address for a copy source. */
|
||||
Addr copySrcEffAddr;
|
||||
|
||||
/** Effective physical address for a copy source. */
|
||||
Addr copySrcPhysEffAddr;
|
||||
|
||||
/** The memory request flags (from translation). */
|
||||
unsigned memReqFlags;
|
||||
|
||||
|
@ -254,7 +229,10 @@ class InOrderDynInst : public FastAlloc, public RefCounted
|
|||
|
||||
InstResult()
|
||||
: type(None), tick(0)
|
||||
{}
|
||||
{
|
||||
val.integer = 0;
|
||||
val.dbl = 0;
|
||||
}
|
||||
};
|
||||
|
||||
/** The source of the instruction; assumes for now that there's only one
|
||||
|
@ -273,10 +251,8 @@ class InOrderDynInst : public FastAlloc, public RefCounted
|
|||
/** Predicted next PC. */
|
||||
TheISA::PCState predPC;
|
||||
|
||||
/** Address to fetch from */
|
||||
Addr fetchAddr;
|
||||
|
||||
/** Address to get/write data from/to */
|
||||
/* Fetching address when inst. starts, Data address for load/store after fetch*/
|
||||
Addr memAddr;
|
||||
|
||||
/** Whether or not the source register is ready.
|
||||
|
@ -477,6 +453,8 @@ class InOrderDynInst : public FastAlloc, public RefCounted
|
|||
curSkedEntry++;
|
||||
|
||||
if (inFrontEnd && curSkedEntry == frontSked_end) {
|
||||
DPRINTF(InOrderDynInst, "[sn:%i] Switching to "
|
||||
"back end schedule.\n", seqNum);
|
||||
assert(backSked != NULL);
|
||||
curSkedEntry.init(backSked);
|
||||
curSkedEntry = backSked->begin();
|
||||
|
@ -485,6 +463,10 @@ class InOrderDynInst : public FastAlloc, public RefCounted
|
|||
return true;
|
||||
}
|
||||
|
||||
DPRINTF(InOrderDynInst, "[sn:%i] Next Stage: %i "
|
||||
"Next Resource: %i.\n", seqNum, curSkedEntry->stageNum,
|
||||
curSkedEntry->resNum);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -996,10 +978,6 @@ class InOrderDynInst : public FastAlloc, public RefCounted
|
|||
*/
|
||||
bool eaCalcDone;
|
||||
|
||||
public:
|
||||
/** Whether or not the memory operation is done. */
|
||||
bool memOpDone;
|
||||
|
||||
public:
|
||||
/** Load queue index. */
|
||||
int16_t lqIdx;
|
||||
|
|
Loading…
Reference in a new issue