Go to the documentation of this file.
42 #ifndef __MEM_RUBY_STRUCTURES_CACHEMEMORY_HH__
43 #define __MEM_RUBY_STRUCTURES_CACHEMEMORY_HH__
46 #include <unordered_map>
53 #include "mem/ruby/protocol/CacheRequestType.hh"
54 #include "mem/ruby/protocol/CacheResourceType.hh"
55 #include "mem/ruby/protocol/RubyRequest.hh"
60 #include "params/RubyCache.hh"
67 typedef std::shared_ptr<ReplacementPolicy::ReplacementData>
ReplData;
140 void print(std::ostream& out)
const;
249 #endif // __MEM_RUBY_STRUCTURES_CACHEMEMORY_HH__
void recordCacheContents(int cntrl, CacheRecorder *tr) const
CacheMemory::CacheMemoryStats cacheMemoryStats
int findTagInSetIgnorePermissions(int64_t cacheSet, Addr tag) const
CacheMemoryStats(Stats::Group *parent)
Stats::Scalar numDataArrayWrites
void clearLocked(Addr addr)
AbstractCacheEntry * lookup(Addr address)
bool isLocked(Addr addr, int context)
std::vector< std::vector< AbstractCacheEntry * > > m_cache
void allocateVoid(Addr address, AbstractCacheEntry *new_entry)
Stats::Formula m_prefetch_accesses
Cycles getLatency() const
Addr cacheProbe(Addr address) const
std::unordered_map< Addr, int > m_tag_index
void print(std::ostream &out) const
Stats::Scalar numDataArrayStalls
A vector of scalar stats.
void setMRU(Addr address)
Stats::Scalar numTagArrayReads
void deallocate(Addr address)
Stats::Histogram htmTransAbortReadSet
bool testCacheAccess(Addr address, RubyRequestType type, DataBlock *&data_ptr)
Cycles getTagLatency() const
bool m_use_occupancy
Set to true when using WeightedLRU replacement policy, otherwise, set to false.
int getCacheAssoc() const
Stats::Histogram htmTransCommitReadSet
This is a simple scalar statistic, like a counter.
ReplacementPolicy::Base * m_replacementPolicy_ptr
We use the replacement policies from the Classic memory system.
AbstractCacheEntry * allocate(Addr address, AbstractCacheEntry *new_entry)
void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
std::vector< std::vector< ReplData > > replacement_data
We store all the ReplacementData in a 2-dimensional array.
Stats::Scalar m_prefetch_hits
void printData(std::ostream &out) const
CacheMemory(const Params &p)
bool cacheAvail(Addr address) const
AbstractCacheEntry * getNullEntry() const
CacheMemory & operator=(const CacheMemory &obj)
Stats::Scalar m_prefetch_misses
bool isBlockInvalid(int64_t cache_set, int64_t loc)
A common base class of cache replacement policy objects.
Stats::Histogram htmTransCommitWriteSet
Stats::Scalar numDataArrayReads
Stats::Scalar m_demand_hits
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int findTagInSet(int64_t line, Addr tag) const
void clearLockedAll(int context)
Stats::Scalar m_demand_misses
Cycles getDataLatency() const
std::ostream & operator<<(std::ostream &out, const CacheMemory &obj)
bool tryCacheAccess(Addr address, RubyRequestType type, DataBlock *&data_ptr)
void htmCommitTransaction()
void setLocked(Addr addr, int context)
bool isTagPresent(Addr address) const
void profilePrefetchHit()
Stats::Vector m_accessModeType
Addr getAddressAtIdx(int idx) const
Cycles is a wrapper class for representing cycle counts, i.e.
bool m_is_instruction_only_cache
int64_t addressToCacheSet(Addr address) const
Stats::Scalar numTagArrayWrites
void profilePrefetchMiss()
bool checkResourceAvailable(CacheResourceType res, Addr addr)
Stats::Histogram htmTransAbortWriteSet
std::shared_ptr< ReplacementPolicy::ReplacementData > ReplData
Stats::Formula m_demand_accesses
Stats::Scalar numTagArrayStalls
void recordRequestType(CacheRequestType requestType, Addr addr)
void htmAbortTransaction()
int getReplacementWeight(int64_t set, int64_t loc)
bool isBlockNotBusy(int64_t cache_set, int64_t loc)
Abstract superclass for simulation objects.
Generated on Tue Mar 23 2021 19:41:28 for gem5 by doxygen 1.8.17