changeset de10174cd496 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=de10174cd496
description:
        inorder: remove events for zero-cycle resources
        if a resource has a zero cycle latency (e.g. RegFile write), then dont 
allocate an event
        for it to use

diffstat:

 src/cpu/inorder/resource.cc          |  20 ++++++++++++++++----
 src/cpu/inorder/resources/use_def.cc |   6 +++++-
 2 files changed, 21 insertions(+), 5 deletions(-)

diffs (60 lines):

diff -r 0349aeab71bf -r de10174cd496 src/cpu/inorder/resource.cc
--- a/src/cpu/inorder/resource.cc       Fri Feb 18 14:28:37 2011 -0500
+++ b/src/cpu/inorder/resource.cc       Fri Feb 18 14:29:02 2011 -0500
@@ -49,7 +49,10 @@
 
 Resource::~Resource()
 {
-    delete [] resourceEvent;
+    if (resourceEvent) {
+        delete [] resourceEvent;
+    }
+
     delete deniedReq;    
 }
 
@@ -57,8 +60,14 @@
 void
 Resource::init()
 {
-    // Set Up Resource Events to Appropriate Resource BandWidth
-    resourceEvent = new ResourceEvent[width];
+    // If the resource has a zero-cycle (no latency)
+    // function, then no reason to have events
+    // that will process them for the right tick
+    if (latency > 0) {
+        resourceEvent = new ResourceEvent[width];
+    } else {
+        resourceEvent = NULL;
+    }
 
     for (int i = 0; i < width; i++) {
         reqs[i] = new ResourceRequest(this);
@@ -73,7 +82,10 @@
     // Add available slot numbers for resource
     for (int slot_idx = 0; slot_idx < width; slot_idx++) {
         availSlots.push_back(slot_idx);
-        resourceEvent[slot_idx].init(this, slot_idx);
+
+        if (resourceEvent) {
+            resourceEvent[slot_idx].init(this, slot_idx);
+        }
     }
 }
 
diff -r 0349aeab71bf -r de10174cd496 src/cpu/inorder/resources/use_def.cc
--- a/src/cpu/inorder/resources/use_def.cc      Fri Feb 18 14:28:37 2011 -0500
+++ b/src/cpu/inorder/resources/use_def.cc      Fri Feb 18 14:29:02 2011 -0500
@@ -92,7 +92,11 @@
 UseDefUnit::init()
 {
     // Set Up Resource Events to Appropriate Resource BandWidth
-    resourceEvent = new ResourceEvent[width];
+    if (latency > 0) {
+        resourceEvent = new ResourceEvent[width];
+    } else {
+        resourceEvent = NULL;
+    }
 
     for (int i = 0; i < width; i++) {
         reqs[i] = new UseDefRequest(this);
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to