summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Power ext:(%2C%20Joel%20Hestness%20%3Chestness%40cs.wisc.edu%3E) <power.jg@gmail.com>2012-10-27 16:01:09 -0500
committerJason Power ext:(%2C%20Joel%20Hestness%20%3Chestness%40cs.wisc.edu%3E) <power.jg@gmail.com>2012-10-27 16:01:09 -0500
commit931ec6b7ccac5978c13c1ec9283d23f51085ddab (patch)
treecdb4311e4edb1cee40e4d76d56123dde5b4b9e3e
parenta4d8996fd9224212ab042fd15316ba451201a11f (diff)
downloadgem5-931ec6b7ccac5978c13c1ec9283d23f51085ddab.tar.xz
Ruby: Use block size in configuring directory bits in address
This patch replaces hard coded values used in Ruby's configuration files for setting directory bits with values based on the block size in use.
-rw-r--r--configs/ruby/MOESI_hammer.py8
-rw-r--r--configs/ruby/Ruby.py12
2 files changed, 10 insertions, 10 deletions
diff --git a/configs/ruby/MOESI_hammer.py b/configs/ruby/MOESI_hammer.py
index 434f5c8db..d0f38d922 100644
--- a/configs/ruby/MOESI_hammer.py
+++ b/configs/ruby/MOESI_hammer.py
@@ -145,18 +145,18 @@ def create_system(options, system, piobus, dma_ports, ruby_system):
dir_bits = int(math.log(options.num_dirs, 2))
pf_bits = int(math.log(pf_size.value, 2))
if options.numa_high_bit:
- if options.numa_high_bit > 0:
+ if options.pf_on or options.dir_on:
# if numa high bit explicitly set, make sure it does not overlap
# with the probe filter index
assert(options.numa_high_bit - dir_bits > pf_bits)
# set the probe filter start bit to just above the block offset
- pf_start_bit = 6
+ pf_start_bit = block_size_bits
else:
if dir_bits > 0:
- pf_start_bit = dir_bits + 5
+ pf_start_bit = dir_bits + block_size_bits - 1
else:
- pf_start_bit = 6
+ pf_start_bit = block_size_bits
for i in xrange(options.num_dirs):
#
diff --git a/configs/ruby/Ruby.py b/configs/ruby/Ruby.py
index bcb939165..40ee63195 100644
--- a/configs/ruby/Ruby.py
+++ b/configs/ruby/Ruby.py
@@ -173,16 +173,16 @@ def create_system(options, system, piobus = None, dma_ports = []):
total_mem_size = MemorySize('0B')
dir_bits = int(math.log(options.num_dirs, 2))
+ ruby.block_size_bytes = options.cacheline_size
+ block_size_bits = int(math.log(options.cacheline_size, 2))
if options.numa_high_bit:
numa_bit = options.numa_high_bit
else:
- # if not specified, use the lowest bits above the block offest
- if dir_bits > 0:
- # add 5 because bits 0-5 are the block offset
- numa_bit = dir_bits + 5
- else:
- numa_bit = 6
+ # if the numa_bit is not specified, set the directory bits as the
+ # lowest bits above the block offset bits, and the numa_bit as the
+ # highest of those directory bits
+ numa_bit = block_size_bits + dir_bits - 1
for dir_cntrl in dir_cntrls:
total_mem_size.value += dir_cntrl.directory.size.value