From b4c472945a6313e1ae1f4ba01477360c372dea6b Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Tue, 12 Apr 2016 09:10:13 -0500 Subject: mem-cache: Add multi-prefetcher adaptor This patch adds a meta-prefetcher that enables gem5's cache models to connect to multiple prefetchers. Sub-prefetchers still use the probes-based interface and training can be controlled independently. However, when the cache requests a prefetch packet, the adaptor traverses the priority list of prefetchers and uses the first prefetcher that is able to generate a prefetch. Kudos to Mitch Hayenga for the original version of this patch. Change-Id: I25569a834997e5404c7183ec995d212912c5dcdf Signed-off-by: Andreas Sandberg Reviewed-by: Nikos Nikoleris Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18868 Reviewed-by: Daniel Carvalho Maintainer: Nikos Nikoleris Tested-by: kokoro --- src/mem/cache/prefetch/Prefetcher.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/mem/cache/prefetch/Prefetcher.py') diff --git a/src/mem/cache/prefetch/Prefetcher.py b/src/mem/cache/prefetch/Prefetcher.py index b933b4953..3810b6afd 100644 --- a/src/mem/cache/prefetch/Prefetcher.py +++ b/src/mem/cache/prefetch/Prefetcher.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012, 2014 ARM Limited +# Copyright (c) 2012, 2014, 2019 ARM Limited # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -99,6 +99,13 @@ class BasePrefetcher(ClockedObject): raise TypeError("probeNames must have at least one element") self.addEvent(HWPProbeEvent(self, simObj, *probeNames)) +class MultiPrefetcher(BasePrefetcher): + type = 'MultiPrefetcher' + cxx_class = 'MultiPrefetcher' + cxx_header = 'mem/cache/prefetch/multi.hh' + + prefetchers = VectorParam.BasePrefetcher([], "Array of prefetchers") + class QueuedPrefetcher(BasePrefetcher): type = "QueuedPrefetcher" abstract = True -- cgit v1.2.3