changeset d9afb18a5008 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=d9afb18a5008
description:
ruby: numa bit fix for sparse memory
diffstat:
configs/ruby/MOESI_hammer.py | 4 +++-
configs/ruby/Ruby.py | 2 +-
src/mem/ruby/system/DirectoryMemory.cc | 4 +---
src/mem/ruby/system/DirectoryMemory.py | 4 +++-
src/mem/ruby/system/SparseMemory.cc | 7 +++++--
src/mem/ruby/system/SparseMemory.hh | 2 +-
6 files changed, 14 insertions(+), 9 deletions(-)
diffs (86 lines):
diff -r b3d642f01495 -r d9afb18a5008 configs/ruby/MOESI_hammer.py
--- a/configs/ruby/MOESI_hammer.py Sun Feb 06 22:14:19 2011 -0800
+++ b/configs/ruby/MOESI_hammer.py Sun Feb 06 22:14:19 2011 -0800
@@ -164,7 +164,9 @@
size = dir_size,
use_map = options.use_map,
map_levels = \
- options.map_levels),
+ options.map_levels,
+ numa_high_bit = \
+ options.numa_high_bit),
probeFilter = pf,
memBuffer = mem_cntrl,
probe_filter_enabled = options.pf_on,
diff -r b3d642f01495 -r d9afb18a5008 configs/ruby/Ruby.py
--- a/configs/ruby/Ruby.py Sun Feb 06 22:14:19 2011 -0800
+++ b/configs/ruby/Ruby.py Sun Feb 06 22:14:19 2011 -0800
@@ -42,7 +42,7 @@
help="'fixed'|'flexible'")
# ruby mapping options
- parser.add_option("--numa-high-bit", type="int", default=None,
+ parser.add_option("--numa-high-bit", type="int", default=0,
help="high order address bit to use for numa mapping. " \
"0 = highest bit, not specified = lowest bit")
diff -r b3d642f01495 -r d9afb18a5008 src/mem/ruby/system/DirectoryMemory.cc
--- a/src/mem/ruby/system/DirectoryMemory.cc Sun Feb 06 22:14:19 2011 -0800
+++ b/src/mem/ruby/system/DirectoryMemory.cc Sun Feb 06 22:14:19 2011 -0800
@@ -56,9 +56,7 @@
m_num_entries = m_size_bytes / RubySystem::getBlockSizeBytes();
if (m_use_map) {
- int entry_bits = floorLog2(m_num_entries);
- assert(entry_bits >= m_map_levels);
- m_sparseMemory = new SparseMemory(entry_bits, m_map_levels);
+ m_sparseMemory = new SparseMemory(m_map_levels);
} else {
m_entries = new Directory_Entry*[m_num_entries];
for (int i = 0; i < m_num_entries; i++)
diff -r b3d642f01495 -r d9afb18a5008 src/mem/ruby/system/DirectoryMemory.py
--- a/src/mem/ruby/system/DirectoryMemory.py Sun Feb 06 22:14:19 2011 -0800
+++ b/src/mem/ruby/system/DirectoryMemory.py Sun Feb 06 22:14:19 2011 -0800
@@ -38,4 +38,6 @@
size = Param.MemorySize("1GB", "capacity in bytes")
use_map = Param.Bool(False, "enable sparse memory")
map_levels = Param.Int(4, "sparse memory map levels")
- numa_high_bit = Param.Int(0, "numa high bit")
+ # the default value of the numa high bit is specified in the command line
+ # option and must be passed into the directory memory sim object
+ numa_high_bit = Param.Int("numa high bit")
diff -r b3d642f01495 -r d9afb18a5008 src/mem/ruby/system/SparseMemory.cc
--- a/src/mem/ruby/system/SparseMemory.cc Sun Feb 06 22:14:19 2011 -0800
+++ b/src/mem/ruby/system/SparseMemory.cc Sun Feb 06 22:14:19 2011 -0800
@@ -27,14 +27,17 @@
*/
#include "mem/ruby/system/SparseMemory.hh"
+#include "mem/ruby/system/System.hh"
using namespace std;
-SparseMemory::SparseMemory(int number_of_bits, int number_of_levels)
+SparseMemory::SparseMemory(int number_of_levels)
{
int even_level_bits;
int extra;
- m_total_number_of_bits = number_of_bits;
+ m_total_number_of_bits = RubySystem::getMemorySizeBits()
+ - RubySystem::getBlockSizeBits();;
+
m_number_of_levels = number_of_levels;
//
diff -r b3d642f01495 -r d9afb18a5008 src/mem/ruby/system/SparseMemory.hh
--- a/src/mem/ruby/system/SparseMemory.hh Sun Feb 06 22:14:19 2011 -0800
+++ b/src/mem/ruby/system/SparseMemory.hh Sun Feb 06 22:14:19 2011 -0800
@@ -54,7 +54,7 @@
class SparseMemory
{
public:
- SparseMemory(int number_of_bits, int number_of_levels);
+ SparseMemory(int number_of_levels);
~SparseMemory();
void printConfig(std::ostream& out) { }
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev