ChampSim
champsim::msl::lru_table< T, SetProj, TagProj > Class Template Reference

#include <lru_table.h>

Classes

struct  block_t
 

Public Types

using value_type = T
 

Public Member Functions

std::optional< value_typecheck_hit (const value_type &elem)
 
void fill (const value_type &elem)
 
std::optional< value_typeinvalidate (const value_type &elem)
 
 lru_table (std::size_t sets, std::size_t ways, SetProj set_proj, TagProj tag_proj)
 
 lru_table (std::size_t sets, std::size_t ways, SetProj set_proj)
 
 lru_table (std::size_t sets, std::size_t ways)
 

Private Types

using block_vec_type = std::vector< block_t >
 

Private Member Functions

auto get_set_span (const value_type &elem)
 
auto match_func (const value_type &elem)
 
template<typename U >
auto match_and_check (U tag)
 

Private Attributes

SetProj set_projection
 
TagProj tag_projection
 
std::size_t NUM_SET
 
std::size_t NUM_WAY
 
uint64_t access_count = 0
 
block_vec_type block {NUM_SET * NUM_WAY}
 

Member Typedef Documentation

◆ block_vec_type

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
using champsim::msl::lru_table< T, SetProj, TagProj >::block_vec_type = std::vector<block_t>
private

◆ value_type

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
using champsim::msl::lru_table< T, SetProj, TagProj >::value_type = T

Constructor & Destructor Documentation

◆ lru_table() [1/3]

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
champsim::msl::lru_table< T, SetProj, TagProj >::lru_table ( std::size_t  sets,
std::size_t  ways,
SetProj  set_proj,
TagProj  tag_proj 
)
inline

◆ lru_table() [2/3]

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
champsim::msl::lru_table< T, SetProj, TagProj >::lru_table ( std::size_t  sets,
std::size_t  ways,
SetProj  set_proj 
)
inline

◆ lru_table() [3/3]

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
champsim::msl::lru_table< T, SetProj, TagProj >::lru_table ( std::size_t  sets,
std::size_t  ways 
)
inline

Member Function Documentation

◆ check_hit()

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
std::optional<value_type> champsim::msl::lru_table< T, SetProj, TagProj >::check_hit ( const value_type elem)
inline

◆ fill()

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
void champsim::msl::lru_table< T, SetProj, TagProj >::fill ( const value_type elem)
inline

◆ get_set_span()

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
auto champsim::msl::lru_table< T, SetProj, TagProj >::get_set_span ( const value_type elem)
inlineprivate

◆ invalidate()

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
std::optional<value_type> champsim::msl::lru_table< T, SetProj, TagProj >::invalidate ( const value_type elem)
inline

◆ match_and_check()

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
template<typename U >
auto champsim::msl::lru_table< T, SetProj, TagProj >::match_and_check ( tag)
inlineprivate

◆ match_func()

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
auto champsim::msl::lru_table< T, SetProj, TagProj >::match_func ( const value_type elem)
inlineprivate

Member Data Documentation

◆ access_count

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
uint64_t champsim::msl::lru_table< T, SetProj, TagProj >::access_count = 0
private

◆ block

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
block_vec_type champsim::msl::lru_table< T, SetProj, TagProj >::block {NUM_SET * NUM_WAY}
private

◆ NUM_SET

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
std::size_t champsim::msl::lru_table< T, SetProj, TagProj >::NUM_SET
private

◆ NUM_WAY

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
std::size_t champsim::msl::lru_table< T, SetProj, TagProj >::NUM_WAY
private

◆ set_projection

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
SetProj champsim::msl::lru_table< T, SetProj, TagProj >::set_projection
private

◆ tag_projection

template<typename T , typename SetProj = detail::table_indexer<T>, typename TagProj = detail::table_tagger<T>>
TagProj champsim::msl::lru_table< T, SetProj, TagProj >::tag_projection
private

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