# HG changeset patch # Parent f3d034acbb64a80c6f191c45ac89eaa37395ba54 # User Joel Hestness ruby: [FOR TESTING] Set finite buffer sizes in MOESI_hammer To test Ruby finite buffering requires a protocol using finite buffers. As an example, use finite buffers in MOESI_hammer to exercise the blocking and retries implemented in Ruby directory controllers and the DRAMCtrl. diff --git a/configs/ruby/MOESI_hammer.py b/configs/ruby/MOESI_hammer.py --- a/configs/ruby/MOESI_hammer.py +++ b/configs/ruby/MOESI_hammer.py @@ -126,20 +126,20 @@ # Connect the L1 controller and the network # Connect the buffers from the controller to network - l1_cntrl.requestFromCache = MessageBuffer() + l1_cntrl.requestFromCache = MessageBuffer(buffer_size = 3) l1_cntrl.requestFromCache.master = ruby_system.network.slave - l1_cntrl.responseFromCache = MessageBuffer() + l1_cntrl.responseFromCache = MessageBuffer(buffer_size = 3) l1_cntrl.responseFromCache.master = ruby_system.network.slave - l1_cntrl.unblockFromCache = MessageBuffer() + l1_cntrl.unblockFromCache = MessageBuffer(buffer_size = 3) l1_cntrl.unblockFromCache.master = ruby_system.network.slave - l1_cntrl.triggerQueue = MessageBuffer() + l1_cntrl.triggerQueue = MessageBuffer(buffer_size = 3) # Connect the buffers from the network to the controller - l1_cntrl.mandatoryQueue = MessageBuffer() - l1_cntrl.forwardToCache = MessageBuffer() + l1_cntrl.mandatoryQueue = MessageBuffer(buffer_size = 3) + l1_cntrl.forwardToCache = MessageBuffer(buffer_size = 3) l1_cntrl.forwardToCache.slave = ruby_system.network.master - l1_cntrl.responseToCache = MessageBuffer() + l1_cntrl.responseToCache = MessageBuffer(buffer_size = 3) l1_cntrl.responseToCache.slave = ruby_system.network.master @@ -200,25 +200,25 @@ dir_cntrl_nodes.append(dir_cntrl) # Connect the directory controller to the network - dir_cntrl.forwardFromDir = MessageBuffer() + dir_cntrl.forwardFromDir = MessageBuffer(buffer_size = 3) dir_cntrl.forwardFromDir.master = ruby_system.network.slave - dir_cntrl.responseFromDir = MessageBuffer() + dir_cntrl.responseFromDir = MessageBuffer(buffer_size = 3) dir_cntrl.responseFromDir.master = ruby_system.network.slave - dir_cntrl.dmaResponseFromDir = MessageBuffer(ordered = True) + dir_cntrl.dmaResponseFromDir = MessageBuffer(buffer_size = 3, ordered = True) dir_cntrl.dmaResponseFromDir.master = ruby_system.network.slave - dir_cntrl.triggerQueue = MessageBuffer(ordered = True) + dir_cntrl.triggerQueue = MessageBuffer(buffer_size = 3, ordered = True) - dir_cntrl.unblockToDir = MessageBuffer() + dir_cntrl.unblockToDir = MessageBuffer(buffer_size = 3) dir_cntrl.unblockToDir.slave = ruby_system.network.master - dir_cntrl.responseToDir = MessageBuffer() + dir_cntrl.responseToDir = MessageBuffer(buffer_size = 3) dir_cntrl.responseToDir.slave = ruby_system.network.master - dir_cntrl.requestToDir = MessageBuffer() + dir_cntrl.requestToDir = MessageBuffer(buffer_size = 3) dir_cntrl.requestToDir.slave = ruby_system.network.master - dir_cntrl.dmaRequestToDir = MessageBuffer(ordered = True) + dir_cntrl.dmaRequestToDir = MessageBuffer(buffer_size = 3, ordered = True) dir_cntrl.dmaRequestToDir.slave = ruby_system.network.master - dir_cntrl.requestToMemory = MessageBuffer() - dir_cntrl.responseFromMemory = MessageBuffer() + dir_cntrl.requestToMemory = MessageBuffer(buffer_size = 3) + dir_cntrl.responseFromMemory = MessageBuffer(buffer_size = 3) for i, dma_port in enumerate(dma_ports): @@ -241,11 +241,11 @@ dma_cntrl.recycle_latency = options.recycle_latency # Connect the dma controller to the network - dma_cntrl.responseFromDir = MessageBuffer(ordered = True) + dma_cntrl.responseFromDir = MessageBuffer(buffer_size = 3, ordered = True) dma_cntrl.responseFromDir.slave = ruby_system.network.master - dma_cntrl.requestToDir = MessageBuffer() + dma_cntrl.requestToDir = MessageBuffer(buffer_size = 3) dma_cntrl.requestToDir.master = ruby_system.network.slave - dma_cntrl.mandatoryQueue = MessageBuffer() + dma_cntrl.mandatoryQueue = MessageBuffer(buffer_size = 3) all_cntrls = l1_cntrl_nodes + dir_cntrl_nodes + dma_cntrl_nodes @@ -259,11 +259,11 @@ ruby_system.io_controller = io_controller # Connect the dma controller to the network - io_controller.responseFromDir = MessageBuffer(ordered = True) + io_controller.responseFromDir = MessageBuffer(buffer_size = 3, ordered = True) io_controller.responseFromDir.slave = ruby_system.network.master - io_controller.requestToDir = MessageBuffer() + io_controller.requestToDir = MessageBuffer(buffer_size = 3) io_controller.requestToDir.master = ruby_system.network.slave - io_controller.mandatoryQueue = MessageBuffer() + io_controller.mandatoryQueue = MessageBuffer(buffer_size = 3) all_cntrls = all_cntrls + [io_controller] diff --git a/configs/ruby/Ruby.py b/configs/ruby/Ruby.py --- a/configs/ruby/Ruby.py +++ b/configs/ruby/Ruby.py @@ -122,6 +122,10 @@ MemConfig.get(options.mem_type), r, index, options.num_dirs, int(math.log(options.num_dirs, 2)), options.cacheline_size) + mem_ctrl.read_buffer_size = 3 + mem_ctrl.write_buffer_size = 3 + mem_ctrl.response_buffer_size = 3 + mem_ctrls.append(mem_ctrl) if crossbar != None: