diff options
-rw-r--r-- | configs/ruby/Garnet_standalone.py | 2 | ||||
-rw-r--r-- | configs/ruby/MESI_Three_Level.py | 2 | ||||
-rw-r--r-- | configs/ruby/MESI_Two_Level.py | 2 | ||||
-rw-r--r-- | configs/ruby/MI_example.py | 2 | ||||
-rw-r--r-- | configs/ruby/MOESI_CMP_directory.py | 2 | ||||
-rw-r--r-- | configs/ruby/MOESI_CMP_token.py | 2 | ||||
-rw-r--r-- | configs/ruby/MOESI_hammer.py | 2 | ||||
-rw-r--r-- | configs/ruby/Ruby.py | 35 |
8 files changed, 20 insertions, 29 deletions
diff --git a/configs/ruby/Garnet_standalone.py b/configs/ruby/Garnet_standalone.py index 168f84dd4..a70780bf7 100644 --- a/configs/ruby/Garnet_standalone.py +++ b/configs/ruby/Garnet_standalone.py @@ -101,7 +101,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, l1_cntrl.forwardFromCache = MessageBuffer() mem_dir_cntrl_nodes, rom_dir_cntrl_node = create_directories( - options, system.mem_ranges, bootmem, ruby_system, system) + options, bootmem, ruby_system, system) dir_cntrl_nodes = mem_dir_cntrl_nodes[:] if rom_dir_cntrl_node is not None: dir_cntrl_nodes.append(rom_dir_cntrl_node) diff --git a/configs/ruby/MESI_Three_Level.py b/configs/ruby/MESI_Three_Level.py index 7c80e48ad..f38b7cfa6 100644 --- a/configs/ruby/MESI_Three_Level.py +++ b/configs/ruby/MESI_Three_Level.py @@ -201,7 +201,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, clk_domain = ruby_system.clk_domain, clk_divider = 3) mem_dir_cntrl_nodes, rom_dir_cntrl_node = create_directories( - options, system.mem_ranges, bootmem, ruby_system, system) + options, bootmem, ruby_system, system) dir_cntrl_nodes = mem_dir_cntrl_nodes[:] if rom_dir_cntrl_node is not None: dir_cntrl_nodes.append(rom_dir_cntrl_node) diff --git a/configs/ruby/MESI_Two_Level.py b/configs/ruby/MESI_Two_Level.py index b488b9d51..52976e6bb 100644 --- a/configs/ruby/MESI_Two_Level.py +++ b/configs/ruby/MESI_Two_Level.py @@ -175,7 +175,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, clk_divider = 3) mem_dir_cntrl_nodes, rom_dir_cntrl_node = create_directories( - options, system.mem_ranges, bootmem, ruby_system, system) + options, bootmem, ruby_system, system) dir_cntrl_nodes = mem_dir_cntrl_nodes[:] if rom_dir_cntrl_node is not None: dir_cntrl_nodes.append(rom_dir_cntrl_node) diff --git a/configs/ruby/MI_example.py b/configs/ruby/MI_example.py index c92bb2036..222d084a8 100644 --- a/configs/ruby/MI_example.py +++ b/configs/ruby/MI_example.py @@ -127,7 +127,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, clk_divider=3) mem_dir_cntrl_nodes, rom_dir_cntrl_node = create_directories( - options, system.mem_ranges, bootmem, ruby_system, system) + options, bootmem, ruby_system, system) dir_cntrl_nodes = mem_dir_cntrl_nodes[:] if rom_dir_cntrl_node is not None: dir_cntrl_nodes.append(rom_dir_cntrl_node) diff --git a/configs/ruby/MOESI_CMP_directory.py b/configs/ruby/MOESI_CMP_directory.py index 80d0bc106..3fef48b3b 100644 --- a/configs/ruby/MOESI_CMP_directory.py +++ b/configs/ruby/MOESI_CMP_directory.py @@ -167,7 +167,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, mem_dir_cntrl_nodes, rom_dir_cntrl_node = create_directories( - options, system.mem_ranges, bootmem, ruby_system, system) + options, bootmem, ruby_system, system) dir_cntrl_nodes = mem_dir_cntrl_nodes[:] if rom_dir_cntrl_node is not None: dir_cntrl_nodes.append(rom_dir_cntrl_node) diff --git a/configs/ruby/MOESI_CMP_token.py b/configs/ruby/MOESI_CMP_token.py index 25b18a0b8..94a518b2a 100644 --- a/configs/ruby/MOESI_CMP_token.py +++ b/configs/ruby/MOESI_CMP_token.py @@ -192,7 +192,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, clk_divider=3) mem_dir_cntrl_nodes, rom_dir_cntrl_node = create_directories( - options, system.mem_ranges, bootmem, ruby_system, system) + options, bootmem, ruby_system, system) dir_cntrl_nodes = mem_dir_cntrl_nodes[:] if rom_dir_cntrl_node is not None: dir_cntrl_nodes.append(rom_dir_cntrl_node) diff --git a/configs/ruby/MOESI_hammer.py b/configs/ruby/MOESI_hammer.py index a2e902df3..7c31ca201 100644 --- a/configs/ruby/MOESI_hammer.py +++ b/configs/ruby/MOESI_hammer.py @@ -174,7 +174,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, clk_divider=3) mem_dir_cntrl_nodes, rom_dir_cntrl_node = create_directories( - options, system.mem_ranges, bootmem, ruby_system, system) + options, bootmem, ruby_system, system) dir_cntrl_nodes = mem_dir_cntrl_nodes[:] if rom_dir_cntrl_node is not None: dir_cntrl_nodes.append(rom_dir_cntrl_node) diff --git a/configs/ruby/Ruby.py b/configs/ruby/Ruby.py index f1415b062..2fb174061 100644 --- a/configs/ruby/Ruby.py +++ b/configs/ruby/Ruby.py @@ -91,6 +91,14 @@ def setup_memory_controllers(system, ruby, dir_cntrls, options): mem_ctrls = [] crossbars = [] + if options.numa_high_bit: + dir_bits = int(math.log(options.num_dirs, 2)) + intlv_size = 2 ** (options.numa_high_bit - dir_bits + 1) + else: + # if the numa_bit is not specified, set the directory bits as the + # lowest bits above the block offset bits + intlv_size = options.cacheline_size + # Sets bits to be used for interleaving. Creates memory controllers # attached to a directory controller. A separate controller is created # for each address range as the abstract memory can handle only one @@ -102,15 +110,17 @@ def setup_memory_controllers(system, ruby, dir_cntrls, options): crossbars.append(crossbar) dir_cntrl.memory = crossbar.slave + dir_ranges = [] for r in system.mem_ranges: mem_ctrl = MemConfig.create_mem_ctrl( MemConfig.get(options.mem_type), r, index, options.num_dirs, - int(math.log(options.num_dirs, 2)), options.cacheline_size) + int(math.log(options.num_dirs, 2)), intlv_size) if options.access_backing_store: mem_ctrl.kvm_map=False mem_ctrls.append(mem_ctrl) + dir_ranges.append(mem_ctrl.range) if crossbar != None: mem_ctrl.port = crossbar.master @@ -118,6 +128,7 @@ def setup_memory_controllers(system, ruby, dir_cntrls, options): mem_ctrl.port = dir_cntrl.memory index += 1 + dir_cntrl.addr_ranges = dir_ranges system.mem_ctrls = mem_ctrls @@ -199,33 +210,13 @@ def create_system(options, full_system, system, piobus = None, dma_ports = [], ruby.phys_mem = SimpleMemory(range=system.mem_ranges[0], in_addr_map=False) -def create_directories(options, mem_ranges, bootmem, ruby_system, - system): +def create_directories(options, bootmem, ruby_system, system): dir_cntrl_nodes = [] - if options.numa_high_bit: - numa_bit = options.numa_high_bit - else: - # 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 - dir_bits = int(math.log(options.num_dirs, 2)) - block_size_bits = int(math.log(options.cacheline_size, 2)) - numa_bit = block_size_bits + dir_bits - 1 - for i in xrange(options.num_dirs): - dir_ranges = [] - for r in mem_ranges: - addr_range = m5.objects.AddrRange(r.start, size = r.size(), - intlvHighBit = numa_bit, - intlvBits = dir_bits, - intlvMatch = i) - dir_ranges.append(addr_range) - dir_cntrl = Directory_Controller() dir_cntrl.version = i dir_cntrl.directory = RubyDirectoryMemory() dir_cntrl.ruby_system = ruby_system - dir_cntrl.addr_ranges = dir_ranges exec("ruby_system.dir_cntrl%d = dir_cntrl" % i) dir_cntrl_nodes.append(dir_cntrl) |