mem: Add clean evicts to improve snoop filter tracking
[gem5.git] / src / mem / cache / cache.hh
index 24a067eced2475edeb8a2e5a2c6f2edfea14b3dc..4c70d3a4040436812c05af586b602663249d0e87 100644 (file)
@@ -245,6 +245,11 @@ class Cache : public BaseCache
      */
     bool recvTimingReq(PacketPtr pkt);
 
+    /**
+     * Insert writebacks into the write buffer
+     */
+    void doWritebacks(PacketList& writebacks, Tick forward_time);
+
     /**
      * Handles a response (cache line fill/write ack) from the bus.
      * @param pkt The response packet
@@ -308,6 +313,13 @@ class Cache : public BaseCache
      */
     PacketPtr writebackBlk(CacheBlk *blk);
 
+    /**
+     * Create a CleanEvict request for the given block.
+     * @param blk The block to evict.
+     * @return The CleanEvict request for the block.
+     */
+    PacketPtr cleanEvictBlk(CacheBlk *blk);
+
 
     void memWriteback();
     void memInvalidate();
@@ -358,6 +370,12 @@ class Cache : public BaseCache
      */
     MSHR *getNextMSHR();
 
+    /**
+     * Send up a snoop request and find cached copies. If cached copies are
+     * found, set the BLOCK_CACHED flag in pkt.
+     */
+    bool isCachedAbove(const PacketPtr pkt) const;
+
     /**
      * Selects an outstanding request to service.  Called when the
      * cache gets granted the downstream bus in timing mode.