ruby: Memory Controller Profiler with new config system

This patch includes a rather substantial change to the memory controller
profiler in order to work with the new configuration system.  Most
noteably, the mem_cntrl_profiler no longer uses a string map, but instead
a vector.  Eventually this support should be removed from the main
profiler and go into a separate object.  Each memory controller should have
a pointer to that new mem_cntrl profile object.
This commit is contained in:
Brad Beckmann
2010-01-29 20:29:20 -08:00
parent 2a0555470c
commit 2c9ca672df
8 changed files with 273 additions and 173 deletions

View File

@@ -135,9 +135,11 @@ for (i, cpu) in enumerate(cpus):
L1DcacheMemory = l1d_cache,
L2cacheMemory = l2_cache)
mem_cntrl = RubyMemoryControl(version = i)
dir_cntrl = Directory_Controller(version = i,
directory = RubyDirectoryMemory(),
memBuffer = RubyMemoryControl())
memBuffer = mem_cntrl)
dma_cntrl = DMA_Controller(version = i,
dma_sequencer = DMASequencer())
@@ -167,13 +169,27 @@ network = SimpleNetwork(topology = makeCrossbar(l1_cntrl_nodes + \
mem_size_mb = sum([int(dir_cntrl.directory.size_mb) \
for dir_cntrl in dir_cntrl_nodes])
#
# determine the number of memory controllers and other memory controller
# parameters for the profiler
#
mcCount = len(dir_cntrl_nodes)
banksPerRank = dir_cntrl_nodes[0].memBuffer.banks_per_rank
ranksPerDimm = dir_cntrl_nodes[0].memBuffer.ranks_per_dimm
dimmsPerChannel = dir_cntrl_nodes[0].memBuffer.dimms_per_channel
ruby_profiler = RubyProfiler(mem_cntrl_count = mcCount,
banks_per_rank = banksPerRank,
ranks_per_dimm = ranksPerDimm,
dimms_per_channel = dimmsPerChannel)
system.ruby = RubySystem(clock = '1GHz',
network = network,
profiler = RubyProfiler(),
profiler = ruby_profiler,
tracer = RubyTracer(),
debug = RubyDebug(filter_string = 'qQin',
verbosity_string = 'high',
protocol_trace = True),
debug = RubyDebug(filter_string = 'none',
verbosity_string = 'none',
protocol_trace = False),
mem_size_mb = mem_size_mb)