gem5  v20.1.0.0
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
SMMUTLB Class Reference

#include <smmu_v3_caches.hh>

Inheritance diagram for SMMUTLB:
SMMUv3BaseCache

Classes

struct  Entry
 

Public Types

enum  AllocPolicy { ALLOC_ANY_WAY, ALLOC_ANY_BUT_LAST_WAY, ALLOC_LAST_WAY }
 

Public Member Functions

 SMMUTLB (unsigned numEntries, unsigned _associativity, const std::string &policy)
 
 SMMUTLB (const SMMUTLB &tlb)=delete
 
virtual ~SMMUTLB ()
 
const Entrylookup (uint32_t sid, uint32_t ssid, Addr va, bool updStats=true)
 
const EntrylookupAnyVA (uint32_t sid, uint32_t ssid, bool updStats=true)
 
void store (const Entry &incoming, AllocPolicy alloc)
 
void invalidateSSID (uint32_t sid, uint32_t ssid)
 
void invalidateSID (uint32_t sid)
 
void invalidateVA (Addr va, uint16_t asid, uint16_t vmid)
 
void invalidateVAA (Addr va, uint16_t vmid)
 
void invalidateASID (uint16_t asid, uint16_t vmid)
 
void invalidateVMID (uint16_t vmid)
 
void invalidateAll ()
 
- Public Member Functions inherited from SMMUv3BaseCache
 SMMUv3BaseCache (const std::string &policy_name, uint32_t seed)
 
virtual ~SMMUv3BaseCache ()
 
virtual void regStats (const std::string &name)
 

Private Types

typedef std::vector< EntrySet
 

Private Member Functions

size_t pickSetIdx (uint32_t sid, uint32_t ssid) const
 
size_t pickSetIdx (Addr va) const
 
size_t pickEntryIdxToReplace (const Set &set, AllocPolicy alloc)
 

Private Attributes

std::vector< Setsets
 
size_t associativity
 

Additional Inherited Members

- Static Protected Member Functions inherited from SMMUv3BaseCache
static int decodePolicyName (const std::string &policy_name)
 
- Protected Attributes inherited from SMMUv3BaseCache
int replacementPolicy
 
size_t nextToReplace
 
Random random
 
uint32_t useStamp
 
Stats::Formula averageLookups
 
Stats::Scalar totalLookups
 
Stats::Formula averageMisses
 
Stats::Scalar totalMisses
 
Stats::Formula averageUpdates
 
Stats::Scalar totalUpdates
 
Stats::Formula averageHitRate
 
Stats::Scalar insertions
 

Detailed Description

Definition at line 90 of file smmu_v3_caches.hh.

Member Typedef Documentation

◆ Set

typedef std::vector<Entry> SMMUTLB::Set
private

Definition at line 140 of file smmu_v3_caches.hh.

Member Enumeration Documentation

◆ AllocPolicy

Enumerator
ALLOC_ANY_WAY 
ALLOC_ANY_BUT_LAST_WAY 
ALLOC_LAST_WAY 

Definition at line 93 of file smmu_v3_caches.hh.

Constructor & Destructor Documentation

◆ SMMUTLB() [1/2]

SMMUTLB::SMMUTLB ( unsigned  numEntries,
unsigned  _associativity,
const std::string &  policy 
)

Definition at line 146 of file smmu_v3_caches.cc.

References associativity, ArmISA::e, fatal, and sets.

◆ SMMUTLB() [2/2]

SMMUTLB::SMMUTLB ( const SMMUTLB tlb)
delete

◆ ~SMMUTLB()

virtual SMMUTLB::~SMMUTLB ( )
inlinevirtual

Definition at line 123 of file smmu_v3_caches.hh.

Member Function Documentation

◆ invalidateAll()

void SMMUTLB::invalidateAll ( )

Definition at line 345 of file smmu_v3_caches.cc.

References ArmISA::i, ArmISA::s, and sets.

◆ invalidateASID()

void SMMUTLB::invalidateASID ( uint16_t  asid,
uint16_t  vmid 
)

Definition at line 315 of file smmu_v3_caches.cc.

References ArmISA::asid, ArmISA::e, ArmISA::i, ArmISA::s, and sets.

◆ invalidateSID()

void SMMUTLB::invalidateSID ( uint32_t  sid)

Definition at line 271 of file smmu_v3_caches.cc.

References ArmISA::e, ArmISA::i, ArmISA::s, and sets.

◆ invalidateSSID()

void SMMUTLB::invalidateSSID ( uint32_t  sid,
uint32_t  ssid 
)

Definition at line 258 of file smmu_v3_caches.cc.

References ArmISA::e, ArmISA::i, pickSetIdx(), and sets.

◆ invalidateVA()

void SMMUTLB::invalidateVA ( Addr  va,
uint16_t  asid,
uint16_t  vmid 
)

Definition at line 286 of file smmu_v3_caches.cc.

References ArmISA::asid, ArmISA::e, ArmISA::i, pickSetIdx(), sets, and ArmISA::va.

◆ invalidateVAA()

void SMMUTLB::invalidateVAA ( Addr  va,
uint16_t  vmid 
)

Definition at line 302 of file smmu_v3_caches.cc.

References ArmISA::e, ArmISA::i, pickSetIdx(), sets, and ArmISA::va.

◆ invalidateVMID()

void SMMUTLB::invalidateVMID ( uint16_t  vmid)

Definition at line 330 of file smmu_v3_caches.cc.

References ArmISA::e, ArmISA::i, ArmISA::s, and sets.

◆ lookup()

const SMMUTLB::Entry * SMMUTLB::lookup ( uint32_t  sid,
uint32_t  ssid,
Addr  va,
bool  updStats = true 
)

◆ lookupAnyVA()

const SMMUTLB::Entry * SMMUTLB::lookupAnyVA ( uint32_t  sid,
uint32_t  ssid,
bool  updStats = true 
)

◆ pickEntryIdxToReplace()

size_t SMMUTLB::pickEntryIdxToReplace ( const Set set,
AllocPolicy  alloc 
)
private

◆ pickSetIdx() [1/2]

size_t SMMUTLB::pickSetIdx ( Addr  va) const
private

Definition at line 356 of file smmu_v3_caches.cc.

References sets, and ArmISA::va.

◆ pickSetIdx() [2/2]

size_t SMMUTLB::pickSetIdx ( uint32_t  sid,
uint32_t  ssid 
) const
private

Definition at line 362 of file smmu_v3_caches.cc.

References sets.

Referenced by invalidateSSID(), invalidateVA(), invalidateVAA(), lookup(), and store().

◆ store()

void SMMUTLB::store ( const Entry incoming,
AllocPolicy  alloc 
)

Member Data Documentation

◆ associativity

size_t SMMUTLB::associativity
private

Definition at line 143 of file smmu_v3_caches.hh.

Referenced by pickEntryIdxToReplace(), and SMMUTLB().

◆ sets

std::vector<Set> SMMUTLB::sets
private

The documentation for this class was generated from the following files:

Generated on Wed Sep 30 2020 14:02:32 for gem5 by doxygen 1.8.17