41#ifndef __MEM_RUBY_STRUCTURES_TBETABLE_HH__
42#define __MEM_RUBY_STRUCTURES_TBETABLE_HH__
45#include <unordered_map>
80 void print(std::ostream& out)
const;
88 std::unordered_map<Addr, ENTRY>
m_map;
96 std::is_member_function_pointer_v<
decltype(&ENTRY::setRubySystem)>;
122 return !!
m_map.count(address);
134 m_map.emplace(address, new_entry);
142 assert(
m_map.size() > 0);
143 m_map.erase(address);
158 if (
m_map.find(address) !=
m_map.end())
return &(
m_map.find(address)->second);
std::unordered_map< Addr, ENTRY > m_map
TBETable(const TBETable &obj)
static constexpr bool entryRequiresRubySystem
bool areNSlotsAvailable(int n, Tick current_time) const
bool isPresent(Addr address) const
TBETable(int number_of_TBEs)
ENTRY * lookup(Addr address)
void print(std::ostream &out) const
void allocate(Addr address)
RubySystem * m_ruby_system
void setRubySystem(RubySystem *rs)
void deallocate(Addr address)
TBETable & operator=(const TBETable &obj)
static constexpr std::enable_if_t< std::is_integral_v< T >, int > floorLog2(T x)
Addr makeLineAddress(Addr addr, int cacheLineBits)
std::ostream & operator<<(std::ostream &os, const BoolVec &myvector)
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.