summaryrefslogtreecommitdiff
path: root/src/cpu/o3/commit.hh
diff options
context:
space:
mode:
authorMitch Hayenga <mitch.hayenga@arm.com>2014-09-03 07:42:34 -0400
committerMitch Hayenga <mitch.hayenga@arm.com>2014-09-03 07:42:34 -0400
commit1716749c8cec6f9c9f10a0aeaff981be759bb4e5 (patch)
tree0e789e02e642227ae170a18782daf05666f7316a /src/cpu/o3/commit.hh
parent976f27487b57e968a326752fcf74747427733df6 (diff)
downloadgem5-1716749c8cec6f9c9f10a0aeaff981be759bb4e5.tar.xz
cpu: Fix o3 front-end pipeline interlock behavior
The o3 pipeline interlock/stall logic is incorrect. o3 unnecessicarily stalled fetch and decode due to later stages in the pipeline. In general, a stage should usually only consider if it is stalled by the adjacent, downstream stage. Forcing stalls due to later stages creates and results in bubbles in the pipeline. Additionally, o3 stalled the entire frontend (fetch, decode, rename) on a branch mispredict while the ROB is being serially walked to update the RAT (robSquashing). Only should have stalled at rename.
Diffstat (limited to 'src/cpu/o3/commit.hh')
-rw-r--r--src/cpu/o3/commit.hh11
1 files changed, 0 insertions, 11 deletions
diff --git a/src/cpu/o3/commit.hh b/src/cpu/o3/commit.hh
index ba594a2d2..473e5e51d 100644
--- a/src/cpu/o3/commit.hh
+++ b/src/cpu/o3/commit.hh
@@ -185,9 +185,6 @@ class DefaultCommit
/** Sets the pointer to the IEW stage. */
void setIEWStage(IEW *iew_stage);
- /** Skid buffer between rename and commit. */
- std::queue<DynInstPtr> skidBuffer;
-
/** The pointer to the IEW stage. Used solely to ensure that
* various events (traps, interrupts, syscalls) do not occur until
* all stores have written back.
@@ -251,11 +248,6 @@ class DefaultCommit
*/
void setNextStatus();
- /** Checks if the ROB is completed with squashing. This is for the case
- * where the ROB can take multiple cycles to complete squashing.
- */
- bool robDoneSquashing();
-
/** Returns if any of the threads have the number of ROB entries changed
* on this cycle. Used to determine if the number of free ROB entries needs
* to be sent back to previous stages.
@@ -321,9 +313,6 @@ class DefaultCommit
/** Gets instructions from rename and inserts them into the ROB. */
void getInsts();
- /** Insert all instructions from rename into skidBuffer */
- void skidInsert();
-
/** Marks completed instructions using information sent from IEW. */
void markCompletedInsts();