Make cache compression policy a runtime virtual thing
authorSteve Reinhardt <stever@eecs.umich.edu>
Sun, 3 Dec 2006 06:22:58 +0000 (22:22 -0800)
committerSteve Reinhardt <stever@eecs.umich.edu>
Sun, 3 Dec 2006 06:22:58 +0000 (22:22 -0800)
instead of a template policy.

--HG--
extra : convert_revision : 6a4ac7a189a950390a973fdfce94f56190de92db

src/base/compression/base.hh [new file with mode: 0644]
src/base/compression/lzss_compression.hh
src/base/compression/null_compression.hh
src/mem/cache/cache.cc
src/mem/cache/cache_builder.cc
src/mem/cache/miss/blocking_buffer.hh
src/mem/cache/prefetch/ghb_prefetcher.cc
src/mem/cache/prefetch/stride_prefetcher.cc

diff --git a/src/base/compression/base.hh b/src/base/compression/base.hh
new file mode 100644 (file)
index 0000000..8d1f8d6
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2003-2005 The Regents of The University of Michigan
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Erik Hallnor
+ *          Nathan Binkert
+ */
+
+#ifndef __BASE_COMPRESSION_BASE_HH__
+#define __BASE_COMPRESSION_BASE_HH__
+
+/**
+ * @file
+ * This file defines a base (abstract virtual) compression algorithm object.
+ */
+
+#include <inttypes.h>
+
+/**
+ * Abstract virtual compression algorithm object.
+ */
+class CompressionAlgorithm
+{
+  public:
+    virtual ~CompressionAlgorithm() {}
+
+    /**
+     * Uncompress the data, causes a fatal since no data should be compressed.
+     * @param dest The output buffer.
+     * @param src  The compressed data.
+     * @param size The number of bytes in src.
+     *
+     * @retval The size of the uncompressed data.
+     */
+    virtual int uncompress(uint8_t * dest, uint8_t *src, int size) = 0;
+
+    /**
+     * Compress the data, just returns the source data.
+     * @param dest The output buffer.
+     * @param src  The data to be compressed.
+     * @param size The number of bytes in src.
+     *
+     * @retval The size of the compressed data.
+     */
+    virtual int compress(uint8_t *dest, uint8_t *src, int size) = 0;
+};
+
+#endif //__BASE_COMPRESSION_BASE_HH__
index 35e4dcb3f319813f2c6c2805c6b7e3701df6fb24..a23d07ffd5e5431912ecd0180a7892b7d301115d 100644 (file)
  * LZSSCompression declarations.
  */
 
-#include "sim/host.hh" // for uint8_t
+#include "base/compression/base.hh"
 
 /**
  * Simple LZSS compression scheme.
  */
-class LZSSCompression
+class LZSSCompression : public CompressionAlgorithm
 {
     /**
      * Finds the longest substring for the given offset.
index 5a582d8287a8de7f878d605ac58deb86b72a65b5..ff110807a6e86ac46ca6e12590bf1eea4e0984bc 100644 (file)
  */
 
 #include "base/misc.hh" // for fatal()
-#include "sim/host.hh"
+#include "base/compression/base.hh"
 
 
 /**
  * A dummy compression class to use when no data compression is desired.
  */
-class NullCompression
+class NullCompression : public CompressionAlgorithm
 {
   public:
-    /**
-     * Uncompress the data, causes a fatal since no data should be compressed.
-     * @param dest The output buffer.
-     * @param src  The compressed data.
-     * @param size The number of bytes in src.
-     *
-     * @retval The size of the uncompressed data.
-     */
-    static int uncompress(uint8_t * dest, uint8_t *src, int size)
+    int uncompress(uint8_t * dest, uint8_t *src, int size)
     {
         fatal("Can't uncompress data");
     }
 
-    /**
-     * Compress the data, just returns the source data.
-     * @param dest The output buffer.
-     * @param src  The data to be compressed.
-     * @param size The number of bytes in src.
-     *
-     * @retval The size of the compressed data.
-     */
-
-    static int compress(uint8_t *dest, uint8_t *src, int size)
+    int compress(uint8_t *dest, uint8_t *src, int size)
     {
-        memcpy(dest,src,size);
-        return size;
+        fatal("Can't compress data");
     }
 };
 
index db66c096e65bd16c43826132069d4af123ff1b8c..54d1d151fd59fd0a26159423651841abbb6464d6 100644 (file)
@@ -37,7 +37,6 @@
  */
 
 #include "mem/config/cache.hh"
-#include "mem/config/compression.hh"
 
 #include "mem/cache/tags/cache_tags.hh"
 
 #include "mem/cache/tags/split_lifo.hh"
 #endif
 
-#include "base/compression/null_compression.hh"
-#if defined(USE_LZSS_COMPRESSION)
-#include "base/compression/lzss_compression.hh"
-#endif
-
 #include "mem/cache/miss/miss_queue.hh"
 #include "mem/cache/miss/blocking_buffer.hh"
 
 
 
 #if defined(USE_CACHE_FALRU)
-template class Cache<CacheTags<FALRU,NullCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<FALRU,NullCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<FALRU,NullCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<FALRU,NullCompression>, MissQueue, UniCoherence>;
-#if defined(USE_LZSS_COMPRESSION)
-template class Cache<CacheTags<FALRU,LZSSCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<FALRU,LZSSCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<FALRU,LZSSCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<FALRU,LZSSCompression>, MissQueue, UniCoherence>;
-#endif
+template class Cache<CacheTags<FALRU>, BlockingBuffer, SimpleCoherence>;
+template class Cache<CacheTags<FALRU>, BlockingBuffer, UniCoherence>;
+template class Cache<CacheTags<FALRU>, MissQueue, SimpleCoherence>;
+template class Cache<CacheTags<FALRU>, MissQueue, UniCoherence>;
 #endif
 
 #if defined(USE_CACHE_IIC)
-template class Cache<CacheTags<IIC,NullCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<IIC,NullCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<IIC,NullCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<IIC,NullCompression>, MissQueue, UniCoherence>;
-#if defined(USE_LZSS_COMPRESSION)
-template class Cache<CacheTags<IIC,LZSSCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<IIC,LZSSCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<IIC,LZSSCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<IIC,LZSSCompression>, MissQueue, UniCoherence>;
-#endif
+template class Cache<CacheTags<IIC>, BlockingBuffer, SimpleCoherence>;
+template class Cache<CacheTags<IIC>, BlockingBuffer, UniCoherence>;
+template class Cache<CacheTags<IIC>, MissQueue, SimpleCoherence>;
+template class Cache<CacheTags<IIC>, MissQueue, UniCoherence>;
 #endif
 
 #if defined(USE_CACHE_LRU)
-template class Cache<CacheTags<LRU,NullCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<LRU,NullCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<LRU,NullCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<LRU,NullCompression>, MissQueue, UniCoherence>;
-#if defined(USE_LZSS_COMPRESSION)
-template class Cache<CacheTags<LRU,LZSSCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<LRU,LZSSCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<LRU,LZSSCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<LRU,LZSSCompression>, MissQueue, UniCoherence>;
-#endif
+template class Cache<CacheTags<LRU>, BlockingBuffer, SimpleCoherence>;
+template class Cache<CacheTags<LRU>, BlockingBuffer, UniCoherence>;
+template class Cache<CacheTags<LRU>, MissQueue, SimpleCoherence>;
+template class Cache<CacheTags<LRU>, MissQueue, UniCoherence>;
 #endif
 
 #if defined(USE_CACHE_SPLIT)
-template class Cache<CacheTags<Split,NullCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<Split,NullCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<Split,NullCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<Split,NullCompression>, MissQueue, UniCoherence>;
-#if defined(USE_LZSS_COMPRESSION)
-template class Cache<CacheTags<Split,LZSSCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<Split,LZSSCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<Split,LZSSCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<Split,LZSSCompression>, MissQueue, UniCoherence>;
-#endif
+template class Cache<CacheTags<Split>, BlockingBuffer, SimpleCoherence>;
+template class Cache<CacheTags<Split>, BlockingBuffer, UniCoherence>;
+template class Cache<CacheTags<Split>, MissQueue, SimpleCoherence>;
+template class Cache<CacheTags<Split>, MissQueue, UniCoherence>;
 #endif
 
 #if defined(USE_CACHE_SPLIT_LIFO)
-template class Cache<CacheTags<SplitLIFO,NullCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<SplitLIFO,NullCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<SplitLIFO,NullCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<SplitLIFO,NullCompression>, MissQueue, UniCoherence>;
-#if defined(USE_LZSS_COMPRESSION)
-template class Cache<CacheTags<SplitLIFO,LZSSCompression>, BlockingBuffer, SimpleCoherence>;
-template class Cache<CacheTags<SplitLIFO,LZSSCompression>, BlockingBuffer, UniCoherence>;
-template class Cache<CacheTags<SplitLIFO,LZSSCompression>, MissQueue, SimpleCoherence>;
-template class Cache<CacheTags<SplitLIFO,LZSSCompression>, MissQueue, UniCoherence>;
-#endif
+template class Cache<CacheTags<SplitLIFO>, BlockingBuffer, SimpleCoherence>;
+template class Cache<CacheTags<SplitLIFO>, BlockingBuffer, UniCoherence>;
+template class Cache<CacheTags<SplitLIFO>, MissQueue, SimpleCoherence>;
+template class Cache<CacheTags<SplitLIFO>, MissQueue, UniCoherence>;
 #endif
 
 #endif //DOXYGEN_SHOULD_SKIP_THIS
index 03646ec2a74874dae91560b733522d31903a5aa5..7d4207ae12c938e5ca649b5105121afb5aa1abab 100644 (file)
@@ -37,7 +37,6 @@
 
 // Must be included first to determine which caches we want
 #include "mem/config/cache.hh"
-#include "mem/config/compression.hh"
 #include "mem/config/prefetch.hh"
 
 #include "mem/cache/base_cache.hh"
@@ -69,9 +68,7 @@
 
 // Compression Templates
 #include "base/compression/null_compression.hh"
-#if defined(USE_LZSS_COMPRESSION)
 #include "base/compression/lzss_compression.hh"
-#endif
 
 // CacheTags Templates
 #include "mem/cache/tags/cache_tags.hh"
@@ -211,77 +208,47 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(BaseCache)
 END_INIT_SIM_OBJECT_PARAMS(BaseCache)
 
 
-#define BUILD_CACHE(t, comp, b, c) do {                                        \
-        Prefetcher<CacheTags<t, comp>, b> *pf; \
+#define BUILD_CACHE(t, b, c) do {                                      \
+        Prefetcher<CacheTags<t>, b> *pf; \
         if (pf_policy == "tagged") {      \
-             BUILD_TAGGED_PREFETCHER(t, comp, b); \
+             BUILD_TAGGED_PREFETCHER(t, b); \
         }            \
         else if (pf_policy == "stride") {       \
-             BUILD_STRIDED_PREFETCHER(t, comp, b); \
+             BUILD_STRIDED_PREFETCHER(t, b); \
         } \
         else if (pf_policy == "ghb") {       \
-             BUILD_GHB_PREFETCHER(t, comp, b); \
+             BUILD_GHB_PREFETCHER(t, b); \
         } \
         else { \
-             BUILD_NULL_PREFETCHER(t, comp, b); \
+             BUILD_NULL_PREFETCHER(t, b); \
         } \
-        Cache<CacheTags<t, comp>, b, c>::Params params(tagStore, mq, coh, \
+        Cache<CacheTags<t>, b, c>::Params params(tagStore, mq, coh, \
                                                        base_params, \
-                                                       /*in_bus, out_bus,*/ pf,  \
+                                                       pf,  \
                                                        prefetch_access, hit_latency); \
-        Cache<CacheTags<t, comp>, b, c> *retval =                      \
-            new Cache<CacheTags<t, comp>, b, c>(getInstanceName(), /*hier,*/ \
-                                                params);               \
-/*     if (in_bus == NULL) {                                           \
-            retval->setSlaveInterface(new MemoryInterface<Cache<CacheTags<t, comp>, b, c> >(getInstanceName(), hier, retval, mem_trace)); \
-        } else {                                                       \
-            retval->setSlaveInterface(new SlaveInterface<Cache<CacheTags<t, comp>, b, c>, Bus>(getInstanceName(), hier, retval, in_bus, mem_trace)); \
-        }                                                              \
-        retval->setMasterInterface(new MasterInterface<Cache<CacheTags<t, comp>, b, c>, Bus>(getInstanceName(), hier, retval, out_bus)); \
-        out_bus->rangeChange();                                                \
-        return retval;                                                 \
-*/return retval;                                                          \
+        Cache<CacheTags<t>, b, c> *retval =                    \
+            new Cache<CacheTags<t>, b, c>(getInstanceName(), params);          \
+return retval;                                                          \
     } while (0)
 
 #define BUILD_CACHE_PANIC(x) do {                      \
         panic("%s not compiled into M5", x);           \
     } while (0)
 
-#if defined(USE_LZSS_COMPRESSION)
-#define BUILD_COMPRESSED_CACHE(TAGS, tags, b, c) do { \
-        if (compressed_bus || store_compressed){                       \
-            CacheTags<TAGS, LZSSCompression> *tagStore =               \
-                new CacheTags<TAGS, LZSSCompression>(tags,             \
-                                                     compression_latency, \
-                                                     true, store_compressed, \
-                                                     adaptive_compression,   \
-                                                     prefetch_miss); \
-            BUILD_CACHE(TAGS, LZSSCompression, b, c);                  \
-        } else {                                                       \
-            CacheTags<TAGS, NullCompression> *tagStore =               \
-                new CacheTags<TAGS, NullCompression>(tags,             \
-                                                     compression_latency, \
-                                                     true, store_compressed, \
-                                                     adaptive_compression,   \
-                                                     prefetch_miss); \
-            BUILD_CACHE(TAGS, NullCompression, b, c);                  \
-        }                                                              \
-    } while (0)
-#else
-#define BUILD_COMPRESSED_CACHE(TAGS, tags, b, c) do { \
-        if (compressed_bus || store_compressed){                       \
-            BUILD_CACHE_PANIC("compressed caches");                    \
+#define BUILD_COMPRESSED_CACHE(TAGS, tags, b, c)                       \
+    do {                                                               \
+        CompressionAlgorithm *compAlg;                                 \
+        if (compressed_bus || store_compressed) {                      \
+            compAlg = new LZSSCompression();                           \
         } else {                                                       \
-            CacheTags<TAGS, NullCompression> *tagStore =               \
-                new CacheTags<TAGS, NullCompression>(tags,             \
-                                                      compression_latency, \
-                                                      true, store_compressed, \
-                                                      adaptive_compression    \
-                                                      prefetch_miss); \
-            BUILD_CACHE(TAGS, NullCompression, b, c);                  \
+            compAlg = new NullCompression();                           \
         }                                                              \
+        CacheTags<TAGS> *tagStore =                                    \
+            new CacheTags<TAGS>(tags, compression_latency, true,       \
+                                store_compressed, adaptive_compression,        \
+                                compAlg, prefetch_miss);               \
+            BUILD_CACHE(TAGS, b, c);                                   \
     } while (0)
-#endif
 
 #if defined(USE_CACHE_FALRU)
 #define BUILD_FALRU_CACHE(b,c) do {                        \
@@ -359,8 +326,8 @@ END_INIT_SIM_OBJECT_PARAMS(BaseCache)
     } while (0)
 
 #if defined(USE_TAGGED)
-#define BUILD_TAGGED_PREFETCHER(t, comp, b) pf = new   \
-                TaggedPrefetcher<CacheTags<t, comp>, b>(prefetcher_size, \
+#define BUILD_TAGGED_PREFETCHER(t, b) pf = new   \
+                TaggedPrefetcher<CacheTags<t>, b>(prefetcher_size, \
                                                         !prefetch_past_page, \
                                                         prefetch_serial_squash, \
                                                         prefetch_cache_check_push, \
@@ -368,12 +335,12 @@ END_INIT_SIM_OBJECT_PARAMS(BaseCache)
                                                         prefetch_latency, \
                                                         prefetch_degree)
 #else
-#define BUILD_TAGGED_PREFETCHER(t, comp, b) BUILD_CACHE_PANIC("Tagged Prefetcher")
+#define BUILD_TAGGED_PREFETCHER(t, b) BUILD_CACHE_PANIC("Tagged Prefetcher")
 #endif
 
 #if defined(USE_STRIDED)
-#define BUILD_STRIDED_PREFETCHER(t, comp, b) pf = new  \
-                StridePrefetcher<CacheTags<t, comp>, b>(prefetcher_size, \
+#define BUILD_STRIDED_PREFETCHER(t, b) pf = new  \
+                StridePrefetcher<CacheTags<t>, b>(prefetcher_size, \
                                                         !prefetch_past_page, \
                                                         prefetch_serial_squash, \
                                                         prefetch_cache_check_push, \
@@ -382,12 +349,12 @@ END_INIT_SIM_OBJECT_PARAMS(BaseCache)
                                                         prefetch_degree, \
                                                         prefetch_use_cpu_id)
 #else
-#define BUILD_STRIDED_PREFETCHER(t, comp, b) BUILD_CACHE_PANIC("Stride Prefetcher")
+#define BUILD_STRIDED_PREFETCHER(t, b) BUILD_CACHE_PANIC("Stride Prefetcher")
 #endif
 
 #if defined(USE_GHB)
-#define BUILD_GHB_PREFETCHER(t, comp, b) pf = new  \
-                GHBPrefetcher<CacheTags<t, comp>, b>(prefetcher_size, \
+#define BUILD_GHB_PREFETCHER(t, b) pf = new  \
+                GHBPrefetcher<CacheTags<t>, b>(prefetcher_size, \
                                                      !prefetch_past_page, \
                                                      prefetch_serial_squash, \
                                                      prefetch_cache_check_push, \
@@ -396,12 +363,12 @@ END_INIT_SIM_OBJECT_PARAMS(BaseCache)
                                                      prefetch_degree, \
                                                      prefetch_use_cpu_id)
 #else
-#define BUILD_GHB_PREFETCHER(t, comp, b) BUILD_CACHE_PANIC("GHB Prefetcher")
+#define BUILD_GHB_PREFETCHER(t, b) BUILD_CACHE_PANIC("GHB Prefetcher")
 #endif
 
 #if defined(USE_TAGGED)
-#define BUILD_NULL_PREFETCHER(t, comp, b) pf = new  \
-                TaggedPrefetcher<CacheTags<t, comp>, b>(prefetcher_size, \
+#define BUILD_NULL_PREFETCHER(t, b) pf = new  \
+                TaggedPrefetcher<CacheTags<t>, b>(prefetcher_size, \
                                                         !prefetch_past_page, \
                                                         prefetch_serial_squash, \
                                                         prefetch_cache_check_push, \
@@ -409,7 +376,7 @@ END_INIT_SIM_OBJECT_PARAMS(BaseCache)
                                                         prefetch_latency, \
                                                         prefetch_degree)
 #else
-#define BUILD_NULL_PREFETCHER(t, comp, b) BUILD_CACHE_PANIC("NULL Prefetcher (uses Tagged)")
+#define BUILD_NULL_PREFETCHER(t, b) BUILD_CACHE_PANIC("NULL Prefetcher (uses Tagged)")
 #endif
 
 CREATE_SIM_OBJECT(BaseCache)
index 934a843a64be1ae29ab53459c9940f55d68f60c8..a952c688cd2f824537b32735e58b8bb2b6a6175b 100644 (file)
@@ -38,6 +38,7 @@
 
 #include <vector>
 
+#include "base/misc.hh" // for fatal()
 #include "mem/cache/miss/mshr.hh"
 #include "base/statistics.hh"
 
index 247ec6e8bb53fa784ed74e16d63b0bd92d6453fd..dd1b8aee4c72f4ade58b2109b83c3762e4048919 100644 (file)
@@ -38,8 +38,6 @@
 
 #include "mem/cache/tags/lru.hh"
 
-#include "base/compression/null_compression.hh"
-
 #include "mem/cache/miss/miss_queue.hh"
 #include "mem/cache/miss/blocking_buffer.hh"
 
@@ -48,7 +46,7 @@
 // Template Instantiations
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-template class GHBPrefetcher<CacheTags<LRU,NullCompression>, MissQueue>;
-template class GHBPrefetcher<CacheTags<LRU,NullCompression>, BlockingBuffer>;
+template class GHBPrefetcher<CacheTags<LRU>, MissQueue>;
+template class GHBPrefetcher<CacheTags<LRU>, BlockingBuffer>;
 
 #endif //DOXYGEN_SHOULD_SKIP_THIS
index 93a09646899714e4ef3b2fc74a6e3d98cf0b3e62..c3b428dabcd6be772165d713871b5d4eb6119985 100644 (file)
@@ -38,8 +38,6 @@
 
 #include "mem/cache/tags/lru.hh"
 
-#include "base/compression/null_compression.hh"
-
 #include "mem/cache/miss/miss_queue.hh"
 #include "mem/cache/miss/blocking_buffer.hh"
 
@@ -48,7 +46,7 @@
 // Template Instantiations
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-template class StridePrefetcher<CacheTags<LRU,NullCompression>, MissQueue>;
-template class StridePrefetcher<CacheTags<LRU,NullCompression>, BlockingBuffer>;
+template class StridePrefetcher<CacheTags<LRU>, MissQueue>;
+template class StridePrefetcher<CacheTags<LRU>, BlockingBuffer>;
 
 #endif //DOXYGEN_SHOULD_SKIP_THIS