From: Nilay Vaish Date: Mon, 11 Feb 2013 03:26:25 +0000 (-0600) Subject: ruby: replace Time with Cycles in Memory Controller X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b742081cc13f31bb5ebb10739a2e37727d80a085;p=gem5.git ruby: replace Time with Cycles in Memory Controller --- diff --git a/src/mem/ruby/system/MemoryControl.hh b/src/mem/ruby/system/MemoryControl.hh index fb77eadb2..daa5b61fc 100644 --- a/src/mem/ruby/system/MemoryControl.hh +++ b/src/mem/ruby/system/MemoryControl.hh @@ -66,7 +66,7 @@ class MemoryControl : public ClockedObject, public Consumer virtual std::string getDescription() = 0; // Called from the directory: - virtual void enqueue(const MsgPtr& message, int latency ) = 0; + virtual void enqueue(const MsgPtr& message, Cycles latency) = 0; virtual void enqueueMemRef(MemoryNode& memRef) = 0; virtual void dequeue() = 0; virtual const Message* peek() = 0; diff --git a/src/mem/ruby/system/MemoryNode.hh b/src/mem/ruby/system/MemoryNode.hh index 5bf988935..f215ab649 100644 --- a/src/mem/ruby/system/MemoryNode.hh +++ b/src/mem/ruby/system/MemoryNode.hh @@ -40,8 +40,6 @@ #include -#include "mem/protocol/MemoryRequestType.hh" -#include "mem/ruby/common/Global.hh" #include "mem/ruby/common/TypeDefines.hh" #include "mem/ruby/slicc_interface/Message.hh" @@ -49,10 +47,10 @@ class MemoryNode { public: // old constructor - MemoryNode(const Time& time, int counter, const MsgPtr& msgptr, + MemoryNode(const Cycles& time, int counter, const MsgPtr& msgptr, const physical_address_t addr, const bool is_mem_read) + : m_time(time) { - m_time = time; m_msg_counter = counter; m_msgptr = msgptr; m_addr = addr; @@ -61,11 +59,11 @@ class MemoryNode } // new constructor - MemoryNode(const Time& time, const MsgPtr& msgptr, + MemoryNode(const Cycles& time, const MsgPtr& msgptr, const physical_address_t addr, const bool is_mem_read, const bool is_dirty_wb) + : m_time(time) { - m_time = time; m_msg_counter = 0; m_msgptr = msgptr; m_addr = addr; @@ -75,7 +73,7 @@ class MemoryNode void print(std::ostream& out) const; - Time m_time; + Cycles m_time; int m_msg_counter; MsgPtr m_msgptr; physical_address_t m_addr; diff --git a/src/mem/ruby/system/RubyMemoryControl.cc b/src/mem/ruby/system/RubyMemoryControl.cc index 121551299..542835102 100644 --- a/src/mem/ruby/system/RubyMemoryControl.cc +++ b/src/mem/ruby/system/RubyMemoryControl.cc @@ -276,10 +276,9 @@ RubyMemoryControl::~RubyMemoryControl() // enqueue new request from directory void -RubyMemoryControl::enqueue(const MsgPtr& message, int latency) +RubyMemoryControl::enqueue(const MsgPtr& message, Cycles latency) { - Time current_time = g_system_ptr->getTime(); - Time arrival_time = current_time + latency; + Cycles arrival_time = g_system_ptr->getTime() + latency; const MemoryMsg* memMess = safe_cast(message.get()); physical_address_t addr = memMess->getAddress().getAddress(); MemoryRequestType type = memMess->getType(); @@ -376,14 +375,13 @@ RubyMemoryControl::printStats(ostream& out) const void RubyMemoryControl::enqueueToDirectory(MemoryNode req, Cycles latency) { - Time arrival_time = curTick() + (latency * clock); + Tick arrival_time = clockEdge(latency); Cycles ruby_arrival_time = g_system_ptr->ticksToCycles(arrival_time); req.m_time = ruby_arrival_time; m_response_queue.push_back(req); DPRINTF(RubyMemory, "Enqueueing msg %#08x %c back to directory at %15d\n", - req.m_addr, req.m_is_mem_read ? 'R':'W', - arrival_time); + req.m_addr, req.m_is_mem_read ? 'R':'W', arrival_time); // schedule the wake up m_consumer_ptr->scheduleEventAbsolute(ruby_arrival_time); diff --git a/src/mem/ruby/system/RubyMemoryControl.hh b/src/mem/ruby/system/RubyMemoryControl.hh index bd94abaa6..68ef054e3 100644 --- a/src/mem/ruby/system/RubyMemoryControl.hh +++ b/src/mem/ruby/system/RubyMemoryControl.hh @@ -72,7 +72,7 @@ class RubyMemoryControl : public MemoryControl std::string getDescription() { return m_description; }; // Called from the directory: - void enqueue(const MsgPtr& message, int latency ); + void enqueue(const MsgPtr& message, Cycles latency); void enqueueMemRef(MemoryNode& memRef); void dequeue(); const Message* peek();