ruby: Reduced ruby latencies
authorBrad Beckmann <Brad.Beckmann@amd.com>
Fri, 20 Aug 2010 18:46:12 +0000 (11:46 -0700)
committerBrad Beckmann <Brad.Beckmann@amd.com>
Fri, 20 Aug 2010 18:46:12 +0000 (11:46 -0700)
The previous slower ruby latencies created a mismatch between the faster M5
cpu models and the much slower ruby memory system.  Specifically smp
interrupts were much slower and infrequent, as well as cpus moving in and out
of spin locks.  The result was many cpus were idle for large periods of time.

These changes fix the latency mismatch.

configs/common/Options.py
configs/example/ruby_se.py
configs/ruby/MOESI_CMP_token.py
configs/ruby/MOESI_hammer.py
src/mem/protocol/MOESI_CMP_token-L1cache.sm
src/mem/protocol/MOESI_CMP_token-L2cache.sm
src/mem/protocol/MOESI_CMP_token-dir.sm
src/mem/protocol/MOESI_hammer-cache.sm
src/mem/protocol/MOESI_hammer-dir.sm

index 4efbc541e9b20ecba328ab35fb1677fb31ec0cc1..42e1585d78be5b1d0d837ca5a03ed98e853ee64a 100644 (file)
@@ -34,7 +34,7 @@ parser.add_option("-n", "--num-cpus", type="int", default=1)
 parser.add_option("--caches", action="store_true")
 parser.add_option("--l2cache", action="store_true")
 parser.add_option("--fastmem", action="store_true")
-parser.add_option("--clock", action="store", type="string", default='1GHz')
+parser.add_option("--clock", action="store", type="string", default='2GHz')
 parser.add_option("--num-dirs", type="int", default=1)
 parser.add_option("--num-l2caches", type="int", default=1)
 parser.add_option("--num-l3caches", type="int", default=1)
index a0e839bae000df091b41fa161fe54adc93d76dfe..d51f92f1910f3312bd20781c84f6f30bc80c0f31 100644 (file)
@@ -143,7 +143,7 @@ assert(options.timing)
 assert(test_mem_mode == 'timing')
 assert(FutureClass == None)
 
-CPUClass.clock = '1GHz'
+CPUClass.clock = options.clock
 
 np = options.num_cpus
 
index f2669ef788681f0e72c5ddf7af7c65b3f29c325e..3853ebbb43347f54d708c461b5d9813bae95e23a 100644 (file)
@@ -36,13 +36,13 @@ from m5.defines import buildEnv
 # Note: the L1 Cache latency is only used by the sequencer on fast path hits
 #
 class L1Cache(RubyCache):
-    latency = 3
+    latency = 2
 
 #
 # Note: the L2 Cache latency is not currently used
 #
 class L2Cache(RubyCache):
-    latency = 15
+    latency = 10
 
 def define_options(parser):
     parser.add_option("--l1-retries", type="int", default=1,
index 5cf27206b0e62032505935531d1d0125de52359c..818600a5a28ee3432df15846243165635cacbae6 100644 (file)
@@ -35,13 +35,13 @@ from m5.defines import buildEnv
 # Note: the L1 Cache latency is only used by the sequencer on fast path hits
 #
 class L1Cache(RubyCache):
-    latency = 3
+    latency = 2
 
 #
 # Note: the L2 Cache latency is not currently used
 #
 class L2Cache(RubyCache):
-    latency = 15
+    latency = 10
 
 def define_options(parser):
     return
index 4af3338d8498f4d3d4df35a7ec0cf879d04ac2a3..8424479bd1e56ea872a364077a499c91a6644dcf 100644 (file)
@@ -41,7 +41,7 @@ machine(L1Cache, "Token protocol")
    int l1_request_latency = 2,
    int l1_response_latency = 2,
    int retry_threshold = 1,
-   int fixed_timeout_latency = 300,
+   int fixed_timeout_latency = 100,
    bool dynamic_timeout_enabled = true
 {
 
index fcc91f223d3f3b1e8712009eaf210b74cbf72d8d..a90b2480012c5d76cb89595b0c54a0b94c39bfff 100644 (file)
@@ -35,8 +35,8 @@
 machine(L2Cache, "Token protocol") 
  : CacheMemory * L2cacheMemory,
    int N_tokens,
-   int l2_request_latency = 10,
-   int l2_response_latency = 10,
+   int l2_request_latency = 5,
+   int l2_response_latency = 5,
    bool filtering_enabled = true
 {
 
index 5122e30d3f473fdbed7e39f952fb3f32a1a65485..261fbba07c34296f529e764804f3174e388ff2cf 100644 (file)
@@ -36,9 +36,9 @@ machine(Directory, "Token protocol")
  : DirectoryMemory * directory,
    MemoryControl * memBuffer,
    int l2_select_num_bits,
-   int directory_latency = 6,
+   int directory_latency = 5,
    bool distributed_persistent = true,
-   int fixed_timeout_latency = 300
+   int fixed_timeout_latency = 100
 {
 
   MessageBuffer dmaResponseFromDir, network="To", virtual_network="5", ordered="true";
index 3de72199b05223223220a5fec22edbb96db2897e..bb9b8b772f7bf27185a33f10b5dbaca0a623fdd7 100644 (file)
@@ -38,7 +38,7 @@ machine(L1Cache, "AMD Hammer-like protocol")
   CacheMemory * L1IcacheMemory,
   CacheMemory * L1DcacheMemory,
   CacheMemory * L2cacheMemory,
-  int cache_response_latency = 12,
+  int cache_response_latency = 10,
   int issue_latency = 2
 {
 
index b2fec17f53e827b92c7f50911b5296e73c8a777d..d967c813cf7e7812223ac452c4eab5fa2fb2fd76 100644 (file)
@@ -36,7 +36,7 @@
 machine(Directory, "AMD Hammer-like protocol") 
 : DirectoryMemory * directory,
   MemoryControl * memBuffer,
-  int memory_controller_latency = 12
+  int memory_controller_latency = 2
 {
 
   MessageBuffer forwardFromDir, network="To", virtual_network="3", ordered="false";