diff options
author | Mitch Hayenga <mitch.hayenga@arm.com> | 2014-09-03 07:42:34 -0400 |
---|---|---|
committer | Mitch Hayenga <mitch.hayenga@arm.com> | 2014-09-03 07:42:34 -0400 |
commit | 1716749c8cec6f9c9f10a0aeaff981be759bb4e5 (patch) | |
tree | 0e789e02e642227ae170a18782daf05666f7316a /src/cpu/o3/iew.hh | |
parent | 976f27487b57e968a326752fcf74747427733df6 (diff) | |
download | gem5-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/iew.hh')
-rw-r--r-- | src/cpu/o3/iew.hh | 11 |
1 files changed, 0 insertions, 11 deletions
diff --git a/src/cpu/o3/iew.hh b/src/cpu/o3/iew.hh index 3b752ac99..77403b499 100644 --- a/src/cpu/o3/iew.hh +++ b/src/cpu/o3/iew.hh @@ -270,9 +270,6 @@ class DefaultIEW */ unsigned validInstsFromRename(); - /** Reads the stall signals. */ - void readStallSignals(ThreadID tid); - /** Checks if any of the stall conditions are currently true. */ bool checkStall(ThreadID tid); @@ -346,14 +343,6 @@ class DefaultIEW */ bool wroteToTimeBuffer; - /** Source of possible stalls. */ - struct Stalls { - bool commit; - }; - - /** Stages that are telling IEW to stall. */ - Stalls stalls[Impl::MaxThreads]; - /** Debug function to print instructions that are issued this cycle. */ void printAvailableInsts(); |