mem-cache: Remove AssociativeSet data type
As detailed by a previous commit, AssociativeSet is not needed anymore. The class is effectively the same as AssociativeCache Change-Id: I24bfb98fbf0826c0a2ea6ede585576286f093318 Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
This commit is contained in:
1
src/mem/cache/compressors/frequent_values.cc
vendored
1
src/mem/cache/compressors/frequent_values.cc
vendored
@@ -36,7 +36,6 @@
|
||||
#include "base/intmath.hh"
|
||||
#include "base/logging.hh"
|
||||
#include "debug/CacheComp.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/FrequentValuesCompressor.hh"
|
||||
|
||||
namespace gem5
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include "mem/cache/prefetch/access_map_pattern_matching.hh"
|
||||
|
||||
#include "debug/HWPrefetch.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/AMPMPrefetcher.hh"
|
||||
#include "params/AccessMapPatternMatching.hh"
|
||||
|
||||
|
||||
@@ -38,8 +38,9 @@
|
||||
#ifndef __MEM_CACHE_PREFETCH_ACCESS_MAP_PATTERN_MATCHING_HH__
|
||||
#define __MEM_CACHE_PREFETCH_ACCESS_MAP_PATTERN_MATCHING_HH__
|
||||
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "mem/cache/prefetch/queued.hh"
|
||||
#include "mem/cache/tags/tagged_entry.hh"
|
||||
#include "mem/packet.hh"
|
||||
#include "sim/clocked_object.hh"
|
||||
|
||||
@@ -109,7 +110,7 @@ class AccessMapPatternMatching : public ClockedObject
|
||||
}
|
||||
};
|
||||
/** Access map table */
|
||||
AssociativeSet<AccessMapEntry> accessMapTable;
|
||||
AssociativeCache<AccessMapEntry> accessMapTable;
|
||||
|
||||
/**
|
||||
* Number of good prefetches
|
||||
|
||||
93
src/mem/cache/prefetch/associative_set.hh
vendored
93
src/mem/cache/prefetch/associative_set.hh
vendored
@@ -1,93 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2024 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) 2018 Metempsy Technology Consulting
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef __CACHE_PREFETCH_ASSOCIATIVE_SET_HH__
|
||||
#define __CACHE_PREFETCH_ASSOCIATIVE_SET_HH__
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "mem/cache/replacement_policies/base.hh"
|
||||
#include "mem/cache/tags/indexing_policies/base.hh"
|
||||
#include "mem/cache/tags/tagged_entry.hh"
|
||||
|
||||
namespace gem5
|
||||
{
|
||||
|
||||
/**
|
||||
* Associative container based on the previosuly defined Entry type
|
||||
* Each element is indexed by a key of type Addr, an additional
|
||||
* bool value is used as an additional tag data of the entry.
|
||||
*/
|
||||
template<class Entry>
|
||||
class AssociativeSet : public AssociativeCache<Entry>
|
||||
{
|
||||
static_assert(std::is_base_of_v<TaggedEntry, Entry>,
|
||||
"Entry must derive from TaggedEntry");
|
||||
|
||||
public:
|
||||
/**
|
||||
* Public constructor
|
||||
* @param name Name of the cache
|
||||
* @param num_entries total number of entries of the container, the number
|
||||
* of sets can be calculated dividing this balue by the 'assoc' value
|
||||
* @param assoc number of elements in each associative set
|
||||
* @param rpl_policy replacement policy
|
||||
* @param idx_policy indexing policy
|
||||
* @param init_val initial value of the elements of the set
|
||||
*/
|
||||
AssociativeSet(const char *name, const size_t num_entries,
|
||||
const size_t associativity_,
|
||||
replacement_policy::Base *repl_policy,
|
||||
typename Entry::IndexingPolicy *indexing_policy,
|
||||
Entry const &init_val = Entry());
|
||||
|
||||
private:
|
||||
// The following APIs are excluded since they lack the secure bit
|
||||
using AssociativeCache<Entry>::findEntry;
|
||||
using AssociativeCache<Entry>::insertEntry;
|
||||
using AssociativeCache<Entry>::getPossibleEntries;
|
||||
using AssociativeCache<Entry>::replPolicy;
|
||||
using AssociativeCache<Entry>::indexingPolicy;
|
||||
};
|
||||
|
||||
} // namespace gem5
|
||||
|
||||
#endif//__CACHE_PREFETCH_ASSOCIATIVE_SET_HH__
|
||||
64
src/mem/cache/prefetch/associative_set_impl.hh
vendored
64
src/mem/cache/prefetch/associative_set_impl.hh
vendored
@@ -1,64 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2024 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) 2018 Metempsy Technology Consulting
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef __CACHE_PREFETCH_ASSOCIATIVE_SET_IMPL_HH__
|
||||
#define __CACHE_PREFETCH_ASSOCIATIVE_SET_IMPL_HH__
|
||||
|
||||
#include "base/intmath.hh"
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
|
||||
namespace gem5
|
||||
{
|
||||
|
||||
template <class Entry>
|
||||
AssociativeSet<Entry>::AssociativeSet(const char *name,
|
||||
const size_t num_entries,
|
||||
const size_t associativity_,
|
||||
replacement_policy::Base *repl_policy,
|
||||
typename Entry::IndexingPolicy *indexing_policy,
|
||||
Entry const &init_val)
|
||||
: AssociativeCache<Entry>(name, num_entries, associativity_,
|
||||
repl_policy, indexing_policy, init_val)
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace gem5
|
||||
|
||||
#endif//__CACHE_PREFETCH_ASSOCIATIVE_SET_IMPL_HH__
|
||||
@@ -29,7 +29,6 @@
|
||||
#include "mem/cache/prefetch/delta_correlating_prediction_tables.hh"
|
||||
|
||||
#include "debug/HWPrefetch.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/DCPTPrefetcher.hh"
|
||||
#include "params/DeltaCorrelatingPredictionTables.hh"
|
||||
|
||||
|
||||
1
src/mem/cache/prefetch/indirect_memory.cc
vendored
1
src/mem/cache/prefetch/indirect_memory.cc
vendored
@@ -29,7 +29,6 @@
|
||||
#include "mem/cache/prefetch/indirect_memory.hh"
|
||||
|
||||
#include "mem/cache/base.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/IndirectMemoryPrefetcher.hh"
|
||||
|
||||
namespace gem5
|
||||
|
||||
5
src/mem/cache/prefetch/indirect_memory.hh
vendored
5
src/mem/cache/prefetch/indirect_memory.hh
vendored
@@ -41,9 +41,10 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "base/sat_counter.hh"
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
#include "mem/cache/prefetch/queued.hh"
|
||||
#include "mem/cache/tags/tagged_entry.hh"
|
||||
|
||||
namespace gem5
|
||||
{
|
||||
@@ -122,7 +123,7 @@ class IndirectMemory : public Queued
|
||||
}
|
||||
};
|
||||
/** Prefetch table */
|
||||
AssociativeSet<PrefetchTableEntry> prefetchTable;
|
||||
AssociativeCache<PrefetchTableEntry> prefetchTable;
|
||||
|
||||
/** Indirect Pattern Detector entrt */
|
||||
struct IndirectPatternDetectorEntry : public TaggedEntry
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include "mem/cache/prefetch/irregular_stream_buffer.hh"
|
||||
|
||||
#include "debug/HWPrefetch.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/IrregularStreamBufferPrefetcher.hh"
|
||||
|
||||
namespace gem5
|
||||
|
||||
@@ -38,10 +38,11 @@
|
||||
#ifndef __MEM_CACHE_PREFETCH_IRREGULAR_STREAM_BUFFER_HH__
|
||||
#define __MEM_CACHE_PREFETCH_IRREGULAR_STREAM_BUFFER_HH__
|
||||
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "base/callback.hh"
|
||||
#include "base/sat_counter.hh"
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
#include "mem/cache/prefetch/queued.hh"
|
||||
#include "mem/cache/tags/tagged_entry.hh"
|
||||
|
||||
namespace gem5
|
||||
{
|
||||
@@ -73,7 +74,7 @@ class IrregularStreamBuffer : public Queued
|
||||
bool lastAddressSecure;
|
||||
};
|
||||
/** Map of PCs to Training unit entries */
|
||||
AssociativeSet<TrainingUnitEntry> trainingUnit;
|
||||
AssociativeCache<TrainingUnitEntry> trainingUnit;
|
||||
|
||||
/** Address Mapping entry, holds an address and a confidence counter */
|
||||
struct AddressMapping
|
||||
@@ -109,9 +110,9 @@ class IrregularStreamBuffer : public Queued
|
||||
};
|
||||
|
||||
/** Physical-to-Structured mappings table */
|
||||
AssociativeSet<AddressMappingEntry> psAddressMappingCache;
|
||||
AssociativeCache<AddressMappingEntry> psAddressMappingCache;
|
||||
/** Structured-to-Physical mappings table */
|
||||
AssociativeSet<AddressMappingEntry> spAddressMappingCache;
|
||||
AssociativeCache<AddressMappingEntry> spAddressMappingCache;
|
||||
/**
|
||||
* Counter of allocated structural addresses, increased by "chunkSize",
|
||||
* each time a new structured address is allocated
|
||||
|
||||
1
src/mem/cache/prefetch/pif.cc
vendored
1
src/mem/cache/prefetch/pif.cc
vendored
@@ -31,7 +31,6 @@
|
||||
#include <utility>
|
||||
|
||||
#include "debug/HWPrefetch.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/PIFPrefetcher.hh"
|
||||
|
||||
namespace gem5
|
||||
|
||||
5
src/mem/cache/prefetch/pif.hh
vendored
5
src/mem/cache/prefetch/pif.hh
vendored
@@ -40,9 +40,10 @@
|
||||
#include <deque>
|
||||
#include <vector>
|
||||
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "base/circular_queue.hh"
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
#include "mem/cache/prefetch/queued.hh"
|
||||
#include "mem/cache/tags/tagged_entry.hh"
|
||||
|
||||
namespace gem5
|
||||
{
|
||||
@@ -144,7 +145,7 @@ class PIF : public Queued
|
||||
* The index table is a small cache-like structure that facilitates
|
||||
* fast search of the history buffer.
|
||||
*/
|
||||
AssociativeSet<IndexEntry> index;
|
||||
AssociativeCache<IndexEntry> index;
|
||||
|
||||
/**
|
||||
* A Stream Address Buffer (SAB) tracks a window of consecutive
|
||||
|
||||
1
src/mem/cache/prefetch/signature_path.cc
vendored
1
src/mem/cache/prefetch/signature_path.cc
vendored
@@ -32,7 +32,6 @@
|
||||
#include <climits>
|
||||
|
||||
#include "debug/HWPrefetch.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/SignaturePathPrefetcher.hh"
|
||||
|
||||
namespace gem5
|
||||
|
||||
7
src/mem/cache/prefetch/signature_path.hh
vendored
7
src/mem/cache/prefetch/signature_path.hh
vendored
@@ -40,9 +40,10 @@
|
||||
#ifndef __MEM_CACHE_PREFETCH_SIGNATURE_PATH_HH__
|
||||
#define __MEM_CACHE_PREFETCH_SIGNATURE_PATH_HH__
|
||||
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "base/sat_counter.hh"
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
#include "mem/cache/prefetch/queued.hh"
|
||||
#include "mem/cache/tags/tagged_entry.hh"
|
||||
#include "mem/packet.hh"
|
||||
|
||||
namespace gem5
|
||||
@@ -84,7 +85,7 @@ class SignaturePath : public Queued
|
||||
{}
|
||||
};
|
||||
/** Signature table */
|
||||
AssociativeSet<SignatureEntry> signatureTable;
|
||||
AssociativeCache<SignatureEntry> signatureTable;
|
||||
|
||||
/** A stride entry with its counter */
|
||||
struct PatternStrideEntry
|
||||
@@ -150,7 +151,7 @@ class SignaturePath : public Queued
|
||||
};
|
||||
|
||||
/** Pattern table */
|
||||
AssociativeSet<PatternEntry> patternTable;
|
||||
AssociativeCache<PatternEntry> patternTable;
|
||||
|
||||
/**
|
||||
* Generates a new signature from an existing one and a new stride
|
||||
|
||||
1
src/mem/cache/prefetch/signature_path_v2.cc
vendored
1
src/mem/cache/prefetch/signature_path_v2.cc
vendored
@@ -43,7 +43,6 @@
|
||||
#include <cassert>
|
||||
|
||||
#include "debug/HWPrefetch.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/SignaturePathPrefetcherV2.hh"
|
||||
|
||||
namespace gem5
|
||||
|
||||
4
src/mem/cache/prefetch/signature_path_v2.hh
vendored
4
src/mem/cache/prefetch/signature_path_v2.hh
vendored
@@ -41,7 +41,7 @@
|
||||
#ifndef __MEM_CACHE_PREFETCH_SIGNATURE_PATH_V2_HH__
|
||||
#define __MEM_CACHE_PREFETCH_SIGNATURE_PATH_V2_HH__
|
||||
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "mem/cache/prefetch/signature_path.hh"
|
||||
#include "mem/packet.hh"
|
||||
|
||||
@@ -68,7 +68,7 @@ class SignaturePathV2 : public SignaturePath
|
||||
{}
|
||||
};
|
||||
/** Global History Register */
|
||||
AssociativeSet<GlobalHistoryEntry> globalHistoryRegister;
|
||||
AssociativeCache<GlobalHistoryEntry> globalHistoryRegister;
|
||||
|
||||
double calculateLookaheadConfidence(PatternEntry const &sig,
|
||||
PatternStrideEntry const &lookahead) const override;
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include "mem/cache/prefetch/spatio_temporal_memory_streaming.hh"
|
||||
|
||||
#include "debug/HWPrefetch.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "params/STeMSPrefetcher.hh"
|
||||
|
||||
namespace gem5
|
||||
|
||||
@@ -43,10 +43,11 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "base/circular_queue.hh"
|
||||
#include "base/sat_counter.hh"
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
#include "mem/cache/prefetch/queued.hh"
|
||||
#include "mem/cache/tags/tagged_entry.hh"
|
||||
|
||||
namespace gem5
|
||||
{
|
||||
@@ -154,9 +155,9 @@ class STeMS : public Queued
|
||||
};
|
||||
|
||||
/** Active Generation Table (AGT) */
|
||||
AssociativeSet<ActiveGenerationTableEntry> activeGenerationTable;
|
||||
AssociativeCache<ActiveGenerationTableEntry> activeGenerationTable;
|
||||
/** Pattern Sequence Table (PST) */
|
||||
AssociativeSet<ActiveGenerationTableEntry> patternSequenceTable;
|
||||
AssociativeCache<ActiveGenerationTableEntry> patternSequenceTable;
|
||||
|
||||
/** Data type of the Region Miss Order Buffer entry */
|
||||
struct RegionMissOrderBufferEntry
|
||||
|
||||
1
src/mem/cache/prefetch/stride.cc
vendored
1
src/mem/cache/prefetch/stride.cc
vendored
@@ -53,7 +53,6 @@
|
||||
#include "base/random.hh"
|
||||
#include "base/trace.hh"
|
||||
#include "debug/HWPrefetch.hh"
|
||||
#include "mem/cache/prefetch/associative_set_impl.hh"
|
||||
#include "mem/cache/replacement_policies/base.hh"
|
||||
#include "params/StridePrefetcher.hh"
|
||||
|
||||
|
||||
5
src/mem/cache/prefetch/stride.hh
vendored
5
src/mem/cache/prefetch/stride.hh
vendored
@@ -51,12 +51,13 @@
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
#include "base/cache/associative_cache.hh"
|
||||
#include "base/sat_counter.hh"
|
||||
#include "base/types.hh"
|
||||
#include "mem/cache/prefetch/associative_set.hh"
|
||||
#include "mem/cache/prefetch/queued.hh"
|
||||
#include "mem/cache/replacement_policies/replaceable_entry.hh"
|
||||
#include "mem/cache/tags/indexing_policies/set_associative.hh"
|
||||
#include "mem/cache/tags/tagged_entry.hh"
|
||||
#include "mem/packet.hh"
|
||||
#include "params/StridePrefetcherHashedSetAssociative.hh"
|
||||
|
||||
@@ -144,7 +145,7 @@ class Stride : public Queued
|
||||
int stride;
|
||||
SatCounter8 confidence;
|
||||
};
|
||||
typedef AssociativeSet<StrideEntry> PCTable;
|
||||
using PCTable = AssociativeCache<StrideEntry>;
|
||||
std::unordered_map<int, std::unique_ptr<PCTable>> pcTables;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user