From 3e5bf0c922a88736915f0ea49cf0597d79b8ada1 Mon Sep 17 00:00:00 2001 From: Mitch Hayenga Date: Sat, 20 Sep 2014 17:17:44 -0400 Subject: mem: Remove the GHB prefetcher from the source tree There are two primary issues with this code which make it deserving of deletion. 1) GHB is a way to structure a prefetcher, not a definitive type of prefetcher 2) This prefetcher isn't even structured like a GHB prefetcher. It's basically a worse version of the stride prefetcher. It primarily serves to confuse new gem5 users and most functionality is already present in the stride prefetcher. --- src/mem/cache/prefetch/Prefetcher.py | 5 -- src/mem/cache/prefetch/SConscript | 1 - src/mem/cache/prefetch/ghb.cc | 97 ------------------------------------ src/mem/cache/prefetch/ghb.hh | 77 ---------------------------- 4 files changed, 180 deletions(-) delete mode 100644 src/mem/cache/prefetch/ghb.cc delete mode 100644 src/mem/cache/prefetch/ghb.hh (limited to 'src/mem') diff --git a/src/mem/cache/prefetch/Prefetcher.py b/src/mem/cache/prefetch/Prefetcher.py index c4b6b8845..6bb4e52d3 100644 --- a/src/mem/cache/prefetch/Prefetcher.py +++ b/src/mem/cache/prefetch/Prefetcher.py @@ -69,11 +69,6 @@ class BasePrefetcher(ClockedObject): "Perform a tagged prefetch for instruction fetches always") sys = Param.System(Parent.any, "System this device belongs to") -class GHBPrefetcher(BasePrefetcher): - type = 'GHBPrefetcher' - cxx_class = 'GHBPrefetcher' - cxx_header = "mem/cache/prefetch/ghb.hh" - class StridePrefetcher(BasePrefetcher): type = 'StridePrefetcher' cxx_class = 'StridePrefetcher' diff --git a/src/mem/cache/prefetch/SConscript b/src/mem/cache/prefetch/SConscript index 61291f715..cbb6c7a7a 100644 --- a/src/mem/cache/prefetch/SConscript +++ b/src/mem/cache/prefetch/SConscript @@ -33,7 +33,6 @@ Import('*') SimObject('Prefetcher.py') Source('base.cc') -Source('ghb.cc') Source('stride.cc') Source('tagged.cc') diff --git a/src/mem/cache/prefetch/ghb.cc b/src/mem/cache/prefetch/ghb.cc deleted file mode 100644 index e153c777d..000000000 --- a/src/mem/cache/prefetch/ghb.cc +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2012-2013 ARM Limited - * All rights reserved - * - * The license below extends only to copyright in the software and shall - * not be construed as granting a license to any other intellectual - * property including but not limited to intellectual property relating - * to a hardware implementation of the functionality of the software - * licensed hereunder. You may use the software subject to the license - * terms below provided that you ensure that this notice is replicated - * unmodified and in its entirety in all distributions of the software, - * modified or unmodified, in source code or in binary form. - * - * Copyright (c) 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: Ron Dreslinski - * Steve Reinhardt - */ - -/** - * @file - * GHB Prefetcher implementation. - */ - -#include "base/trace.hh" -#include "debug/HWPrefetch.hh" -#include "mem/cache/prefetch/ghb.hh" - -void -GHBPrefetcher::calculatePrefetch(PacketPtr &pkt, std::list &addresses, - std::list &delays) -{ - Addr blk_addr = pkt->getAddr() & ~(Addr)(blkSize-1); - bool is_secure = pkt->isSecure(); - int master_id = useMasterId ? pkt->req->masterId() : 0; - assert(master_id < Max_Masters); - - bool same_sec_state = true; - // Avoid activating prefetch if the security state is not - // consistent across requests - if (is_secure != lastMissIsSecure[master_id] || - is_secure != secondLastMissIsSecure[master_id]) - same_sec_state = false; - - int new_stride = blk_addr - lastMissAddr[master_id]; - int old_stride = lastMissAddr[master_id] - secondLastMissAddr[master_id]; - - secondLastMissAddr[master_id] = lastMissAddr[master_id]; - secondLastMissIsSecure[master_id] = lastMissIsSecure[master_id]; - lastMissAddr[master_id] = blk_addr; - lastMissIsSecure[master_id] = is_secure; - - if (same_sec_state && new_stride == old_stride) { - for (int d = 1; d <= degree; d++) { - Addr new_addr = blk_addr + d * new_stride; - if (pageStop && !samePage(blk_addr, new_addr)) { - // Spanned the page, so now stop - pfSpanPage += degree - d + 1; - return; - } else { - addresses.push_back(new_addr); - delays.push_back(latency); - } - } - } -} - - -GHBPrefetcher* -GHBPrefetcherParams::create() -{ - return new GHBPrefetcher(this); -} diff --git a/src/mem/cache/prefetch/ghb.hh b/src/mem/cache/prefetch/ghb.hh deleted file mode 100644 index 9ddff1160..000000000 --- a/src/mem/cache/prefetch/ghb.hh +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2012-2013 ARM Limited - * All rights reserved - * - * The license below extends only to copyright in the software and shall - * not be construed as granting a license to any other intellectual - * property including but not limited to intellectual property relating - * to a hardware implementation of the functionality of the software - * licensed hereunder. You may use the software subject to the license - * terms below provided that you ensure that this notice is replicated - * unmodified and in its entirety in all distributions of the software, - * modified or unmodified, in source code or in binary form. - * - * Copyright (c) 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: Ron Dreslinski - */ - -/** - * @file - * Describes a ghb prefetcher. - */ - -#ifndef __MEM_CACHE_PREFETCH_GHB_PREFETCHER_HH__ -#define __MEM_CACHE_PREFETCH_GHB_PREFETCHER_HH__ - -#include "mem/cache/prefetch/base.hh" -#include "params/GHBPrefetcher.hh" - -class GHBPrefetcher : public BasePrefetcher -{ - protected: - - static const int Max_Masters = 64; - - Addr secondLastMissAddr[Max_Masters]; - bool secondLastMissIsSecure[Max_Masters]; - Addr lastMissAddr[Max_Masters]; - bool lastMissIsSecure[Max_Masters]; - - public: - GHBPrefetcher(const Params *p) - : BasePrefetcher(p) - { - } - - ~GHBPrefetcher() {} - - void calculatePrefetch(PacketPtr &pkt, std::list &addresses, - std::list &delays); -}; - -#endif // __MEM_CACHE_PREFETCH_GHB_PREFETCHER_HH__ -- cgit v1.2.3