diff options
author | Nilay Vaish <nilay@cs.wisc.edu> | 2012-10-15 17:27:17 -0500 |
---|---|---|
committer | Nilay Vaish <nilay@cs.wisc.edu> | 2012-10-15 17:27:17 -0500 |
commit | 61434a9943236e8586d9ac772cfe3de3145abb78 (patch) | |
tree | 94e4760fbcc0a3c234752f587ba706a06089b8f9 /src/mem/ruby/system | |
parent | c14e6cfc4e84ba198ef6ec2f9cae2b3eda15813c (diff) | |
download | gem5-61434a9943236e8586d9ac772cfe3de3145abb78.tar.xz |
ruby: register multiple memory controllers
Currently the Ruby System maintains pointer to only one of the memory
controllers. But there can be multiple controllers in the system. This
patch adds a vector of memory controllers.
Diffstat (limited to 'src/mem/ruby/system')
-rw-r--r-- | src/mem/ruby/system/System.cc | 8 | ||||
-rw-r--r-- | src/mem/ruby/system/System.hh | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/mem/ruby/system/System.cc b/src/mem/ruby/system/System.cc index 6e144a703..b41f2d727 100644 --- a/src/mem/ruby/system/System.cc +++ b/src/mem/ruby/system/System.cc @@ -119,7 +119,7 @@ RubySystem::registerSparseMemory(SparseMemory* s) void RubySystem::registerMemController(MemoryControl *mc) { - m_memory_controller = mc; + m_memory_controller_vec.push_back(mc); } RubySystem::~RubySystem() @@ -365,9 +365,13 @@ RubySystem::startup() delete m_cache_recorder; m_cache_recorder = NULL; m_warmup_enabled = false; + // reset DRAM so that it's not waiting for events on the old event // queue - m_memory_controller->reset(); + for (int i = 0; i < m_memory_controller_vec.size(); ++i) { + m_memory_controller_vec[i]->reset(); + } + // Restore eventq head eventq_head = eventq->replaceHead(eventq_head); // Restore curTick and Ruby System's clock diff --git a/src/mem/ruby/system/System.hh b/src/mem/ruby/system/System.hh index e9e46fedf..245fa677e 100644 --- a/src/mem/ruby/system/System.hh +++ b/src/mem/ruby/system/System.hh @@ -152,12 +152,12 @@ class RubySystem : public ClockedObject static int m_memory_size_bits; Network* m_network_ptr; - MemoryControl *m_memory_controller; + std::vector<MemoryControl *> m_memory_controller_vec; + std::vector<AbstractController *> m_abs_cntrl_vec; public: Profiler* m_profiler_ptr; MemoryVector* m_mem_vec_ptr; - std::vector<AbstractController*> m_abs_cntrl_vec; bool m_warmup_enabled; bool m_cooldown_enabled; CacheRecorder* m_cache_recorder; |