config: reorganized how ruby specifies command-line options
authorBrad Beckmann <Brad.Beckmann@amd.com>
Fri, 20 Aug 2010 18:44:09 +0000 (11:44 -0700)
committerBrad Beckmann <Brad.Beckmann@amd.com>
Fri, 20 Aug 2010 18:44:09 +0000 (11:44 -0700)
configs/common/Options.py
configs/example/memtest-ruby.py
configs/example/ruby_fs.py
configs/example/ruby_se.py
configs/example/rubytest.py
configs/ruby/MESI_CMP_directory.py
configs/ruby/MI_example.py
configs/ruby/MOESI_CMP_directory.py
configs/ruby/MOESI_CMP_token.py
configs/ruby/MOESI_hammer.py
configs/ruby/Ruby.py

index bf764b407168843f73579f9793a30b483dba63e3..4efbc541e9b20ecba328ab35fb1677fb31ec0cc1 100644 (file)
@@ -37,18 +37,15 @@ parser.add_option("--fastmem", action="store_true")
 parser.add_option("--clock", action="store", type="string", default='1GHz')
 parser.add_option("--num-dirs", type="int", default=1)
 parser.add_option("--num-l2caches", type="int", default=1)
-parser.add_option("--topology", type="string", default="Crossbar",
-                  help="check src/mem/ruby/network/topologies for complete set")
-parser.add_option("--mesh-rows", type="int", default=1,
-                  help="the number of rows in the mesh topology")
-parser.add_option("--garnet-network", type="string", default=None,
-                  help="'fixed'|'flexible'")
-parser.add_option("--numa-high-bit", type="int", default=None,
-                  help="high order address bit to use for numa mapping")
-
-# ruby sparse memory options
-parser.add_option("--use-map", action="store_true", default=False)
-parser.add_option("--map-levels", type="int", default=4)
+parser.add_option("--num-l3caches", type="int", default=1)
+parser.add_option("--l1d_size", type="string", default="32kB")
+parser.add_option("--l1i_size", type="string", default="32kB")
+parser.add_option("--l2_size", type="string", default="2MB")
+parser.add_option("--l3_size", type="string", default="16MB")
+parser.add_option("--l1d_assoc", type="int", default=2)
+parser.add_option("--l1i_assoc", type="int", default=2)
+parser.add_option("--l2_assoc", type="int", default=16)
+parser.add_option("--l3_assoc", type="int", default=16)
 
 # Run duration options
 parser.add_option("-m", "--maxtick", type="int", default=m5.MaxTick,
index 16d86f0bc0d332fb3bb892d89e9ee4617e30fc57..567af03d031c0d2fe221cebe3b2456739964ce09 100644 (file)
@@ -69,20 +69,27 @@ parser.add_option("--progress", type="int", default=1000,
                   "[default: %default]")
 
 #
-# Set the default cache size and associativity to be very small to encourage
-# races between requests and writebacks.
+# Add the ruby specific and protocol specific options
 #
-parser.add_option("--l1d_size", type="string", default="256B")
-parser.add_option("--l1i_size", type="string", default="256B")
-parser.add_option("--l2_size", type="string", default="512B")
-parser.add_option("--l1d_assoc", type="int", default=2)
-parser.add_option("--l1i_assoc", type="int", default=2)
-parser.add_option("--l2_assoc", type="int", default=2)
+Ruby.define_options(parser)
 
 execfile(os.path.join(config_root, "common", "Options.py"))
 
 (options, args) = parser.parse_args()
 
+#
+# Set the default cache size and associativity to be very small to encourage
+# races between requests and writebacks.
+#
+options.l1d_size="256B"
+options.l1i_size="256B"
+options.l2_size="512B"
+options.l3_size="1kB"
+options.l1d_assoc=2
+options.l1i_assoc=2
+options.l2_assoc=2
+options.l3_assoc=2
+
 if args:
      print "Error: script doesn't take any positional arguments"
      sys.exit(1)
index 5c508f6fe31bbe7d1401069f3422321c347c29d6..b6d9a6c0a20917b92b587a0f6649772c9997f3d6 100644 (file)
@@ -72,16 +72,10 @@ parser.add_option("-i", "--input", default="", help="Read stdin from a file.")
 parser.add_option("--output", default="", help="Redirect stdout to a file.")
 parser.add_option("--errout", default="", help="Redirect stderr to a file.")
 
-# cache parameters
-parser.add_option("--l1d_size", type="string", default="32kB")
-parser.add_option("--l1i_size", type="string", default="32kB")
-parser.add_option("--l2_size", type="string", default="1MB")
-parser.add_option("--l1d_assoc", type="int", default=2)
-parser.add_option("--l1i_assoc", type="int", default=2)
-parser.add_option("--l2_assoc", type="int", default=16)
-# ruby host memory experimentation
-parser.add_option("--map_levels", type="int")
+#
+# Add the ruby specific and protocol specific options
+#
+Ruby.define_options(parser)
 
 execfile(os.path.join(config_root, "common", "Options.py"))
 
index 600fa1b146bd042c9f692396d0ccd498ff12cb3c..7a55e15131ef41dc4a10a5987f4519f8f7c087cc 100644 (file)
@@ -68,14 +68,11 @@ parser.add_option("-i", "--input", default="", help="Read stdin from a file.")
 parser.add_option("--output", default="", help="Redirect stdout to a file.")
 parser.add_option("--errout", default="", help="Redirect stderr to a file.")
 
-# cache parameters
-parser.add_option("--l1d_size", type="string", default="32kB")
-parser.add_option("--l1i_size", type="string", default="32kB")
-parser.add_option("--l2_size", type="string", default="1MB")
-parser.add_option("--l1d_assoc", type="int", default=2)
-parser.add_option("--l1i_assoc", type="int", default=2)
-parser.add_option("--l2_assoc", type="int", default=16)
+#
+# Add the ruby specific and protocol specific options
+#
+Ruby.define_options(parser)
+
 execfile(os.path.join(config_root, "common", "Options.py"))
 
 (options, args) = parser.parse_args()
index c9cf0aba4650c5df664ee5f1052668795c4f32da..2a789c97982694ed9287fa752291ca475fce57e0 100644 (file)
@@ -54,20 +54,27 @@ parser.add_option("-f", "--wakeup_freq", metavar="N", default=10,
                   help="Wakeup every N cycles")
 
 #
-# Set the default cache size and associativity to be very small to encourage
-# races between requests and writebacks.
+# Add the ruby specific and protocol specific options
 #
-parser.add_option("--l1d_size", type="string", default="256B")
-parser.add_option("--l1i_size", type="string", default="256B")
-parser.add_option("--l2_size", type="string", default="512B")
-parser.add_option("--l1d_assoc", type="int", default=2)
-parser.add_option("--l1i_assoc", type="int", default=2)
-parser.add_option("--l2_assoc", type="int", default=2)
+Ruby.define_options(parser)
 
 execfile(os.path.join(config_root, "common", "Options.py"))
 
 (options, args) = parser.parse_args()
 
+#
+# Set the default cache size and associativity to be very small to encourage
+# races between requests and writebacks.
+#
+options.l1d_size="256B"
+options.l1i_size="256B"
+options.l2_size="512B"
+options.l3_size="1kB"
+options.l1d_assoc=2
+options.l1i_assoc=2
+options.l2_assoc=2
+options.l3_assoc=2
+
 if args:
      print "Error: script doesn't take any positional arguments"
      sys.exit(1)
index 9b62a15af12b50c91105f979749aa572b10f5919..2e93452121568244e3d64a74b391d5749fa35b9f 100644 (file)
@@ -44,6 +44,9 @@ class L1Cache(RubyCache):
 class L2Cache(RubyCache):
     latency = 15
 
+def define_options(parser):
+    return
+
 def create_system(options, phys_mem, piobus, dma_devices):
     
     if buildEnv['PROTOCOL'] != 'MESI_CMP_directory':
index 29d99b46e486fb0efb46ee347b7dc1ed47e158c5..ce0918de8fda15366bb02a6ec49393afb1805472 100644 (file)
@@ -37,6 +37,9 @@ from m5.defines import buildEnv
 class Cache(RubyCache):
     latency = 3
 
+def define_options(parser):
+    return
+
 def create_system(options, phys_mem, piobus, dma_devices):
     
     if buildEnv['PROTOCOL'] != 'MI_example':
index a4069d94d354e0a1b52f1c262627aae7cff44932..8c332f8e44fe8cd9888b715ef706b6048ac96ff2 100644 (file)
@@ -44,6 +44,9 @@ class L1Cache(RubyCache):
 class L2Cache(RubyCache):
     latency = 15
 
+def define_options(parser):
+    return
+
 def create_system(options, phys_mem, piobus, dma_devices):
     
     if buildEnv['PROTOCOL'] != 'MOESI_CMP_directory':
index 537a1543c253e9ba94368eb3b2bd5370ceac3d28..5d3ddf190974b9b01b23ce20feab9f8a357499f6 100644 (file)
@@ -44,6 +44,9 @@ class L1Cache(RubyCache):
 class L2Cache(RubyCache):
     latency = 15
 
+def define_options(parser):
+    return
+
 def create_system(options, phys_mem, piobus, dma_devices):
     
     if buildEnv['PROTOCOL'] != 'MOESI_CMP_token':
index 2d2d75dc26553f49cb1cb0b10727cf4001c61d1a..705b569ac3a9fb88b1585892734a1d4bb3dd3292 100644 (file)
@@ -43,6 +43,9 @@ class L1Cache(RubyCache):
 class L2Cache(RubyCache):
     latency = 15
 
+def define_options(parser):
+    return
+
 def create_system(options, phys_mem, piobus, dma_devices):
     
     if buildEnv['PROTOCOL'] != 'MOESI_hammer':
index 66293af6498766b2320b2e2ceaadaf245e66a03f..77c975842ca19f6aa5d6ae6ae1a084697462ecb8 100644 (file)
@@ -31,6 +31,27 @@ import m5
 from m5.objects import *
 from m5.defines import buildEnv
 
+def define_options(parser):
+    # ruby network options
+    parser.add_option("--topology", type="string", default="Crossbar",
+                 help="check src/mem/ruby/network/topologies for complete set")
+    parser.add_option("--mesh-rows", type="int", default=1,
+                      help="the number of rows in the mesh topology")
+    parser.add_option("--garnet-network", type="string", default=none,
+                      help="'fixed'|'flexible'")
+
+    # ruby mapping options
+    parser.add_option("--numa-high-bit", type="int", default=none,
+                      help="high order address bit to use for numa mapping")
+
+    # ruby sparse memory options
+    parser.add_option("--use-map", action="store_true", default=False)
+    parser.add_option("--map-levels", type="int", default=4)
+
+    protocol = buildEnv['PROTOCOL']
+    exec "import %s" % protocol
+    eval("%s.define_options(parser)" % protocol)
+
 def create_system(options, physmem, piobus = None, dma_devices = []):
 
     protocol = buildEnv['PROTOCOL']