From 93e283abb348b81d086225f7861d94901c9b0888 Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Tue, 11 Dec 2012 10:05:54 -0600 Subject: ruby: add a prefetcher This patch adds a prefetcher for the ruby memory system. The prefetcher is based on a prefetcher implemented by others (well, I don't know who wrote the original). The prefetcher does stride-based prefetching, both unit and non-unit. It obseves the misses in the cache and trains on these. After the training period is over, the prefetcher starts issuing prefetch requests to the controller. --- src/mem/ruby/slicc_interface/AbstractController.hh | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/mem/ruby/slicc_interface') diff --git a/src/mem/ruby/slicc_interface/AbstractController.hh b/src/mem/ruby/slicc_interface/AbstractController.hh index c5cb46f1e..9ab924608 100644 --- a/src/mem/ruby/slicc_interface/AbstractController.hh +++ b/src/mem/ruby/slicc_interface/AbstractController.hh @@ -78,6 +78,10 @@ class AbstractController : public SimObject, public Consumer //! The return value indicates the number of messages written with the //! data from the packet. virtual uint32_t functionalWriteBuffers(PacketPtr&) = 0; + + //! Function for enqueuing a prefetch request + virtual void enqueuePrefetch(const Address&, const RubyRequestType&) + { fatal("Prefetches not implemented!");} }; #endif // __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__ -- cgit v1.2.3