changeset 1f215de12d15 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=1f215de12d15
description:
        inorder: priority for grad/squash events
        define separate priority resource pool squash and graduate events

diffstat:

 src/cpu/inorder/resource_pool.cc |  25 +++++++++++++++++--------
 src/cpu/inorder/resource_pool.hh |   7 +++++--
 2 files changed, 22 insertions(+), 10 deletions(-)

diffs (95 lines):

diff -r 10b13dcd6bb8 -r 1f215de12d15 src/cpu/inorder/resource_pool.cc
--- a/src/cpu/inorder/resource_pool.cc  Sun Jun 19 21:43:37 2011 -0400
+++ b/src/cpu/inorder/resource_pool.cc  Sun Jun 19 21:43:37 2011 -0400
@@ -331,12 +331,15 @@
         {
             DPRINTF(Resource, "Scheduling Inst-Graduated Resource Pool "
                     "Event for tick %i.\n", curTick() + delay);
+            ResPoolEventPri grad_pri = ResGrad_Pri;
             ResPoolEvent *res_pool_event = 
-                new ResPoolEvent(this,e_type,
+                new ResPoolEvent(this,
+                                 e_type,
                                  inst,
                                  inst->squashingStage,
                                  inst->seqNum,
-                                 inst->readTid());
+                                 inst->readTid(),
+                                 grad_pri);
             cpu->schedule(res_pool_event, when);
         }
         break;
@@ -345,12 +348,15 @@
         {
             DPRINTF(Resource, "Scheduling Squash Resource Pool Event for "
                     "tick %i.\n", curTick() + delay);
+            ResPoolEventPri squash_pri = ResSquash_Pri;
             ResPoolEvent *res_pool_event = 
-                new ResPoolEvent(this,e_type,
+                new ResPoolEvent(this,
+                                 e_type,
                                  inst,
                                  inst->squashingStage,
                                  inst->squashSeqNum,
-                                 inst->readTid());
+                                 inst->readTid(),
+                                 squash_pri);
             cpu->schedule(res_pool_event, when);
         }
         break;
@@ -361,7 +367,8 @@
                     "Pool Event for tick %i.\n",
                     curTick() + delay);
             ResPoolEvent *res_pool_event = 
-                new ResPoolEvent(this,e_type,
+                new ResPoolEvent(this,
+                                 e_type,
                                  inst,
                                  inst->squashingStage,
                                  inst->seqNum - 1,
@@ -375,7 +382,8 @@
             DPRINTF(Resource, "Scheduling UpdatePC Resource Pool Event "
                     "for tick %i.\n",
                     curTick() + delay);
-            ResPoolEvent *res_pool_event = new ResPoolEvent(this,e_type,
+            ResPoolEvent *res_pool_event = new ResPoolEvent(this,
+                                                            e_type,
                                                             inst,
                                                             
inst->squashingStage,
                                                             inst->seqNum,
@@ -507,8 +515,9 @@
                                          DynInstPtr _inst,
                                          int stage_num,
                                          InstSeqNum seq_num,
-                                         ThreadID _tid)
-    : Event(ResPool_Pri), resPool(_resPool),
+                                         ThreadID _tid,
+                                         ResPoolEventPri res_pri)
+    : Event(res_pri), resPool(_resPool),
       eventType(e_type), inst(_inst), seqNum(seq_num),
       stageNum(stage_num), tid(_tid)
 { }
diff -r 10b13dcd6bb8 -r 1f215de12d15 src/cpu/inorder/resource_pool.hh
--- a/src/cpu/inorder/resource_pool.hh  Sun Jun 19 21:43:37 2011 -0400
+++ b/src/cpu/inorder/resource_pool.hh  Sun Jun 19 21:43:37 2011 -0400
@@ -68,7 +68,9 @@
     };
 
     enum ResPoolEventPri {
-        ResPool_Pri =  InOrderCPU::InOrderCPU_Pri - 5
+        ResPool_Pri =  InOrderCPU::InOrderCPU_Pri - 5,
+        ResGrad_Pri,
+        ResSquash_Pri
     };
 
     class ResPoolEvent : public Event
@@ -95,7 +97,8 @@
                      DynInstPtr _inst,
                      int stage_num,
                      InstSeqNum seq_num,
-                     ThreadID _tid);
+                     ThreadID _tid,
+                     ResPoolEventPri res_pri = ResPool_Pri);
 
         /** Set Type of Event To Be Scheduled */
         void setEvent(InOrderCPU::CPUEventType e_type,
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to