MOESI_hammer.py (11019:fc1e41e88fd3) | MOESI_hammer.py (11022:e6e3b7097810) |
---|---|
1# Copyright (c) 2006-2007 The Regents of The University of Michigan 2# Copyright (c) 2009 Advanced Micro Devices, Inc. 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions are 7# met: redistributions of source code must retain the above copyright 8# notice, this list of conditions and the following disclaimer; --- 104 unchanged lines hidden (view full) --- 113 exec("ruby_system.l1_cntrl%d = l1_cntrl" % i) 114 115 # Add controllers and sequencers to the appropriate lists 116 cpu_sequencers.append(cpu_seq) 117 l1_cntrl_nodes.append(l1_cntrl) 118 119 # Connect the L1 controller and the network 120 # Connect the buffers from the controller to network | 1# Copyright (c) 2006-2007 The Regents of The University of Michigan 2# Copyright (c) 2009 Advanced Micro Devices, Inc. 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions are 7# met: redistributions of source code must retain the above copyright 8# notice, this list of conditions and the following disclaimer; --- 104 unchanged lines hidden (view full) --- 113 exec("ruby_system.l1_cntrl%d = l1_cntrl" % i) 114 115 # Add controllers and sequencers to the appropriate lists 116 cpu_sequencers.append(cpu_seq) 117 l1_cntrl_nodes.append(l1_cntrl) 118 119 # Connect the L1 controller and the network 120 # Connect the buffers from the controller to network |
121 l1_cntrl.requestFromCache = ruby_system.network.slave 122 l1_cntrl.responseFromCache = ruby_system.network.slave 123 l1_cntrl.unblockFromCache = ruby_system.network.slave | 121 l1_cntrl.requestFromCache = MessageBuffer() 122 l1_cntrl.requestFromCache.master = ruby_system.network.slave 123 l1_cntrl.responseFromCache = MessageBuffer() 124 l1_cntrl.responseFromCache.master = ruby_system.network.slave 125 l1_cntrl.unblockFromCache = MessageBuffer() 126 l1_cntrl.unblockFromCache.master = ruby_system.network.slave |
124 | 127 |
128 l1_cntrl.triggerQueue = MessageBuffer() 129 |
|
125 # Connect the buffers from the network to the controller | 130 # Connect the buffers from the network to the controller |
126 l1_cntrl.forwardToCache = ruby_system.network.master 127 l1_cntrl.responseToCache = ruby_system.network.master | 131 l1_cntrl.mandatoryQueue = MessageBuffer() 132 l1_cntrl.forwardToCache = MessageBuffer() 133 l1_cntrl.forwardToCache.slave = ruby_system.network.master 134 l1_cntrl.responseToCache = MessageBuffer() 135 l1_cntrl.responseToCache.slave = ruby_system.network.master |
128 129 130 phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) 131 assert(phys_mem_size % options.num_dirs == 0) 132 mem_module_size = phys_mem_size / options.num_dirs 133 134 # 135 # determine size and index bits for probe filter --- 43 unchanged lines hidden (view full) --- 179 180 if options.recycle_latency: 181 dir_cntrl.recycle_latency = options.recycle_latency 182 183 exec("ruby_system.dir_cntrl%d = dir_cntrl" % i) 184 dir_cntrl_nodes.append(dir_cntrl) 185 186 # Connect the directory controller to the network | 136 137 138 phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) 139 assert(phys_mem_size % options.num_dirs == 0) 140 mem_module_size = phys_mem_size / options.num_dirs 141 142 # 143 # determine size and index bits for probe filter --- 43 unchanged lines hidden (view full) --- 187 188 if options.recycle_latency: 189 dir_cntrl.recycle_latency = options.recycle_latency 190 191 exec("ruby_system.dir_cntrl%d = dir_cntrl" % i) 192 dir_cntrl_nodes.append(dir_cntrl) 193 194 # Connect the directory controller to the network |
187 dir_cntrl.forwardFromDir = ruby_system.network.slave 188 dir_cntrl.responseFromDir = ruby_system.network.slave 189 dir_cntrl.dmaResponseFromDir = ruby_system.network.slave | 195 dir_cntrl.forwardFromDir = MessageBuffer() 196 dir_cntrl.forwardFromDir.master = ruby_system.network.slave 197 dir_cntrl.responseFromDir = MessageBuffer() 198 dir_cntrl.responseFromDir.master = ruby_system.network.slave 199 dir_cntrl.dmaResponseFromDir = MessageBuffer(ordered = True) 200 dir_cntrl.dmaResponseFromDir.master = ruby_system.network.slave |
190 | 201 |
191 dir_cntrl.unblockToDir = ruby_system.network.master 192 dir_cntrl.responseToDir = ruby_system.network.master 193 dir_cntrl.requestToDir = ruby_system.network.master 194 dir_cntrl.dmaRequestToDir = ruby_system.network.master | 202 dir_cntrl.triggerQueue = MessageBuffer(ordered = True) |
195 | 203 |
204 dir_cntrl.unblockToDir = MessageBuffer() 205 dir_cntrl.unblockToDir.slave = ruby_system.network.master 206 dir_cntrl.responseToDir = MessageBuffer() 207 dir_cntrl.responseToDir.slave = ruby_system.network.master 208 dir_cntrl.requestToDir = MessageBuffer() 209 dir_cntrl.requestToDir.slave = ruby_system.network.master 210 dir_cntrl.dmaRequestToDir = MessageBuffer(ordered = True) 211 dir_cntrl.dmaRequestToDir.slave = ruby_system.network.master 212 dir_cntrl.responseFromMemory = MessageBuffer() |
|
196 | 213 |
214 |
|
197 for i, dma_port in enumerate(dma_ports): 198 # 199 # Create the Ruby objects associated with the dma controller 200 # 201 dma_seq = DMASequencer(version = i, 202 ruby_system = ruby_system, 203 slave = dma_port) 204 --- 4 unchanged lines hidden (view full) --- 209 210 exec("ruby_system.dma_cntrl%d = dma_cntrl" % i) 211 dma_cntrl_nodes.append(dma_cntrl) 212 213 if options.recycle_latency: 214 dma_cntrl.recycle_latency = options.recycle_latency 215 216 # Connect the dma controller to the network | 215 for i, dma_port in enumerate(dma_ports): 216 # 217 # Create the Ruby objects associated with the dma controller 218 # 219 dma_seq = DMASequencer(version = i, 220 ruby_system = ruby_system, 221 slave = dma_port) 222 --- 4 unchanged lines hidden (view full) --- 227 228 exec("ruby_system.dma_cntrl%d = dma_cntrl" % i) 229 dma_cntrl_nodes.append(dma_cntrl) 230 231 if options.recycle_latency: 232 dma_cntrl.recycle_latency = options.recycle_latency 233 234 # Connect the dma controller to the network |
217 dma_cntrl.responseFromDir = ruby_system.network.master 218 dma_cntrl.requestToDir = ruby_system.network.slave | 235 dma_cntrl.responseFromDir = MessageBuffer(ordered = True) 236 dma_cntrl.responseFromDir.slave = ruby_system.network.master 237 dma_cntrl.requestToDir = MessageBuffer() 238 dma_cntrl.requestToDir.master = ruby_system.network.slave 239 dma_cntrl.mandatoryQueue = MessageBuffer() |
219 220 all_cntrls = l1_cntrl_nodes + dir_cntrl_nodes + dma_cntrl_nodes 221 222 # Create the io controller and the sequencer 223 if full_system: 224 io_seq = DMASequencer(version=len(dma_ports), ruby_system=ruby_system) 225 ruby_system._io_port = io_seq 226 io_controller = DMA_Controller(version = len(dma_ports), 227 dma_sequencer = io_seq, 228 ruby_system = ruby_system) 229 ruby_system.io_controller = io_controller 230 231 # Connect the dma controller to the network | 240 241 all_cntrls = l1_cntrl_nodes + dir_cntrl_nodes + dma_cntrl_nodes 242 243 # Create the io controller and the sequencer 244 if full_system: 245 io_seq = DMASequencer(version=len(dma_ports), ruby_system=ruby_system) 246 ruby_system._io_port = io_seq 247 io_controller = DMA_Controller(version = len(dma_ports), 248 dma_sequencer = io_seq, 249 ruby_system = ruby_system) 250 ruby_system.io_controller = io_controller 251 252 # Connect the dma controller to the network |
232 io_controller.responseFromDir = ruby_system.network.master 233 io_controller.requestToDir = ruby_system.network.slave | 253 io_controller.responseFromDir = MessageBuffer(ordered = True) 254 io_controller.responseFromDir.slave = ruby_system.network.master 255 io_controller.requestToDir = MessageBuffer() 256 io_controller.requestToDir.master = ruby_system.network.slave 257 io_controller.mandatoryQueue = MessageBuffer() |
234 235 all_cntrls = all_cntrls + [io_controller] 236 237 topology = create_topology(all_cntrls, options) 238 return (cpu_sequencers, dir_cntrl_nodes, topology) | 258 259 all_cntrls = all_cntrls + [io_controller] 260 261 topology = create_topology(all_cntrls, options) 262 return (cpu_sequencers, dir_cntrl_nodes, topology) |