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
75 const std::string &
name);
130 SMMUTLB(
unsigned numEntries,
unsigned _associativity,
132 const std::string &
name);
156 size_t pickSetIdx(uint32_t sid, uint32_t ssid)
const;
180 ARMArchTLB(
unsigned numEntries,
unsigned _associativity,
223 IPACache(
unsigned numEntries,
unsigned _associativity,
271 ConfigCache(
unsigned numEntries,
unsigned _associativity,
275 const Entry *
lookup(uint32_t sid, uint32_t ssid,
bool updStats=
true);
288 size_t pickSetIdx(uint32_t sid, uint32_t ssid)
const;
314 WalkCache(
const std::array<unsigned, 2*WALK_CACHE_LEVELS> &_sizes,
315 unsigned _associativity,
const std::string &policy,
320 unsigned stage,
unsigned level,
bool updStats=
true);
324 const bool leaf_only);
354 std::array<unsigned, 2*WALK_CACHE_LEVELS>
sizes;
355 std::array<unsigned, 2*WALK_CACHE_LEVELS>
offsets;
358 unsigned stage,
unsigned level)
const;
361 unsigned stage,
unsigned level);
This is a simple scalar statistic, like a counter.
WalkCacheStats(statistics::Group *parent)
const Entry * lookup(uint32_t sid, uint32_t ssid, bool updStats=true)
statistics::Formula averageMisses
void invalidateVMID(uint16_t vmid)
SMMUv3BaseCacheStats(statistics::Group *parent, const std::string &name)
const Entry * lookup(Addr va, Addr vaMask, uint16_t asid, uint16_t vmid, unsigned stage, unsigned level, bool updStats=true)
statistics::Formula averageUpdates
virtual ~SMMUv3BaseCache()
IPACache(unsigned numEntries, unsigned _associativity, const std::string &policy, statistics::Group *parent)
std::array< unsigned, 2 *WALK_CACHE_LEVELS > offsets
void store(const Entry &incoming)
size_t pickSetIdx(uint32_t sid, uint32_t ssid) const
void store(const Entry &incoming)
statistics::Vector2d totalMissesByStageLevel
void invalidateSID(uint32_t sid)
SMMUv3BaseCache(const std::string &policy_name, uint32_t seed, statistics::Group *parent, const std::string &name)
WalkCache(const std::array< unsigned, 2 *WALK_CACHE_LEVELS > &_sizes, unsigned _associativity, const std::string &policy, statistics::Group *parent)
std::vector< statistics::Formula * > averageLookupsByStageLevel
void invalidateIPA(Addr ipa, uint16_t vmid)
ConfigCache(unsigned numEntries, unsigned _associativity, const std::string &policy, statistics::Group *parent)
gem5::SMMUv3BaseCache::SMMUv3BaseCacheStats baseCacheStats
statistics::Formula averageHitRate
A 2-Dimensional vecto of scalar stats.
void invalidateVMID(uint16_t vmid)
size_t pickSetIdx(Addr va, Addr vaMask, unsigned stage, unsigned level) const
SMMUTLB(unsigned numEntries, unsigned _associativity, const std::string &policy, statistics::Group *parent, const std::string &name)
size_t pickEntryIdxToReplace(const Set &set, AllocPolicy alloc)
statistics::Scalar totalLookups
const Entry * lookup(uint32_t sid, uint32_t ssid, Addr va, bool updStats=true)
statistics::Formula averageLookups
void invalidateIPAA(Addr ipa)
size_t pickSetIdx(Addr va, uint16_t asid, uint16_t vmid) const
ARMArchTLB(unsigned numEntries, unsigned _associativity, const std::string &policy, statistics::Group *parent)
statistics::Vector2d insertionsByStageLevel
void invalidateVA(Addr va, uint16_t asid, uint16_t vmid)
size_t pickSetIdx(uint32_t sid, uint32_t ssid) const
std::vector< statistics::Formula * > averageHitRateByStageLevel
const Entry * lookup(Addr va, uint16_t asid, uint16_t vmid, bool updStats=true)
size_t pickEntryIdxToReplace(const Set &set)
void store(const Entry &incoming)
void store(const Entry &incoming, AllocPolicy alloc)
statistics::Vector2d totalUpdatesByStageLevel
void invalidateVMID(uint16_t vmid)
size_t pickEntryIdxToReplace(const Set &set, unsigned stage, unsigned level)
void invalidateVA(Addr va, uint16_t asid, uint16_t vmid, const bool leaf_only)
void invalidateASID(uint16_t asid, uint16_t vmid)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
statistics::Scalar totalUpdates
void invalidateASID(uint16_t asid, uint16_t vmid)
const std::string & name()
void invalidateVMID(uint16_t vmid)
void invalidateVAA(Addr va, uint16_t vmid, const bool leaf_only)
@ SMMU_CACHE_REPL_ROUND_ROBIN
size_t pickEntryIdxToReplace(const Set &set)
std::vector< statistics::Formula * > averageMissesByStageLevel
void invalidateVA(Addr va, uint16_t asid, uint16_t vmid)
void store(const Entry &incoming)
statistics::Vector2d totalLookupsByStageLevel
const Entry * lookup(Addr ipa, uint16_t vmid, bool updStats=true)
void invalidateSID(uint32_t sid)
std::array< unsigned, 2 *WALK_CACHE_LEVELS > sizes
static int decodePolicyName(const std::string &policy_name)
statistics::Scalar insertions
const Entry * lookupAnyVA(uint32_t sid, uint32_t ssid, bool updStats=true)
void invalidateASID(uint16_t asid, uint16_t vmid)
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::vector< statistics::Formula * > averageUpdatesByStageLevel
statistics::Scalar totalMisses
size_t pickEntryIdxToReplace(const Set &set)
void invalidateSSID(uint32_t sid, uint32_t ssid)
size_t pickSetIdx(Addr ipa, uint16_t vmid) const
gem5::WalkCache::WalkCacheStats walkCacheStats
void invalidateSSID(uint32_t sid, uint32_t ssid)
void invalidateVAA(Addr va, uint16_t vmid)
void invalidateVAA(Addr va, uint16_t vmid)
Generated on Sun Jul 30 2023 01:56:55 for gem5 by doxygen 1.8.17