Cache: add a response latency to the caches
authorMrinmoy Ghosh <mrinmoy.ghosh@arm.com>
Tue, 25 Sep 2012 16:49:41 +0000 (11:49 -0500)
committerMrinmoy Ghosh <mrinmoy.ghosh@arm.com>
Tue, 25 Sep 2012 16:49:41 +0000 (11:49 -0500)
In the current caches the hit latency is paid twice on a miss. This patch lets
a configurable response latency be set of the cache for the backward path.

32 files changed:
configs/common/Caches.py
configs/common/O3_ARM_v7a.py
src/mem/cache/BaseCache.py
src/mem/cache/base.cc
src/mem/cache/base.hh
src/mem/cache/builder.cc
src/mem/cache/cache_impl.hh
tests/configs/inorder-timing.py
tests/configs/memtest.py
tests/configs/o3-timing-checker.py
tests/configs/o3-timing-mp.py
tests/configs/o3-timing.py
tests/configs/pc-o3-timing.py
tests/configs/pc-simple-atomic.py
tests/configs/pc-simple-timing.py
tests/configs/realview-o3-checker.py
tests/configs/realview-o3-dual.py
tests/configs/realview-o3.py
tests/configs/realview-simple-atomic-dual.py
tests/configs/realview-simple-atomic.py
tests/configs/realview-simple-timing-dual.py
tests/configs/realview-simple-timing.py
tests/configs/simple-atomic-mp.py
tests/configs/simple-timing-mp.py
tests/configs/simple-timing.py
tests/configs/tsunami-inorder.py
tests/configs/tsunami-o3-dual.py
tests/configs/tsunami-o3.py
tests/configs/tsunami-simple-atomic-dual.py
tests/configs/tsunami-simple-atomic.py
tests/configs/tsunami-simple-timing-dual.py
tests/configs/tsunami-simple-timing.py

index 0be8001d782a9735e6e6b60b009e20cc6878bc10..f16a835599dac11ca485dbf5297618546c562ace 100644 (file)
@@ -31,7 +31,8 @@ from m5.objects import *
 class L1Cache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     tgts_per_mshr = 20
     is_top_level = True
@@ -39,14 +40,16 @@ class L1Cache(BaseCache):
 class L2Cache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 20
     tgts_per_mshr = 12
 
 class PageTableWalkerCache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     size = '1kB'
     tgts_per_mshr = 12
@@ -55,7 +58,8 @@ class PageTableWalkerCache(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index 68fb0c543a9e1177e80c1dfaf5aa2cfff1f89231..20ef10ebc766244d36a8a016a1302b52f1996865 100644 (file)
@@ -147,7 +147,8 @@ class O3_ARM_v7a_3(DerivO3CPU):
 # Instruction Cache
 # All latencys assume a 1GHz clock rate, with a faster clock they would be faster
 class O3_ARM_v7a_ICache(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 2
     tgts_per_mshr = 8
@@ -158,7 +159,8 @@ class O3_ARM_v7a_ICache(BaseCache):
 # Data Cache
 # All latencys assume a 1GHz clock rate, with a faster clock they would be faster
 class O3_ARM_v7a_DCache(BaseCache):
-    latency = '2ns'
+    hit_latency = '2ns'
+    response_latency = '2ns'
     block_size = 64
     mshrs = 6
     tgts_per_mshr = 8
@@ -170,7 +172,8 @@ class O3_ARM_v7a_DCache(BaseCache):
 # TLB Cache 
 # Use a cache as a L2 TLB
 class O3_ARM_v7aWalkCache(BaseCache):
-    latency = '4ns'
+    hit_latency = '4ns'
+    response_latency = '4ns'
     block_size = 64
     mshrs = 6
     tgts_per_mshr = 8
@@ -183,7 +186,8 @@ class O3_ARM_v7aWalkCache(BaseCache):
 # L2 Cache
 # All latencys assume a 1GHz clock rate, with a faster clock they would be faster
 class O3_ARM_v7aL2(BaseCache):
-    latency = '12ns'
+    hit_latency = '12ns'
+    response_latency = '12ns'
     block_size = 64
     mshrs = 16
     tgts_per_mshr = 8
index 081a0f15e82a211d2cc75ae00c40c426210e2388..fde0aa4926677400af291a980be204ccee028330 100644 (file)
@@ -36,7 +36,9 @@ class BaseCache(MemObject):
     type = 'BaseCache'
     assoc = Param.Int("associativity")
     block_size = Param.Int("block size in bytes")
-    latency = Param.Latency("Latency")
+    hit_latency = Param.Latency("The hit latency for this cache")
+    response_latency = Param.Latency(
+            "Additional cache latency for the return path to core on a miss");
     hash_delay = Param.Cycles(1, "time in cycles of hash access")
     max_miss_count = Param.Counter(0,
         "number of misses to handle before calling exit")
index c175d5958dee2e6f8707f3a45b07e416c05e2451..4dd428a2ea6ddc5391569765460e467301396801 100644 (file)
@@ -69,7 +69,8 @@ BaseCache::BaseCache(const Params *p)
       writeBuffer("write buffer", p->write_buffers, p->mshrs+1000,
                   MSHRQueue_WriteBuffer),
       blkSize(p->block_size),
-      hitLatency(p->latency),
+      hitLatency(p->hit_latency),
+      responseLatency(p->response_latency),
       numTarget(p->tgts_per_mshr),
       forwardSnoops(p->forward_snoops),
       isTopLevel(p->is_top_level),
index 795347a0deeda1efb28af7890036987f64c919cc..da72667b3e1b9118f7fc77ec52252872ccd54a09 100644 (file)
@@ -229,7 +229,15 @@ class BaseCache : public MemObject
     /**
      * The latency of a hit in this device.
      */
-    int hitLatency;
+    const Tick hitLatency;
+
+    /**
+     * The latency of sending reponse to its upper level cache/core on a
+     * linefill. In most contemporary processors, the return path on a cache
+     * miss is much quicker that the hit latency. The responseLatency parameter
+     * tries to capture this latency.
+     */
+    const Tick responseLatency;
 
     /** The number of targets for each MSHR. */
     const int numTarget;
index ca8c378fb9ef9688d4a47848338049bbb8bcd986..6f1f841f8a6aeb0663024d47687cb544885d86d8 100644 (file)
@@ -71,7 +71,7 @@ using namespace std;
 
 #if defined(USE_CACHE_FALRU)
 #define BUILD_FALRU_CACHE do {                              \
-        FALRU *tags = new FALRU(block_size, size, latency); \
+        FALRU *tags = new FALRU(block_size, size, hit_latency); \
         BUILD_CACHE(FALRU, tags);                           \
     } while (0)
 #else
@@ -80,7 +80,7 @@ using namespace std;
 
 #if defined(USE_CACHE_LRU)
 #define BUILD_LRU_CACHE do {                                            \
-        LRU *tags = new LRU(numSets, block_size, assoc, latency);       \
+        LRU *tags = new LRU(numSets, block_size, assoc, hit_latency);       \
         BUILD_CACHE(LRU, tags);                                         \
     } while (0)
 #else
@@ -124,7 +124,7 @@ BaseCacheParams::create()
     iic_params.blkSize = block_size;
     iic_params.assoc = assoc;
     iic_params.hashDelay = hash_delay;
-    iic_params.hitLatency = latency;
+    iic_params.hitLatency = hit_latency;
     iic_params.rp = repl;
     iic_params.subblockSize = subblock_size;
 #else
index 9b9010d344b6ef7a38cf912ff61379e95af44951..a22003c4fd0df25ca607f8948efd8bb911069a5d 100644 (file)
@@ -897,8 +897,11 @@ Cache<TagStore>::handleResponse(PacketPtr pkt)
                     transfer_offset += blkSize;
                 }
 
-                // If critical word (no offset) return first word time
-                completion_time = tags->getHitLatency() +
+                // If critical word (no offset) return first word time.
+                // responseLatency is the latency of the return path
+                // from lower level caches/memory to an upper level cache or
+                // the core.
+                completion_time = responseLatency +
                     (transfer_offset ? pkt->finishTime : pkt->firstWordTime);
 
                 assert(!target->pkt->req->isUncacheable());
@@ -911,11 +914,16 @@ Cache<TagStore>::handleResponse(PacketPtr pkt)
                 assert(target->pkt->cmd == MemCmd::StoreCondReq ||
                        target->pkt->cmd == MemCmd::StoreCondFailReq ||
                        target->pkt->cmd == MemCmd::SCUpgradeFailReq);
-                completion_time = tags->getHitLatency() + pkt->finishTime;
+                // responseLatency is the latency of the return path
+                // from lower level caches/memory to an upper level cache or
+                // the core.
+                completion_time = responseLatency + pkt->finishTime;
                 target->pkt->req->setExtraData(0);
             } else {
                 // not a cache fill, just forwarding response
-                completion_time = tags->getHitLatency() + pkt->finishTime;
+                // responseLatency is the latency of the return path
+                // from lower level cahces/memory to the core.
+                completion_time = responseLatency + pkt->finishTime;
                 if (pkt->isRead() && !is_error) {
                     target->pkt->setData(pkt->getPtr<uint8_t>());
                 }
index 3e285af7772fd379851f459aea7677edf866f6e7..af7609e9f6cee3fd9bf511548aca5a7cfe01ec9b 100644 (file)
@@ -33,7 +33,8 @@ m5.util.addToPath('../configs/common')
 class MyCache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     tgts_per_mshr = 5
 
@@ -43,7 +44,8 @@ class MyL1Cache(MyCache):
 cpu = InOrderCPU(cpu_id=0)
 cpu.addTwoLevelCacheHierarchy(MyL1Cache(size = '128kB'),
                               MyL1Cache(size = '256kB'),
-                              MyCache(size = '2MB', latency='10ns'))
+                              MyCache(size = '2MB', hit_latency='10ns',
+                                      response_latency='10ns'))
 
 cpu.clock = '2GHz'
 
index 57f45b1d4c50cc9e35b40ed880f836da3a23eea3..f91a7eb78db6c5344604226b6683882ef5db2c05 100644 (file)
@@ -34,7 +34,8 @@ from m5.objects import *
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 12
     tgts_per_mshr = 8
@@ -46,7 +47,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
index 0bbe9b00aa195acf4c28120512dec58d24c10de1..866d57851164d53c26b738872ca3cdfd29a46eba 100644 (file)
@@ -42,7 +42,8 @@ m5.util.addToPath('../configs/common')
 class MyCache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     tgts_per_mshr = 5
 
index 2aec2bb1d0319bd3ab4eade6c3dad86cada995c7..1b3207311bae93445e32c39b87c811150f8c4026 100644 (file)
@@ -35,7 +35,8 @@ m5.util.addToPath('../configs/common')
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 20
@@ -47,7 +48,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
index a10079ab8c39ee4d2b127a3961f7ca6814d438a6..0646f1c26fff0b2bfd8d866a5adcdf242b1b9314 100644 (file)
@@ -33,7 +33,8 @@ m5.util.addToPath('../configs/common')
 class MyCache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     tgts_per_mshr = 5
 
index 2d3019dafb415c232575b9d0f1254a4b1e08ee19..c3e705705206ee0498258da140e7511ee3c4578f 100644 (file)
@@ -39,7 +39,8 @@ mem_size = '128MB'
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 20
@@ -51,7 +52,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -62,7 +64,8 @@ class L2(BaseCache):
 class PageTableWalkerCache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     size = '1kB'
     tgts_per_mshr = 12
@@ -73,7 +76,8 @@ class PageTableWalkerCache(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index f0d168c1aa8008a60ef0f658ec6f1aedc7289dc0..61a2c077256854d32cbafa9a5b9929519ccacf3e 100644 (file)
@@ -39,7 +39,8 @@ mem_size = '128MB'
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -51,7 +52,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -62,7 +64,8 @@ class L2(BaseCache):
 class PageTableWalkerCache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     size = '1kB'
     tgts_per_mshr = 12
@@ -74,7 +77,8 @@ class PageTableWalkerCache(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index 4347b78d33c724b2049151e9c3e83025db033faf..896899e3090d6be5f26f5caf598d7248b8a11713 100644 (file)
@@ -40,7 +40,8 @@ mem_size = '128MB'
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -52,7 +53,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -63,7 +65,8 @@ class L2(BaseCache):
 class PageTableWalkerCache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     size = '1kB'
     tgts_per_mshr = 12
@@ -74,7 +77,8 @@ class PageTableWalkerCache(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index b263adee0ec4c830065a720fba61dd3596a75496..56990eb54155802e172978145c2797fc72e88ee1 100644 (file)
@@ -46,7 +46,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 20
@@ -58,7 +59,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -69,7 +71,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index e6ca2d7bdadfddf873055609dfff32c048aae82b..aa756c07fe7cfd035b23ef880bba4fc8cc78880a 100644 (file)
@@ -37,7 +37,8 @@ from Benchmarks import *
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 20
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index e231df9f2d5ea906fc9a656f94bf2202f75f46a4..3159bb104ff05353be6bd9efba42b83664ff824a 100644 (file)
@@ -37,7 +37,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 20
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index e3a73305c0987bf8861a4734feedab55ca641d6a..67d0c2f32274ffbc4255b38787dbb54d5c0b19f4 100644 (file)
@@ -37,7 +37,8 @@ from Benchmarks import *
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index fdfac1cc68e88b985899d74b38d234fa5cecc3c1..b6a77e38e188a5eb62c686e272834933f20deb89 100644 (file)
@@ -36,7 +36,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -48,7 +49,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -59,7 +61,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index 825b67d05657d15b6e23ca5f8667fa655eaaf2d4..939602fb5104fe03e7f87132aa4ad3da2de371dc 100644 (file)
@@ -37,7 +37,8 @@ from Benchmarks import *
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index 786b42e20c37b50129df124d9903582be63b5018..5ed97fdef6f95b945466f12e5381f01284cdc538 100644 (file)
@@ -37,7 +37,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index 8161a93f247b5c936c0cfa83b0b81fc7163f5b17..6c86eff2db07ddc6f567b43db5de581386874a6c 100644 (file)
@@ -34,7 +34,8 @@ from m5.objects import *
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -46,7 +47,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
index 2a4075624e14deac5d118a2ab20beaa378b5fdab..559cf807a66573531926f3723bbe9d41d50f9cb8 100644 (file)
@@ -34,7 +34,8 @@ from m5.objects import *
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -46,7 +47,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
index 33d03f6cfae18d0943017b2befc07f415e541d40..cb40ca5c3aaf582f0585bdafc353b6a4207c16a4 100644 (file)
@@ -32,7 +32,8 @@ from m5.objects import *
 class MyCache(BaseCache):
     assoc = 2
     block_size = 64
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     mshrs = 10
     tgts_per_mshr = 5
 
@@ -42,7 +43,7 @@ class MyL1Cache(MyCache):
 cpu = TimingSimpleCPU(cpu_id=0)
 cpu.addTwoLevelCacheHierarchy(MyL1Cache(size = '128kB'),
                               MyL1Cache(size = '256kB'),
-                              MyCache(size = '2MB', latency='10ns'))
+                              MyCache(size = '2MB', hit_latency='10ns', response_latency ='10ns'))
 system = System(cpu = cpu,
                 physmem = SimpleMemory(),
                 membus = CoherentBus())
index 6435e5a7870114621b5769923810c59917abd31e..65912b30e75b134e7493e96508cc730c5384878f 100644 (file)
@@ -37,7 +37,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index c4e69266d4988b6ed5fee3361902d6b7037a6ca7..a40c44c9bc6555a3ea1ea0ece6e05f981e50ca6d 100644 (file)
@@ -37,7 +37,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 20
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index dba8f9dd3f00ed0c5b59776515bcf05de7455e8e..4af63431da83a55fb1ae75d57ac8310a236851eb 100644 (file)
@@ -37,7 +37,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 20
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index 90f6c7f0be709dc2b1a6698e7c078f076ffb2e27..e08a1ee0d02312d8a334bcfb8d16626c6b2b4be6 100644 (file)
@@ -36,7 +36,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -48,7 +49,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -59,7 +61,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index 5065f3346afdc0f1239bddfacc6c8d8eab03399a..da89850803522f12300dd4ad10e1b882a915abb7 100644 (file)
@@ -36,7 +36,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -48,7 +49,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -59,7 +61,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index c9bcc59c79fe65786d7a359ba4fcdfa339b51202..71d231e5886e54798b492c6a2cc963bf8c01204a 100644 (file)
@@ -36,7 +36,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -48,7 +49,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -59,7 +61,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12
index eb62b20d802dec596ccb948aa9be47d79ebfaddb..d4ac5d0cf21e60512286ce469d4f6d23a62a9099 100644 (file)
@@ -37,7 +37,8 @@ import FSConfig
 # ====================
 
 class L1(BaseCache):
-    latency = '1ns'
+    hit_latency = '1ns'
+    response_latency = '1ns'
     block_size = 64
     mshrs = 4
     tgts_per_mshr = 8
@@ -49,7 +50,8 @@ class L1(BaseCache):
 
 class L2(BaseCache):
     block_size = 64
-    latency = '10ns'
+    hit_latency = '10ns'
+    response_latency = '10ns'
     mshrs = 92
     tgts_per_mshr = 16
     write_buffers = 8
@@ -60,7 +62,8 @@ class L2(BaseCache):
 class IOCache(BaseCache):
     assoc = 8
     block_size = 64
-    latency = '50ns'
+    hit_latency = '50ns'
+    response_latency = '50ns'
     mshrs = 20
     size = '1kB'
     tgts_per_mshr = 12