changeset ae88ecf37145 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=ae88ecf37145
description:
        Ruby: Remove RubyEventQueue
        This patch removes RubyEventQueue. Consumer objects now rely on 
RubySystem
        or themselves for scheduling events.

diffstat:

 src/cpu/testers/directedtest/RubyDirectedTester.cc                |   1 -
 src/cpu/testers/rubytest/Check.cc                                 |   4 +-
 src/cpu/testers/rubytest/RubyTester.cc                            |   5 +-
 src/mem/ruby/buffers/MessageBuffer.cc                             |  53 ++--
 src/mem/ruby/buffers/MessageBuffer.hh                             |   3 +-
 src/mem/ruby/common/Consumer.cc                                   |  63 ++++++
 src/mem/ruby/common/Consumer.hh                                   |  55 +++--
 src/mem/ruby/common/Global.cc                                     |   2 -
 src/mem/ruby/common/Global.hh                                     |   3 -
 src/mem/ruby/common/SConscript                                    |   1 +
 src/mem/ruby/common/TypeDefines.hh                                |   2 -
 src/mem/ruby/eventqueue/RubyEventQueue.cc                         |  68 -------
 src/mem/ruby/eventqueue/RubyEventQueue.hh                         |  96 
----------
 src/mem/ruby/eventqueue/RubyEventQueueNode.cc                     |  41 ----
 src/mem/ruby/eventqueue/RubyEventQueueNode.hh                     |  69 -------
 src/mem/ruby/eventqueue/SConscript                                |  37 ---
 src/mem/ruby/network/garnet/BaseGarnetNetwork.cc                  |   2 +-
 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc     |   4 +-
 src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc         |   2 +-
 src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh         |   2 +-
 src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc  |  26 +-
 src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc       |   4 +-
 src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc        |   4 +-
 src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc        |   2 +-
 src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh        |   6 +-
 src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc            |   6 +-
 src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc       |   4 +-
 src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc            |   6 +-
 src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc       |   2 +-
 src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc    |   8 +-
 src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh    |   2 +-
 src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc        |   4 +-
 src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc              |   6 +-
 src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh              |   6 +-
 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc    |   4 +-
 src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc |  30 +-
 src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc      |   4 +-
 src/mem/ruby/network/garnet/flexible-pipeline/Router.cc           |  55 ++--
 src/mem/ruby/network/garnet/flexible-pipeline/flit.cc             |   4 +-
 src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc       |   4 +-
 src/mem/ruby/network/orion/NetworkPower.cc                        |   4 +-
 src/mem/ruby/network/simple/PerfectSwitch.cc                      |   2 +-
 src/mem/ruby/network/simple/Throttle.cc                           |   8 +-
 src/mem/ruby/profiler/Profiler.cc                                 |  26 +-
 src/mem/ruby/profiler/Profiler.hh                                 |  19 +-
 src/mem/ruby/profiler/StoreTrace.cc                               |   6 +-
 src/mem/ruby/profiler/StoreTrace.hh                               |   1 -
 src/mem/ruby/slicc_interface/Message.hh                           |   6 +-
 src/mem/ruby/slicc_interface/RubySlicc_Util.hh                    |   2 +-
 src/mem/ruby/system/CacheMemory.cc                                |  13 +-
 src/mem/ruby/system/CacheMemory.hh                                |   2 -
 src/mem/ruby/system/RubyMemoryControl.cc                          |  12 +-
 src/mem/ruby/system/RubyPort.cc                                   |   4 +-
 src/mem/ruby/system/Sequencer.cc                                  |  22 +-
 src/mem/ruby/system/Sequencer.hh                                  |   8 +-
 src/mem/ruby/system/System.cc                                     |   7 +-
 src/mem/ruby/system/System.hh                                     |  14 +-
 src/mem/ruby/system/TimerTable.cc                                 |   8 +-
 src/mem/ruby/system/TimerTable.hh                                 |   5 +-
 src/mem/ruby/system/WireBuffer.cc                                 |  11 +-
 src/mem/ruby/system/WireBuffer.hh                                 |   1 -
 src/mem/slicc/ast/AST.py                                          |   2 +-
 src/mem/slicc/ast/FuncCallExprAST.py                              |   4 +-
 src/mem/slicc/symbols/StateMachine.py                             |  12 +-
 src/mem/slicc/symbols/Type.py                                     |   2 +-
 65 files changed, 317 insertions(+), 584 deletions(-)

diffs (truncated from 2457 to 300 lines):

diff -r 88d422d737db -r ae88ecf37145 
src/cpu/testers/directedtest/RubyDirectedTester.cc
--- a/src/cpu/testers/directedtest/RubyDirectedTester.cc        Mon Aug 27 
01:00:54 2012 -0500
+++ b/src/cpu/testers/directedtest/RubyDirectedTester.cc        Mon Aug 27 
01:00:55 2012 -0500
@@ -42,7 +42,6 @@
 #include "cpu/testers/directedtest/DirectedGenerator.hh"
 #include "cpu/testers/directedtest/RubyDirectedTester.hh"
 #include "debug/DirectedTest.hh"
-#include "mem/ruby/eventqueue/RubyEventQueue.hh"
 #include "sim/sim_exit.hh"
 
 RubyDirectedTester::RubyDirectedTester(const Params *p)
diff -r 88d422d737db -r ae88ecf37145 src/cpu/testers/rubytest/Check.cc
--- a/src/cpu/testers/rubytest/Check.cc Mon Aug 27 01:00:54 2012 -0500
+++ b/src/cpu/testers/rubytest/Check.cc Mon Aug 27 01:00:55 2012 -0500
@@ -313,7 +313,7 @@
                       proc, address, data, byte_number,
                       (int)m_value + byte_number,
                       (int)data->getByte(byte_number), *this,
-                      g_eventQueue_ptr->getTime());
+                      g_system_ptr->getTime());
             }
         }
         DPRINTF(RubyTest, "Action/check success\n");
@@ -328,7 +328,7 @@
     } else {
         panic("Unexpected TesterStatus: %s proc: %d data: %s m_status: %s "
               "time: %d\n",
-              *this, proc, data, m_status, g_eventQueue_ptr->getTime());
+              *this, proc, data, m_status, g_system_ptr->getTime());
     }
 
     DPRINTF(RubyTest, "proc: %d, Address: 0x%x\n", proc,
diff -r 88d422d737db -r ae88ecf37145 src/cpu/testers/rubytest/RubyTester.cc
--- a/src/cpu/testers/rubytest/RubyTester.cc    Mon Aug 27 01:00:54 2012 -0500
+++ b/src/cpu/testers/rubytest/RubyTester.cc    Mon Aug 27 01:00:55 2012 -0500
@@ -45,7 +45,6 @@
 #include "debug/RubyTest.hh"
 #include "mem/ruby/common/Global.hh"
 #include "mem/ruby/common/SubBlock.hh"
-#include "mem/ruby/eventqueue/RubyEventQueue.hh"
 #include "mem/ruby/system/System.hh"
 #include "sim/sim_exit.hh"
 #include "sim/system.hh"
@@ -192,7 +191,7 @@
 RubyTester::hitCallback(NodeID proc, SubBlock* data)
 {
     // Mark that we made progress
-    m_last_progress_vector[proc] = g_eventQueue_ptr->getTime();
+    m_last_progress_vector[proc] = g_system_ptr->getTime();
 
     DPRINTF(RubyTest, "completed request for proc: %d\n", proc);
     DPRINTF(RubyTest, "addr: 0x%x, size: %d, data: ",
@@ -230,7 +229,7 @@
 RubyTester::checkForDeadlock()
 {
     int size = m_last_progress_vector.size();
-    Time current_time = g_eventQueue_ptr->getTime();
+    Time current_time = g_system_ptr->getTime();
     for (int processor = 0; processor < size; processor++) {
         if ((current_time - m_last_progress_vector[processor]) >
                 m_deadlock_threshold) {
diff -r 88d422d737db -r ae88ecf37145 src/mem/ruby/buffers/MessageBuffer.cc
--- a/src/mem/ruby/buffers/MessageBuffer.cc     Mon Aug 27 01:00:54 2012 -0500
+++ b/src/mem/ruby/buffers/MessageBuffer.cc     Mon Aug 27 01:00:55 2012 -0500
@@ -66,10 +66,10 @@
 int
 MessageBuffer::getSize()
 {
-    if (m_time_last_time_size_checked == g_eventQueue_ptr->getTime()) {
+    if (m_time_last_time_size_checked == g_system_ptr->getTime()) {
         return m_size_last_time_size_checked;
     } else {
-        m_time_last_time_size_checked = g_eventQueue_ptr->getTime();
+        m_time_last_time_size_checked = g_system_ptr->getTime();
         m_size_last_time_size_checked = m_size;
         return m_size;
     }
@@ -89,11 +89,11 @@
     // until next cycle, but enqueue operations effect the visible
     // size immediately
     int current_size = max(m_size_at_cycle_start, m_size);
-    if (m_time_last_time_pop < g_eventQueue_ptr->getTime()) {
+    if (m_time_last_time_pop < g_system_ptr->getTime()) {
         // no pops this cycle - m_size is correct
         current_size = m_size;
     } else {
-        if (m_time_last_time_enqueue < g_eventQueue_ptr->getTime()) {
+        if (m_time_last_time_enqueue < g_system_ptr->getTime()) {
             // no enqueues this cycle - m_size_at_cycle_start is correct
             current_size = m_size_at_cycle_start;
         } else {
@@ -155,9 +155,9 @@
     m_size++;
 
     // record current time incase we have a pop that also adjusts my size
-    if (m_time_last_time_enqueue < g_eventQueue_ptr->getTime()) {
+    if (m_time_last_time_enqueue < g_system_ptr->getTime()) {
         m_msgs_this_cycle = 0;  // first msg this cycle
-        m_time_last_time_enqueue = g_eventQueue_ptr->getTime();
+        m_time_last_time_enqueue = g_system_ptr->getTime();
     }
     m_msgs_this_cycle++;
 
@@ -168,7 +168,7 @@
     // Calculate the arrival time of the message, that is, the first
     // cycle the message can be dequeued.
     assert(delta>0);
-    Time current_time = g_eventQueue_ptr->getTime();
+    Time current_time = g_system_ptr->getTime();
     Time arrival_time = 0;
     if (!RubySystem::getRandomization() || (m_randomization == false)) {
         // No randomization
@@ -192,10 +192,10 @@
             panic("FIFO ordering violated: %s name: %s current time: %d "
                   "delta: %d arrival_time: %d last arrival_time: %d\n",
                   *this, m_name,
-                  current_time * g_eventQueue_ptr->getClock(),
-                  delta * g_eventQueue_ptr->getClock(),
-                  arrival_time * g_eventQueue_ptr->getClock(),
-                  m_last_arrival_time * g_eventQueue_ptr->getClock());
+                  current_time * g_system_ptr->getClock(),
+                  delta * g_system_ptr->getClock(),
+                  arrival_time * g_system_ptr->getClock(),
+                  m_last_arrival_time * g_system_ptr->getClock());
         }
     }
 
@@ -208,10 +208,10 @@
     Message* msg_ptr = message.get();
     assert(msg_ptr != NULL);
 
-    assert(g_eventQueue_ptr->getTime() >= msg_ptr->getLastEnqueueTime() &&
+    assert(g_system_ptr->getTime() >= msg_ptr->getLastEnqueueTime() &&
            "ensure we aren't dequeued early");
 
-    msg_ptr->setDelayedCycles(g_eventQueue_ptr->getTime() -
+    msg_ptr->setDelayedCycles(g_system_ptr->getTime() -
                               msg_ptr->getLastEnqueueTime() +
                               msg_ptr->getDelayedCycles());
     msg_ptr->setLastEnqueueTime(arrival_time);
@@ -223,12 +223,12 @@
         greater<MessageBufferNode>());
 
     DPRINTF(RubyQueue, "Enqueue with arrival_time %lld.\n",
-            arrival_time * g_eventQueue_ptr->getClock());
+            arrival_time * g_system_ptr->getClock());
     DPRINTF(RubyQueue, "Enqueue Message: %s.\n", (*(message.get())));
 
     // Schedule the wakeup
     if (m_consumer_ptr != NULL) {
-        g_eventQueue_ptr->scheduleEventAbsolute(m_consumer_ptr, arrival_time);
+        m_consumer_ptr->scheduleEventAbsolute(arrival_time);
         m_consumer_ptr->storeEventInfo(m_vnet_id);
     } else {
         panic("No consumer: %s name: %s\n", *this, m_name);
@@ -287,9 +287,9 @@
 
     // record previous size and time so the current buffer size isn't
     // adjusted until next cycle
-    if (m_time_last_time_pop < g_eventQueue_ptr->getTime()) {
+    if (m_time_last_time_pop < g_system_ptr->getTime()) {
         m_size_at_cycle_start = m_size;
-        m_time_last_time_pop = g_eventQueue_ptr->getTime();
+        m_time_last_time_pop = g_system_ptr->getTime();
     }
     m_size--;
 }
@@ -315,12 +315,12 @@
     MessageBufferNode node = m_prio_heap.front();
     pop_heap(m_prio_heap.begin(), m_prio_heap.end(),
         greater<MessageBufferNode>());
-    node.m_time = g_eventQueue_ptr->getTime() + m_recycle_latency;
+    node.m_time = g_system_ptr->getTime() + m_recycle_latency;
     m_prio_heap.back() = node;
     push_heap(m_prio_heap.begin(), m_prio_heap.end(),
         greater<MessageBufferNode>());
-    g_eventQueue_ptr->scheduleEventAbsolute(m_consumer_ptr,
-        g_eventQueue_ptr->getTime() + m_recycle_latency);
+    m_consumer_ptr->scheduleEventAbsolute(g_system_ptr->getTime() +
+                                          m_recycle_latency);
 }
 
 void
@@ -335,7 +335,7 @@
     //
     while(!m_stall_msg_map[addr].empty()) {
         m_msg_counter++;
-        MessageBufferNode msgNode(g_eventQueue_ptr->getTime() + 1, 
+        MessageBufferNode msgNode(g_system_ptr->getTime() + 1,
                                   m_msg_counter, 
                                   m_stall_msg_map[addr].front());
 
@@ -343,7 +343,7 @@
         push_heap(m_prio_heap.begin(), m_prio_heap.end(),
                   greater<MessageBufferNode>());
 
-        g_eventQueue_ptr->scheduleEventAbsolute(m_consumer_ptr, 
msgNode.m_time);
+        m_consumer_ptr->scheduleEventAbsolute(msgNode.m_time);
         m_stall_msg_map[addr].pop_front();
     }
     m_stall_msg_map.erase(addr);
@@ -364,7 +364,7 @@
 
         while(!(map_iter->second).empty()) {
             m_msg_counter++;
-            MessageBufferNode msgNode(g_eventQueue_ptr->getTime() + 1, 
+            MessageBufferNode msgNode(g_system_ptr->getTime() + 1,
                                       m_msg_counter, 
                                       (map_iter->second).front());
 
@@ -372,8 +372,7 @@
             push_heap(m_prio_heap.begin(), m_prio_heap.end(),
                       greater<MessageBufferNode>());
             
-            g_eventQueue_ptr->scheduleEventAbsolute(m_consumer_ptr, 
-                                                    msgNode.m_time);
+            m_consumer_ptr->scheduleEventAbsolute(msgNode.m_time);
             (map_iter->second).pop_front();
         }
     }
@@ -407,8 +406,8 @@
 
     // this function should only be called on dequeue
     // ensure the msg hasn't been enqueued
-    assert(msg_ptr->getLastEnqueueTime() <= g_eventQueue_ptr->getTime());
-    msg_ptr->setDelayedCycles(g_eventQueue_ptr->getTime() -
+    assert(msg_ptr->getLastEnqueueTime() <= g_system_ptr->getTime());
+    msg_ptr->setDelayedCycles(g_system_ptr->getTime() -
                               msg_ptr->getLastEnqueueTime() +
                               msg_ptr->getDelayedCycles());
     delay_cycles = msg_ptr->getDelayedCycles();
diff -r 88d422d737db -r ae88ecf37145 src/mem/ruby/buffers/MessageBuffer.hh
--- a/src/mem/ruby/buffers/MessageBuffer.hh     Mon Aug 27 01:00:54 2012 -0500
+++ b/src/mem/ruby/buffers/MessageBuffer.hh     Mon Aug 27 01:00:55 2012 -0500
@@ -45,7 +45,6 @@
 #include "mem/ruby/common/Address.hh"
 #include "mem/ruby/common/Consumer.hh"
 #include "mem/ruby/common/Global.hh"
-#include "mem/ruby/eventqueue/RubyEventQueue.hh"
 #include "mem/ruby/slicc_interface/Message.hh"
 
 class MessageBuffer
@@ -70,7 +69,7 @@
     isReady() const
     {
         return ((m_prio_heap.size() > 0) &&
-                (m_prio_heap.front().m_time <= g_eventQueue_ptr->getTime()));
+                (m_prio_heap.front().m_time <= g_system_ptr->getTime()));
     }
 
     void
diff -r 88d422d737db -r ae88ecf37145 src/mem/ruby/common/Consumer.cc
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/mem/ruby/common/Consumer.cc   Mon Aug 27 01:00:55 2012 -0500
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2012 Mark D. Hill and David A. Wood
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "mem/ruby/common/Consumer.hh"
+#include "mem/ruby/common/Global.hh"
+#include "mem/ruby/system/System.hh"
+
+void
+Consumer::scheduleEvent(Time timeDelta)
+{
+    scheduleEvent(g_system_ptr, timeDelta);
+}
+
+void
+Consumer::scheduleEvent(EventManager *em, Time timeDelta)
+{
+    scheduleEventAbsolute(em, timeDelta + g_system_ptr->getTime());
+}
+
+void
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to