summaryrefslogtreecommitdiff
path: root/src/mem/ruby/system/RubyMemoryControl.cc
diff options
context:
space:
mode:
authorJoel Hestness <hestness@cs.wisc.edu>2012-09-05 20:51:41 -0500
committerJoel Hestness <hestness@cs.wisc.edu>2012-09-05 20:51:41 -0500
commit6924e10978c5847fa33cf33c50f5b3511bf89ee4 (patch)
tree8da38ae3e1bb57b6b97604ef143cc903b40a2814 /src/mem/ruby/system/RubyMemoryControl.cc
parent494f6a858e47db3e5352468f504e82af01b931f9 (diff)
downloadgem5-6924e10978c5847fa33cf33c50f5b3511bf89ee4.tar.xz
Ruby Memory Controller: Fix clocking
Diffstat (limited to 'src/mem/ruby/system/RubyMemoryControl.cc')
-rw-r--r--src/mem/ruby/system/RubyMemoryControl.cc15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/mem/ruby/system/RubyMemoryControl.cc b/src/mem/ruby/system/RubyMemoryControl.cc
index 230f652c2..f931e4618 100644
--- a/src/mem/ruby/system/RubyMemoryControl.cc
+++ b/src/mem/ruby/system/RubyMemoryControl.cc
@@ -149,7 +149,6 @@ operator<<(ostream& out, const RubyMemoryControl& obj)
RubyMemoryControl::RubyMemoryControl(const Params *p)
: MemoryControl(p)
{
- m_mem_bus_cycle_multiplier = p->mem_bus_cycle_multiplier;
m_banks_per_rank = p->banks_per_rank;
m_ranks_per_dimm = p->ranks_per_dimm;
m_dimms_per_channel = p->dimms_per_channel;
@@ -309,7 +308,7 @@ RubyMemoryControl::enqueueMemRef(MemoryNode& memRef)
m_input_queue.push_back(memRef);
if (!m_event.scheduled()) {
- schedule(m_event, curTick() + 1);
+ schedule(m_event, nextCycle());
}
}
@@ -377,17 +376,17 @@ RubyMemoryControl::printStats(ostream& out) const
void
RubyMemoryControl::enqueueToDirectory(MemoryNode req, int latency)
{
- Time arrival_time = g_system_ptr->getTime()
- + (latency * m_mem_bus_cycle_multiplier);
- req.m_time = arrival_time;
+ Time arrival_time = curTick() + (latency * clock);
+ Time ruby_arrival_time = arrival_time / g_system_ptr->getClock();
+ 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 * g_system_ptr->getClock());
+ arrival_time);
// schedule the wake up
- m_consumer_ptr->scheduleEventAbsolute(arrival_time);
+ m_consumer_ptr->scheduleEventAbsolute(ruby_arrival_time);
}
// getBank returns an integer that is unique for each
@@ -705,7 +704,7 @@ RubyMemoryControl::wakeup()
m_idleCount--;
if (m_idleCount > 0) {
assert(!m_event.scheduled());
- schedule(m_event, curTick() + m_mem_bus_cycle_multiplier);
+ schedule(m_event, curTick() + clock);
}
}