cpu: o3: remove member variable squashCounter
authorNilay Vaish <nilay@cs.wisc.edu>
Mon, 9 Mar 2015 14:39:07 +0000 (09:39 -0500)
committerNilay Vaish <nilay@cs.wisc.edu>
Mon, 9 Mar 2015 14:39:07 +0000 (09:39 -0500)
The variable is used in only one place and a whole new function setNextStatus()
has been defined just to compute the value of the variable.  Instead of calling
the function, the value is now computed in the loop that preceded the function
call.

src/cpu/o3/commit.hh
src/cpu/o3/commit_impl.hh

index 93c145d5b8b4f090c5e9d53b2fd54ea4d368fb66..12d04a1c2ec280d6980e6b65fdc92c8baa2a69a5 100644 (file)
@@ -246,11 +246,6 @@ class DefaultCommit
      */
     void updateStatus();
 
-    /** Sets the next status based on threads' statuses, which becomes the
-     * current status at the end of the cycle.
-     */
-    void setNextStatus();
-
     /** 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.
@@ -392,9 +387,6 @@ class DefaultCommit
      */
     bool changedROBNumEntries[Impl::MaxThreads];
 
-    /** A counter of how many threads are currently squashing. */
-    ThreadID squashCounter;
-
     /** Records if a thread has to squash this cycle due to a trap. */
     bool trapSquash[Impl::MaxThreads];
 
index bb2b1720911757f953db53ac16bc768a2f4b6b5d..403e582d3985f14770e87743826c47dda1f0a30d 100644 (file)
@@ -96,7 +96,6 @@ DefaultCommit<Impl>::TrapEvent::description() const
 template <class Impl>
 DefaultCommit<Impl>::DefaultCommit(O3CPU *_cpu, DerivO3CPUParams *params)
     : cpu(_cpu),
-      squashCounter(0),
       iewToCommitDelay(params->iewToCommitDelay),
       commitToIEWDelay(params->commitToIEWDelay),
       renameToROBDelay(params->renameToROBDelay),
@@ -460,7 +459,6 @@ DefaultCommit<Impl>::takeOverFrom()
         tcSquash[tid] = false;
         squashAfterInst[tid] = NULL;
     }
-    squashCounter = 0;
     rob->takeOverFrom();
 }
 
@@ -508,32 +506,6 @@ DefaultCommit<Impl>::updateStatus()
     _status = _nextStatus;
 }
 
-template <class Impl>
-void
-DefaultCommit<Impl>::setNextStatus()
-{
-    int squashes = 0;
-
-    list<ThreadID>::iterator threads = activeThreads->begin();
-    list<ThreadID>::iterator end = activeThreads->end();
-
-    while (threads != end) {
-        ThreadID tid = *threads++;
-
-        if (commitStatus[tid] == ROBSquashing) {
-            squashes++;
-        }
-    }
-
-    squashCounter = squashes;
-
-    // If commit is currently squashing, then it will have activity for the
-    // next cycle. Set its next status as active.
-    if (squashCounter) {
-        _nextStatus = Active;
-    }
-}
-
 template <class Impl>
 bool
 DefaultCommit<Impl>::changedROBEntries()
@@ -856,6 +828,8 @@ DefaultCommit<Impl>::commit()
     list<ThreadID>::iterator threads = activeThreads->begin();
     list<ThreadID>::iterator end = activeThreads->end();
 
+    int num_squashing_threads = 0;
+
     while (threads != end) {
         ThreadID tid = *threads++;
 
@@ -941,11 +915,18 @@ DefaultCommit<Impl>::commit()
             }
         }
 
+        if (commitStatus[tid] == ROBSquashing) {
+            num_squashing_threads++;
+        }
     }
 
-    setNextStatus();
+    // If commit is currently squashing, then it will have activity for the
+    // next cycle. Set its next status as active.
+    if (num_squashing_threads) {
+        _nextStatus = Active;
+    }
 
-    if (squashCounter != numThreads) {
+    if (num_squashing_threads != numThreads) {
         // If we're not currently squashing, then get instructions.
         getInsts();