summaryrefslogtreecommitdiff
path: root/src/cpu/o3/iew_impl.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/o3/iew_impl.hh')
-rw-r--r--src/cpu/o3/iew_impl.hh23
1 files changed, 2 insertions, 21 deletions
diff --git a/src/cpu/o3/iew_impl.hh b/src/cpu/o3/iew_impl.hh
index cf2d5be5e..0a4e147c4 100644
--- a/src/cpu/o3/iew_impl.hh
+++ b/src/cpu/o3/iew_impl.hh
@@ -104,13 +104,12 @@ DefaultIEW<Impl>::DefaultIEW(O3CPU *_cpu, DerivO3CPUParams *params)
for (ThreadID tid = 0; tid < numThreads; tid++) {
dispatchStatus[tid] = Running;
- stalls[tid].commit = false;
fetchRedirect[tid] = false;
}
updateLSQNextCycle = false;
- skidBufferMax = (3 * (renameToIEWDelay * params->renameWidth)) + issueWidth;
+ skidBufferMax = (renameToIEWDelay + 1) * params->renameWidth;
}
template <class Impl>
@@ -434,7 +433,6 @@ DefaultIEW<Impl>::takeOverFrom()
for (ThreadID tid = 0; tid < numThreads; tid++) {
dispatchStatus[tid] = Running;
- stalls[tid].commit = false;
fetchRedirect[tid] = false;
}
@@ -761,26 +759,12 @@ DefaultIEW<Impl>::resetEntries()
}
template <class Impl>
-void
-DefaultIEW<Impl>::readStallSignals(ThreadID tid)
-{
- if (fromCommit->commitBlock[tid]) {
- stalls[tid].commit = true;
- }
-
- if (fromCommit->commitUnblock[tid]) {
- assert(stalls[tid].commit);
- stalls[tid].commit = false;
- }
-}
-
-template <class Impl>
bool
DefaultIEW<Impl>::checkStall(ThreadID tid)
{
bool ret_val(false);
- if (stalls[tid].commit) {
+ if (fromCommit->commitInfo[tid].robSquashing) {
DPRINTF(IEW,"[tid:%i]: Stall from Commit stage detected.\n",tid);
ret_val = true;
} else if (instQueue.isFull(tid)) {
@@ -802,8 +786,6 @@ DefaultIEW<Impl>::checkSignalsAndUpdate(ThreadID tid)
// If status was Squashing
// check if squashing is not high. Switch to running this cycle.
- readStallSignals(tid);
-
if (fromCommit->commitInfo[tid].squash) {
squash(tid);
@@ -824,7 +806,6 @@ DefaultIEW<Impl>::checkSignalsAndUpdate(ThreadID tid)
dispatchStatus[tid] = Squashing;
emptyRenameInsts(tid);
wroteToTimeBuffer = true;
- return;
}
if (checkStall(tid)) {