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):
#
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