changeset 41c93a3c1051 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=41c93a3c1051
description:
        cpu: o3: remove member variable squashCounter
        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.

diffstat:

 src/cpu/o3/commit.hh      |   8 --------
 src/cpu/o3/commit_impl.hh |  41 +++++++++++------------------------------
 2 files changed, 11 insertions(+), 38 deletions(-)

diffs (107 lines):

diff -r 0fd6a08a7332 -r 41c93a3c1051 src/cpu/o3/commit.hh
--- a/src/cpu/o3/commit.hh      Mon Mar 09 09:39:07 2015 -0500
+++ b/src/cpu/o3/commit.hh      Mon Mar 09 09:39:07 2015 -0500
@@ -246,11 +246,6 @@
      */
     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 @@
      */
     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];
 
diff -r 0fd6a08a7332 -r 41c93a3c1051 src/cpu/o3/commit_impl.hh
--- a/src/cpu/o3/commit_impl.hh Mon Mar 09 09:39:07 2015 -0500
+++ b/src/cpu/o3/commit_impl.hh Mon Mar 09 09:39:07 2015 -0500
@@ -96,7 +96,6 @@
 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 @@
         tcSquash[tid] = false;
         squashAfterInst[tid] = NULL;
     }
-    squashCounter = 0;
     rob->takeOverFrom();
 }
 
@@ -509,32 +507,6 @@
 }
 
 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 @@
     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 @@
             }
         }
 
+        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();
 
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to