summaryrefslogtreecommitdiff
path: root/configs/ruby
diff options
context:
space:
mode:
authorJoel Hestness <jthestness@gmail.com>2015-08-14 00:19:37 -0500
committerJoel Hestness <jthestness@gmail.com>2015-08-14 00:19:37 -0500
commit9567c839fecfdb29a59f9da50cf706fcb22a2bb1 (patch)
tree395d523bf8b5ffa038f2be1c9f60923b91d26bfa /configs/ruby
parentc58bee829f88e7360b631771852efa097388a5da (diff)
downloadgem5-9567c839fecfdb29a59f9da50cf706fcb22a2bb1.tar.xz
ruby: Remove the RubyCache/CacheMemory latency
The RubyCache (CacheMemory) latency parameter is only used for top-level caches instantiated for Ruby coherence protocols. However, the top-level cache hit latency is assessed by the Sequencer as accesses flow through to the cache hierarchy. Further, protocol state machines should be enforcing these cache hit latencies, but RubyCaches do not expose their latency to any existng state machines through the SLICC/C++ interface. Thus, the RubyCache latency parameter is superfluous for all caches. This is confusing for users. As a step toward pushing L0/L1 cache hit latency into the top-level cache controllers, move their latencies out of the RubyCache declarations and over to their Sequencers. Eventually, these Sequencer parameters should be exposed as parameters to the top-level cache controllers, which should assess the latency. NOTE: Assessing these latencies in the cache controllers will require modifying each to eliminate instantaneous Ruby hit callbacks in transitions that finish accesses, which is likely a large undertaking.
Diffstat (limited to 'configs/ruby')
-rw-r--r--configs/ruby/MESI_Three_Level.py16
-rw-r--r--configs/ruby/MESI_Two_Level.py12
-rw-r--r--configs/ruby/MI_example.py5
-rw-r--r--configs/ruby/MOESI_CMP_directory.py12
-rw-r--r--configs/ruby/MOESI_CMP_token.py12
-rw-r--r--configs/ruby/MOESI_hammer.py18
-rw-r--r--configs/ruby/Network_test.py5
7 files changed, 22 insertions, 58 deletions
diff --git a/configs/ruby/MESI_Three_Level.py b/configs/ruby/MESI_Three_Level.py
index a4074e842..74eb15887 100644
--- a/configs/ruby/MESI_Three_Level.py
+++ b/configs/ruby/MESI_Three_Level.py
@@ -37,19 +37,11 @@ from Ruby import create_topology
from Ruby import send_evicts
#
-# Note: the L1 Cache latency is only used by the sequencer on fast path hits
+# Declare caches used by the protocol
#
-class L0Cache(RubyCache):
- latency = 1
-
-class L1Cache(RubyCache):
- latency = 5
-
-#
-# Note: the L2 Cache latency is not currently used
-#
-class L2Cache(RubyCache):
- latency = 15
+class L0Cache(RubyCache): pass
+class L1Cache(RubyCache): pass
+class L2Cache(RubyCache): pass
def define_options(parser):
parser.add_option("--num-clusters", type="int", default=1,
diff --git a/configs/ruby/MESI_Two_Level.py b/configs/ruby/MESI_Two_Level.py
index d911d76ef..9f286fa53 100644
--- a/configs/ruby/MESI_Two_Level.py
+++ b/configs/ruby/MESI_Two_Level.py
@@ -35,16 +35,10 @@ from Ruby import create_topology
from Ruby import send_evicts
#
-# Note: the L1 Cache latency is only used by the sequencer on fast path hits
+# Declare caches used by the protocol
#
-class L1Cache(RubyCache):
- latency = 3
-
-#
-# Note: the L2 Cache latency is not currently used
-#
-class L2Cache(RubyCache):
- latency = 15
+class L1Cache(RubyCache): pass
+class L2Cache(RubyCache): pass
def define_options(parser):
return
diff --git a/configs/ruby/MI_example.py b/configs/ruby/MI_example.py
index 3bb332c1d..5afee674a 100644
--- a/configs/ruby/MI_example.py
+++ b/configs/ruby/MI_example.py
@@ -35,10 +35,9 @@ from Ruby import create_topology
from Ruby import send_evicts
#
-# Note: the cache latency is only used by the sequencer on fast path hits
+# Declare caches used by the protocol
#
-class Cache(RubyCache):
- latency = 3
+class Cache(RubyCache): pass
def define_options(parser):
return
diff --git a/configs/ruby/MOESI_CMP_directory.py b/configs/ruby/MOESI_CMP_directory.py
index d32700166..f02c45987 100644
--- a/configs/ruby/MOESI_CMP_directory.py
+++ b/configs/ruby/MOESI_CMP_directory.py
@@ -35,16 +35,10 @@ from Ruby import create_topology
from Ruby import send_evicts
#
-# Note: the L1 Cache latency is only used by the sequencer on fast path hits
+# Declare caches used by the protocol
#
-class L1Cache(RubyCache):
- latency = 3
-
-#
-# Note: the L2 Cache latency is not currently used
-#
-class L2Cache(RubyCache):
- latency = 15
+class L1Cache(RubyCache): pass
+class L2Cache(RubyCache): pass
def define_options(parser):
return
diff --git a/configs/ruby/MOESI_CMP_token.py b/configs/ruby/MOESI_CMP_token.py
index 26cbc10d9..4b09fc937 100644
--- a/configs/ruby/MOESI_CMP_token.py
+++ b/configs/ruby/MOESI_CMP_token.py
@@ -35,16 +35,10 @@ from Ruby import create_topology
from Ruby import send_evicts
#
-# Note: the L1 Cache latency is only used by the sequencer on fast path hits
+# Declare caches used by the protocol
#
-class L1Cache(RubyCache):
- latency = 2
-
-#
-# Note: the L2 Cache latency is not currently used
-#
-class L2Cache(RubyCache):
- latency = 10
+class L1Cache(RubyCache): pass
+class L2Cache(RubyCache): pass
def define_options(parser):
parser.add_option("--l1-retries", type="int", default=1,
diff --git a/configs/ruby/MOESI_hammer.py b/configs/ruby/MOESI_hammer.py
index b42138743..afbb25dc3 100644
--- a/configs/ruby/MOESI_hammer.py
+++ b/configs/ruby/MOESI_hammer.py
@@ -35,22 +35,14 @@ from Ruby import create_topology
from Ruby import send_evicts
#
-# Note: the L1 Cache latency is only used by the sequencer on fast path hits
+# Declare caches used by the protocol
#
-class L1Cache(RubyCache):
- latency = 2
-
-#
-# Note: the L2 Cache latency is not currently used
-#
-class L2Cache(RubyCache):
- latency = 10
-
+class L1Cache(RubyCache): pass
+class L2Cache(RubyCache): pass
#
-# Probe filter is a cache, latency is not used
+# Probe filter is a cache
#
-class ProbeFilter(RubyCache):
- latency = 1
+class ProbeFilter(RubyCache): pass
def define_options(parser):
parser.add_option("--allow-atomic-migration", action="store_true",
diff --git a/configs/ruby/Network_test.py b/configs/ruby/Network_test.py
index a4641ae64..5eeaba98b 100644
--- a/configs/ruby/Network_test.py
+++ b/configs/ruby/Network_test.py
@@ -34,10 +34,9 @@ from m5.util import addToPath
from Ruby import create_topology
#
-# Note: the cache latency is only used by the sequencer on fast path hits
+# Declare caches used by the protocol
#
-class Cache(RubyCache):
- latency = 3
+class Cache(RubyCache): pass
def define_options(parser):
return