Go to the documentation of this file.
38 #ifndef __DEV_ARM_SMMU_V3_CACHES_HH__
39 #define __DEV_ARM_SMMU_V3_CACHES_HH__
52 #define WALK_CACHE_LEVELS 4
124 SMMUTLB(
unsigned numEntries,
unsigned _associativity,
126 const std::string &
name);
130 const Entry *
lookup(uint32_t sid, uint32_t ssid,
Addr va,
132 const Entry *
lookupAnyVA(uint32_t sid, uint32_t ssid,
150 size_t pickSetIdx(uint32_t sid, uint32_t ssid)
const;
174 ARMArchTLB(
unsigned numEntries,
unsigned _associativity,
181 void store(
const Entry &incoming);
217 IPACache(
unsigned numEntries,
unsigned _associativity,
221 const Entry *
lookup(
Addr ipa, uint16_t vmid,
bool updStats=
true);
222 void store(
const Entry &incoming);
265 ConfigCache(
unsigned numEntries,
unsigned _associativity,
269 const Entry *
lookup(uint32_t sid, uint32_t ssid,
bool updStats=
true);
270 void store(
const Entry &incoming);
282 size_t pickSetIdx(uint32_t sid, uint32_t ssid)
const;
308 WalkCache(
const std::array<unsigned, 2*WALK_CACHE_LEVELS> &_sizes,
309 unsigned _associativity,
const std::string &policy,
314 unsigned stage,
unsigned level,
bool updStats=
true);
315 void store(
const Entry &incoming);
318 const bool leaf_only);
348 std::array<unsigned, 2*WALK_CACHE_LEVELS>
sizes;
349 std::array<unsigned, 2*WALK_CACHE_LEVELS>
offsets;
352 unsigned stage,
unsigned level)
const;
355 unsigned stage,
unsigned level);
void invalidateIPAA(Addr ipa)
const Entry * lookup(uint32_t sid, uint32_t ssid, Addr va, bool updStats=true)
const Entry * lookup(Addr va, Addr vaMask, uint16_t asid, uint16_t vmid, unsigned stage, unsigned level, bool updStats=true)
void invalidateSSID(uint32_t sid, uint32_t ssid)
size_t pickSetIdx(Addr va, Addr vaMask, unsigned stage, unsigned level) const
const Entry * lookup(Addr ipa, uint16_t vmid, bool updStats=true)
SMMUv3BaseCache(const std::string &policy_name, uint32_t seed, Stats::Group *parent, const std::string &name)
IPACache(unsigned numEntries, unsigned _associativity, const std::string &policy, Stats::Group *parent)
void store(const Entry &incoming)
virtual ~SMMUv3BaseCache()
void invalidateIPA(Addr ipa, uint16_t vmid)
ARMArchTLB(unsigned numEntries, unsigned _associativity, const std::string &policy, Stats::Group *parent)
SMMUv3BaseCacheStats(Stats::Group *parent, const std::string &name)
WalkCacheStats(Stats::Group *parent)
ConfigCache(unsigned numEntries, unsigned _associativity, const std::string &policy, Stats::Group *parent)
void invalidateVMID(uint16_t vmid)
Stats::Scalar totalUpdates
Stats::Vector2d insertionsByStageLevel
void store(const Entry &incoming)
SMMUTLB(unsigned numEntries, unsigned _associativity, const std::string &policy, Stats::Group *parent, const std::string &name)
void store(const Entry &incoming)
size_t pickSetIdx(uint32_t sid, uint32_t ssid) const
Stats::Vector2d totalUpdatesByStageLevel
std::array< unsigned, 2 *WALK_CACHE_LEVELS > sizes
const Entry * lookup(Addr va, uint16_t asid, uint16_t vmid, bool updStats=true)
void invalidateSSID(uint32_t sid, uint32_t ssid)
void invalidateVA(Addr va, uint16_t asid, uint16_t vmid)
void invalidateVAA(Addr va, uint16_t vmid, const bool leaf_only)
This is a simple scalar statistic, like a counter.
void invalidateVAA(Addr va, uint16_t vmid)
void invalidateVA(Addr va, uint16_t asid, uint16_t vmid, const bool leaf_only)
void invalidateASID(uint16_t asid, uint16_t vmid)
WalkCache(const std::array< unsigned, 2 *WALK_CACHE_LEVELS > &_sizes, unsigned _associativity, const std::string &policy, Stats::Group *parent)
Stats::Vector2d totalLookupsByStageLevel
const Entry * lookup(uint32_t sid, uint32_t ssid, bool updStats=true)
void store(const Entry &incoming)
size_t pickEntryIdxToReplace(const Set &set)
Stats::Formula averageMisses
size_t pickSetIdx(Addr ipa, uint16_t vmid) const
size_t pickEntryIdxToReplace(const Set &set)
std::vector< Stats::Formula * > averageUpdatesByStageLevel
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
WalkCache::WalkCacheStats walkCacheStats
const std::string & name()
size_t pickEntryIdxToReplace(const Set &set)
void invalidateVMID(uint16_t vmid)
size_t pickEntryIdxToReplace(const Set &set, unsigned stage, unsigned level)
void invalidateASID(uint16_t asid, uint16_t vmid)
Stats::Formula averageUpdates
void invalidateSID(uint32_t sid)
void invalidateASID(uint16_t asid, uint16_t vmid)
A 2-Dimensional vecto of scalar stats.
SMMUv3BaseCache::SMMUv3BaseCacheStats baseCacheStats
Stats::Formula averageLookups
void store(const Entry &incoming, AllocPolicy alloc)
void invalidateSID(uint32_t sid)
static int decodePolicyName(const std::string &policy_name)
Stats::Formula averageHitRate
void invalidateVAA(Addr va, uint16_t vmid)
size_t pickEntryIdxToReplace(const Set &set, AllocPolicy alloc)
Stats::Scalar totalLookups
std::array< unsigned, 2 *WALK_CACHE_LEVELS > offsets
void invalidateVMID(uint16_t vmid)
std::vector< Stats::Formula * > averageHitRateByStageLevel
size_t pickSetIdx(Addr va, uint16_t asid, uint16_t vmid) const
std::vector< Stats::Formula * > averageMissesByStageLevel
Stats::Scalar totalMisses
void invalidateVA(Addr va, uint16_t asid, uint16_t vmid)
size_t pickSetIdx(uint32_t sid, uint32_t ssid) const
Stats::Vector2d totalMissesByStageLevel
std::vector< Stats::Formula * > averageLookupsByStageLevel
@ SMMU_CACHE_REPL_ROUND_ROBIN
void invalidateVMID(uint16_t vmid)
const Entry * lookupAnyVA(uint32_t sid, uint32_t ssid, bool updStats=true)
Generated on Tue Mar 23 2021 19:41:26 for gem5 by doxygen 1.8.17