From 061b369d288ba4e3fdb145c025fb4d80378cb851 Mon Sep 17 00:00:00 2001 From: Korey Sewell Date: Sun, 19 Jun 2011 21:43:35 -0400 Subject: [PATCH] inorder: cleanup intercomm. structs/squash info --- src/cpu/inorder/comm.hh | 49 +++++------------------------------------ 1 file changed, 5 insertions(+), 44 deletions(-) diff --git a/src/cpu/inorder/comm.hh b/src/cpu/inorder/comm.hh index ba9322079..b05ec4eff 100644 --- a/src/cpu/inorder/comm.hh +++ b/src/cpu/inorder/comm.hh @@ -44,62 +44,23 @@ /** Struct that defines the information passed from in between stages */ /** This information mainly goes forward through the pipeline. */ struct InterStageStruct { + //@todo: probably should make this a list since the amount of + // instructions that get passed forward per cycle is + // really dependent on issue width, CPI, etc. std::vector insts; - bool squash; - bool branchMispredict; - bool branchTaken; - uint64_t mispredPC; - uint64_t nextPC; - InstSeqNum squashedSeqNum; - bool includeSquashInst; - - InterStageStruct() - : squash(false), - branchMispredict(false), branchTaken(false), - mispredPC(0), nextPC(0), - squashedSeqNum(0), includeSquashInst(false) - { } + // Add any information that needs to be passed forward to stages + // below ... }; -/** Turn This into a Class */ /** Struct that defines all backwards communication. */ struct TimeStruct { struct stageComm { bool squash; - bool predIncorrect; - uint64_t branchAddr; - - // @todo: Might want to package this kind of branch stuff into a single - // struct as it is used pretty frequently. - bool branchMispredict; - bool branchTaken; - Addr mispredPC; - TheISA::PCState nextPC; - - unsigned branchCount; - - // Represents the instruction that has either been retired or - // squashed. Similar to having a single bus that broadcasts the - // retired or squashed sequence number. InstSeqNum doneSeqNum; - InstSeqNum bdelayDoneSeqNum; - bool squashDelaySlot; - - //Just in case we want to do a commit/squash on a cycle - //(necessary for multiple ROBs?) - bool commitInsts; - InstSeqNum squashSeqNum; - - // Communication specifically to the IQ to tell the IQ that it can - // schedule a non-speculative instruction. - InstSeqNum nonSpecSeqNum; bool uncached; ThePipeline::DynInstPtr uncachedLoad; - - bool interruptPending; - bool clearInterrupt; }; stageComm stageInfo[ThePipeline::NumStages][ThePipeline::MaxThreads]; -- 2.30.2