ruby: Added flag to disable mem_vec allocation
authorBrad Beckmann <Brad.Beckmann@amd.com>
Mon, 22 Mar 2010 04:22:21 +0000 (21:22 -0700)
committerBrad Beckmann <Brad.Beckmann@amd.com>
Mon, 22 Mar 2010 04:22:21 +0000 (21:22 -0700)
The RubySystem flag no_mem_vec will disable Ruby from allocating it's memory
data array.

src/mem/ruby/system/DirectoryMemory.cc
src/mem/ruby/system/RubySystem.py
src/mem/ruby/system/System.cc

index 78ca1e9e44d0bf473dc44ec4e2715f6d9c88758c..2c32eacdc5ca4baf2c0e03d33b272e4c463d0a11 100644 (file)
@@ -68,10 +68,9 @@ void DirectoryMemory::init()
       m_entries = new Directory_Entry*[m_num_entries];
       for (int i=0; i < m_num_entries; i++)
           m_entries[i] = NULL;
+      m_ram = g_system_ptr->getMemoryVector();
   }
 
-  m_ram = g_system_ptr->getMemoryVector();
-
   m_num_directories++;
   m_num_directories_bits = log_int(m_num_directories);
   m_total_size_bytes += m_size_bytes;
index 36bbd81ae15866fb41feaba95a6eeb7e48e9fdec..00d02b3df47037d28a3592fd514aa26a565837e2 100644 (file)
@@ -45,3 +45,4 @@ class RubySystem(SimObject):
     tracer = Param.RubyTracer("");
     stats_filename = Param.String("ruby.stats",
         "file to which ruby dumps its stats")
+    no_mem_vec = Param.Bool(False, "do not allocate Ruby's mem vector");
index 105f6fb36a727dce9e7c46d0d5094900cde3166d..69dbf69c48d2006086cbda3986a8ce5ba53ed80e 100644 (file)
@@ -89,8 +89,12 @@ RubySystem::RubySystem(const Params *p)
 
     g_eventQueue_ptr = new RubyEventQueue(p->eventq, m_clock);
     g_system_ptr = this;
-    m_mem_vec_ptr = new MemoryVector;
-    m_mem_vec_ptr->setSize(m_memory_size_bytes);
+    if (p->no_mem_vec) {
+        m_mem_vec_ptr = NULL;
+    } else {
+        m_mem_vec_ptr = new MemoryVector;
+        m_mem_vec_ptr->setSize(m_memory_size_bytes);
+    }
 
     //
     // Print ruby configuration and stats at exit
@@ -111,7 +115,9 @@ RubySystem::~RubySystem()
   delete m_network_ptr;
   delete m_profiler_ptr;
   delete m_tracer_ptr;
-  delete m_mem_vec_ptr;
+  if (m_mem_vec_ptr != NULL) {
+      delete m_mem_vec_ptr;
+  }
 }
 
 void RubySystem::printSystemConfig(ostream & out)