changeset 056363356d15 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=056363356d15
description:
        ruby: message buffer: drop dequeue_getDelayCycles()
        The functionality of updating and returning the delay cycles would now 
be
        performed by the dequeue() function itself.

diffstat:

 src/mem/protocol/MESI_Three_Level-L0cache.sm |   4 ++--
 src/mem/protocol/MESI_Three_Level-L1cache.sm |   4 ++--
 src/mem/protocol/MESI_Two_Level-L1cache.sm   |  10 ++++++----
 src/mem/protocol/MESI_Two_Level-L2cache.sm   |   6 +++---
 src/mem/protocol/MI_example-cache.sm         |   4 ++--
 src/mem/protocol/RubySlicc_Types.sm          |   3 +--
 src/mem/ruby/buffers/MessageBuffer.cc        |  17 ++++++-----------
 src/mem/ruby/buffers/MessageBuffer.hh        |   6 ++----
 src/mem/ruby/network/simple/PerfectSwitch.cc |   8 ++++----
 src/mem/ruby/network/simple/Throttle.cc      |   2 +-
 src/mem/slicc/ast/ExprStatementAST.py        |   4 ++--
 11 files changed, 31 insertions(+), 37 deletions(-)

diffs (221 lines):

diff -r 01df075d9f93 -r 056363356d15 
src/mem/protocol/MESI_Three_Level-L0cache.sm
--- a/src/mem/protocol/MESI_Three_Level-L0cache.sm      Fri May 23 06:07:02 
2014 -0500
+++ b/src/mem/protocol/MESI_Three_Level-L0cache.sm      Fri May 23 06:07:02 
2014 -0500
@@ -474,12 +474,12 @@
 
   action(l_popRequestQueue, "l",
          desc="Pop incoming request queue and profile the delay within this 
virtual network") {
-    profileMsgDelay(2, messgeBuffer_in.dequeue_getDelayCycles());
+    profileMsgDelay(2, messgeBuffer_in.dequeue());
   }
 
   action(o_popIncomingResponseQueue, "o",
          desc="Pop Incoming Response queue and profile the delay within this 
virtual network") {
-    profileMsgDelay(1, messgeBuffer_in.dequeue_getDelayCycles());
+    profileMsgDelay(1, messgeBuffer_in.dequeue());
   }
 
   action(s_deallocateTBE, "s", desc="Deallocate TBE") {
diff -r 01df075d9f93 -r 056363356d15 
src/mem/protocol/MESI_Three_Level-L1cache.sm
--- a/src/mem/protocol/MESI_Three_Level-L1cache.sm      Fri May 23 06:07:02 
2014 -0500
+++ b/src/mem/protocol/MESI_Three_Level-L1cache.sm      Fri May 23 06:07:02 
2014 -0500
@@ -640,12 +640,12 @@
 
   action(l_popL2RequestQueue, "l",
          desc="Pop incoming request queue and profile the delay within this 
virtual network") {
-    profileMsgDelay(2, requestNetwork_in.dequeue_getDelayCycles());
+    profileMsgDelay(2, requestNetwork_in.dequeue());
   }
 
   action(o_popL2ResponseQueue, "o",
          desc="Pop Incoming Response queue and profile the delay within this 
virtual network") {
-    profileMsgDelay(1, responseNetwork_in.dequeue_getDelayCycles());
+    profileMsgDelay(1, responseNetwork_in.dequeue());
   }
 
   action(s_deallocateTBE, "s", desc="Deallocate TBE") {
diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/MESI_Two_Level-L1cache.sm
--- a/src/mem/protocol/MESI_Two_Level-L1cache.sm        Fri May 23 06:07:02 
2014 -0500
+++ b/src/mem/protocol/MESI_Two_Level-L1cache.sm        Fri May 23 06:07:02 
2014 -0500
@@ -833,12 +833,14 @@
     mandatoryQueue_in.dequeue();
   }
 
-  action(l_popRequestQueue, "l", desc="Pop incoming request queue and profile 
the delay within this virtual network") {
-    profileMsgDelay(2, requestL1Network_in.dequeue_getDelayCycles());
+  action(l_popRequestQueue, "l",
+    desc="Pop incoming request queue and profile the delay within this virtual 
network") {
+    profileMsgDelay(2, requestL1Network_in.dequeue());
   }
 
-  action(o_popIncomingResponseQueue, "o", desc="Pop Incoming Response queue 
and profile the delay within this virtual network") {
-    profileMsgDelay(1, responseL1Network_in.dequeue_getDelayCycles());
+  action(o_popIncomingResponseQueue, "o",
+    desc="Pop Incoming Response queue and profile the delay within this 
virtual network") {
+    profileMsgDelay(1, responseL1Network_in.dequeue());
   }
 
   action(s_deallocateTBE, "s", desc="Deallocate TBE") {
diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/MESI_Two_Level-L2cache.sm
--- a/src/mem/protocol/MESI_Two_Level-L2cache.sm        Fri May 23 06:07:02 
2014 -0500
+++ b/src/mem/protocol/MESI_Two_Level-L2cache.sm        Fri May 23 06:07:02 
2014 -0500
@@ -590,15 +590,15 @@
   }
 
   action(jj_popL1RequestQueue, "\j", desc="Pop incoming L1 request queue") {
-    profileMsgDelay(0, L1RequestL2Network_in.dequeue_getDelayCycles());
+    profileMsgDelay(0, L1RequestL2Network_in.dequeue());
   }
 
   action(k_popUnblockQueue, "k", desc="Pop incoming unblock queue") {
-    profileMsgDelay(0, L1unblockNetwork_in.dequeue_getDelayCycles());
+    profileMsgDelay(0, L1unblockNetwork_in.dequeue());
   }
 
   action(o_popIncomingResponseQueue, "o", desc="Pop Incoming Response queue") {
-    profileMsgDelay(1, responseL2Network_in.dequeue_getDelayCycles());
+    profileMsgDelay(1, responseL2Network_in.dequeue());
   }
 
   action(m_writeDataToCache, "m", desc="Write data from response queue to 
cache") {
diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/MI_example-cache.sm
--- a/src/mem/protocol/MI_example-cache.sm      Fri May 23 06:07:02 2014 -0500
+++ b/src/mem/protocol/MI_example-cache.sm      Fri May 23 06:07:02 2014 -0500
@@ -317,11 +317,11 @@
   }
 
   action(n_popResponseQueue, "n", desc="Pop the response queue") {
-    profileMsgDelay(1, responseNetwork_in.dequeue_getDelayCycles());
+    profileMsgDelay(1, responseNetwork_in.dequeue());
   }
 
   action(o_popForwardedRequestQueue, "o", desc="Pop the forwarded request 
queue") {
-    profileMsgDelay(2, forwardRequestNetwork_in.dequeue_getDelayCycles());
+    profileMsgDelay(2, forwardRequestNetwork_in.dequeue());
   }
 
   action(p_profileMiss, "pi", desc="Profile cache miss") {
diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/RubySlicc_Types.sm
--- a/src/mem/protocol/RubySlicc_Types.sm       Fri May 23 06:07:02 2014 -0500
+++ b/src/mem/protocol/RubySlicc_Types.sm       Fri May 23 06:07:02 2014 -0500
@@ -41,8 +41,7 @@
 
 structure(InPort, external = "yes", primitive="yes") {
   bool isReady();
-  void dequeue();
-  Cycles dequeue_getDelayCycles();
+  Cycles dequeue();
   void recycle();
   bool isEmpty();
 }
diff -r 01df075d9f93 -r 056363356d15 src/mem/ruby/buffers/MessageBuffer.cc
--- a/src/mem/ruby/buffers/MessageBuffer.cc     Fri May 23 06:07:02 2014 -0500
+++ b/src/mem/ruby/buffers/MessageBuffer.cc     Fri May 23 06:07:02 2014 -0500
@@ -220,8 +220,11 @@
 }
 
 Cycles
-MessageBuffer::dequeue_getDelayCycles()
+MessageBuffer::dequeue()
 {
+    DPRINTF(RubyQueue, "Popping\n");
+    assert(isReady());
+
     // get MsgPtr of the message about to be dequeued
     MsgPtr message = m_prio_heap.front().m_msgptr;
 
@@ -229,16 +232,6 @@
     message->updateDelayedTicks(m_receiver->clockEdge());
     Cycles delayCycles =
         m_receiver->ticksToCycles(message->getDelayedTicks());
-    dequeue();
-
-    return delayCycles;
-}
-
-void
-MessageBuffer::dequeue()
-{
-    DPRINTF(RubyQueue, "Popping\n");
-    assert(isReady());
 
     // record previous size and time so the current buffer size isn't
     // adjusted until next cycle
@@ -250,6 +243,8 @@
     pop_heap(m_prio_heap.begin(), m_prio_heap.end(),
         greater<MessageBufferNode>());
     m_prio_heap.pop_back();
+
+    return delayCycles;
 }
 
 void
diff -r 01df075d9f93 -r 056363356d15 src/mem/ruby/buffers/MessageBuffer.hh
--- a/src/mem/ruby/buffers/MessageBuffer.hh     Fri May 23 06:07:02 2014 -0500
+++ b/src/mem/ruby/buffers/MessageBuffer.hh     Fri May 23 06:07:02 2014 -0500
@@ -118,11 +118,9 @@
     void enqueue(MsgPtr message) { enqueue(message, Cycles(1)); }
     void enqueue(MsgPtr message, Cycles delta);
 
-    //! Updates the delay cycles of the message at the of the queue,
+    //! Updates the delay cycles of the message at the head of the queue,
     //! removes it from the queue and returns its total delay.
-    Cycles dequeue_getDelayCycles();
-
-    void dequeue();
+    Cycles dequeue();
 
     void recycle();
     bool isEmpty() const { return m_prio_heap.size() == 0; }
diff -r 01df075d9f93 -r 056363356d15 
src/mem/ruby/network/simple/PerfectSwitch.cc
--- a/src/mem/ruby/network/simple/PerfectSwitch.cc      Fri May 23 06:07:02 
2014 -0500
+++ b/src/mem/ruby/network/simple/PerfectSwitch.cc      Fri May 23 06:07:02 
2014 -0500
@@ -260,6 +260,10 @@
                         unmodified_msg_ptr = msg_ptr->clone();
                     }
 
+                    // Dequeue msg
+                    m_in[incoming][vnet]->dequeue();
+                    m_pending_message_count[vnet]--;
+
                     // Enqueue it - for all outgoing queues
                     for (int i=0; i<output_links.size(); i++) {
                         int outgoing = output_links[i];
@@ -284,10 +288,6 @@
 
                         m_out[outgoing][vnet]->enqueue(msg_ptr);
                     }
-
-                    // Dequeue msg
-                    m_in[incoming][vnet]->dequeue();
-                    m_pending_message_count[vnet]--;
                 }
             }
         }
diff -r 01df075d9f93 -r 056363356d15 src/mem/ruby/network/simple/Throttle.cc
--- a/src/mem/ruby/network/simple/Throttle.cc   Fri May 23 06:07:02 2014 -0500
+++ b/src/mem/ruby/network/simple/Throttle.cc   Fri May 23 06:07:02 2014 -0500
@@ -157,8 +157,8 @@
                         g_system_ptr->curCycle());
 
                 // Move the message
-                m_out[vnet]->enqueue(m_in[vnet]->peekMsgPtr(), m_link_latency);
                 m_in[vnet]->dequeue();
+                m_out[vnet]->enqueue(msg_ptr, m_link_latency);
 
                 // Count the message
                 m_msg_counts[net_msg_ptr->getMessageSize()][vnet]++;
diff -r 01df075d9f93 -r 056363356d15 src/mem/slicc/ast/ExprStatementAST.py
--- a/src/mem/slicc/ast/ExprStatementAST.py     Fri May 23 06:07:02 2014 -0500
+++ b/src/mem/slicc/ast/ExprStatementAST.py     Fri May 23 06:07:02 2014 -0500
@@ -42,8 +42,8 @@
 
         # The return type must be void
         if actual_type != self.symtab.find("void", Type):
-            self.expr.error("Non-void return must not be ignored, " + \
-                            "return type is '%s'", actual_type.ident)
+            self.expr.warning("Non-void return ignored, " + \
+                "return type is '%s'", actual_type.ident)
 
     def findResources(self, resources):
         self.expr.findResources(resources)
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to