Go to the documentation of this file.
41 #ifndef __MEM_RUBY_STRUCTURES_PERFECTCACHEMEMORY_HH__
42 #define __MEM_RUBY_STRUCTURES_PERFECTCACHEMEMORY_HH__
44 #include <unordered_map>
48 #include "mem/ruby/protocol/AccessPermission.hh"
102 void print(std::ostream& out)
const;
110 std::unordered_map<Addr, PerfectCacheLineState<ENTRY> >
m_map;
113 template<
class ENTRY>
122 template<
class ENTRY>
129 template<
class ENTRY>
136 template<
class ENTRY>
145 template<
class ENTRY>
156 template<
class ENTRY>
160 [[maybe_unused]]
auto num_erased = m_map.erase(
makeLineAddress(address));
161 assert(num_erased == 1);
165 template<
class ENTRY>
169 panic(
"cacheProbe called in perfect cache");
174 template<
class ENTRY>
182 template<
class ENTRY>
189 template<
class ENTRY>
190 inline AccessPermission
196 template<
class ENTRY>
199 AccessPermission new_perm)
206 template<
class ENTRY>
215 #endif // __MEM_RUBY_STRUCTURES_PERFECTCACHEMEMORY_HH__
bool isTagPresent(Addr address) const
std::ostream & operator<<(std::ostream &os, const BoolVec &myvector)
void deallocate(Addr address)
std::unordered_map< Addr, PerfectCacheLineState< ENTRY > > m_map
Addr makeLineAddress(Addr addr)
AccessPermission m_permission
ENTRY * lookup(Addr address)
void print(std::ostream &out) const
bool cacheAvail(Addr address) const
PerfectCacheMemory & operator=(const PerfectCacheMemory &obj)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Addr cacheProbe(Addr newAddress) const
void allocate(Addr address)
void changePermission(Addr address, AccessPermission new_perm)
AccessPermission getPermission(Addr address) const
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
#define panic(...)
This implements a cprintf based panic() function.
Generated on Sun Jul 30 2023 01:56:59 for gem5 by doxygen 1.8.17