#include <setassoc_table.h>
shttl::setassoc_table< PairType, Hasher, Replacer, Strage >のコラボレーション図
setassoc_table.h の 798 行で定義されています。
typedef setassoc_table_const_iterator_base< this_type, const this_type*, const line_type, iterator > shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::const_iterator |
setassoc_table.h の 844 行で定義されています。
typedef strage_type::const_set_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::const_set_type |
setassoc_table.h の 818 行で定義されています。
typedef hasher_type::size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::hasher_size_type |
setassoc_table.h の 815 行で定義されています。
typedef Hasher shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::hasher_type |
setassoc_table.h の 809 行で定義されています。
typedef setassoc_table_iterator_base< this_type, this_type*, line_type > shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::iterator |
setassoc_table.h の 835 行で定義されています。
typedef pair_type::first_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::key_type |
setassoc_table.h の 813 行で定義されています。
typedef setassoc_table_line_base< pair_type > shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::line_type |
setassoc_table.h の 826 行で定義されています。
typedef PairType shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::pair_type |
setassoc_table.h の 808 行で定義されています。
typedef Replacer shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::replacer_type |
setassoc_table.h の 810 行で定義されています。
typedef strage_type::set_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::set_type |
setassoc_table.h の 817 行で定義されています。
typedef strage_type::size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::size_type |
setassoc_table.h の 819 行で定義されています。
typedef Strage shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::strage_type |
setassoc_table.h の 811 行で定義されています。
typedef setassoc_table< PairType, Hasher, Replacer, Strage > shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::this_type |
setassoc_table.h の 806 行で定義されています。
typedef pair_type::second_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::value_type |
setassoc_table.h の 814 行で定義されています。
shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::setassoc_table | ( | const hasher_type & | hasher, | |
const size_type | way_num | |||
) | [inline] |
setassoc_table.h の 867 行で定義されています。
00869 : 00870 m_replacer(), 00871 m_hasher ( hasher ), 00872 m_way_num ( way_num ) 00873 { 00874 m_replacer.construct( hasher.size(), way_num ); 00875 m_strage.resize( hasher.size(), way_num ); 00876 } 00877
shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::~setassoc_table | ( | ) | [inline] |
shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::setassoc_table | ( | const setassoc_table< PairType, Hasher, Replacer, Strage > & | ref | ) | [inline, protected] |
const line_type& shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::at | ( | const_iterator | id | ) | const [inline] |
line_type& shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::at | ( | iterator | id | ) | [inline] |
const_iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::begin | ( | ) | const [inline] |
iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::begin | ( | ) | [inline] |
const_iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::begin_set | ( | hasher_size_type | index | ) | const [inline] |
setassoc_table.h の 1030 行で定義されています。
01030 { 01031 return const_iterator( this, index, 0 ); 01032 } 01033
iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::begin_set | ( | hasher_size_type | index | ) | [inline] |
void shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::clear | ( | ) | [inline] |
setassoc_table.h の 975 行で定義されています。
00975 { 00976 for( size_type i = 0; i < set_num(); i++ ){ 00977 m_strage.get_set( i ).clear(); 00978 } 00979 } 00980
const_iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::end | ( | ) | const [inline] |
setassoc_table.h の 1015 行で定義されています。
01015 { 01016 return const_iterator( this, set_num(), 0 ); 01017 } 01018
iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::end | ( | ) | [inline] |
setassoc_table.h の 1005 行で定義されています。
参照元 Onikiri::Cache::Invalidate()・Onikiri::Cache::InvalidateBody()・Onikiri::PrefetcherBase::OnCacheInvalidation()・Onikiri::PrefetcherBase::OnCacheRead()・Onikiri::PrefetcherBase::OnCacheWrite()・Onikiri::BTB::Predict()・Onikiri::Cache::Read()・Onikiri::Cache::ReadBody()・Onikiri::Cache::UpdateTable()・Onikiri::Cache::Write()・Onikiri::Cache::WriteBody().
Here is the caller graph for this function:
const_iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::end_set | ( | hasher_size_type | index | ) | const [inline] |
setassoc_table.h の 1035 行で定義されています。
01035 { 01036 return const_iterator( this, index+1, 0 ); 01037 } 01038
iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::end_set | ( | hasher_size_type | index | ) | [inline] |
iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::find | ( | const key_type | key | ) | [inline] |
setassoc_table.h の 884 行で定義されています。
参照元 Onikiri::Cache::ReadBody()・Onikiri::Cache::WriteBody().
00884 { 00885 hasher_size_type index = m_hasher.index( key ); 00886 key_type tag = m_hasher.tag( key ); 00887 00888 const set_type& set = m_strage.get_set( (size_type)index ); 00889 size_type way = set.find( tag ); 00890 if( way != invalid_way ) 00891 return iterator( this, index, way ); 00892 else 00893 return end(); 00894 } 00895
Here is the caller graph for this function:
hasher_type& shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::get_hasher | ( | ) | [inline] |
replacer_type& shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::get_replacer | ( | ) | [inline] |
hasher_size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::index | ( | const key_type | key | ) | const [inline] |
setassoc_table.h の 982 行で定義されています。
参照先 shttl::setassoc_table_iterator_base< BodyType, BodyPtrType, LineType >::index().
00982 { 00983 return m_hasher.index( key ); 00984 } 00985
関数の呼び出しグラフ:
iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::invalidate | ( | const key_type | key | ) | [inline] |
setassoc_table.h の 961 行で定義されています。
参照元 Onikiri::Cache::InvalidateBody().
00961 { 00962 iterator id = find( key ); 00963 if( id != end() && at(id).valid ){ 00964 m_strage.get_set( id.index() ).invalidate( id.way() ); 00965 } 00966 return id; 00967 } 00968
Here is the caller graph for this function:
iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::read | ( | const key_type | key, | |
value_type * | val = NULL | |||
) | [inline] |
setassoc_table.h の 898 行で定義されています。
参照元 Onikiri::Cache::OnReadHit()・Onikiri::BTB::Predict().
00898 { 00899 iterator id = find( key ); 00900 00901 // hit 00902 if( id != end() ){ 00903 if( val ){ 00904 *val = at( id ).value; 00905 } 00906 touch( id, key ); 00907 } 00908 00909 return id; 00910 } 00911
Here is the caller graph for this function:
size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::set_num | ( | ) | const [inline] |
size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::size | ( | ) | const [inline] |
void shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::touch | ( | iterator | id, | |
const key_type | key | |||
) | [inline] |
setassoc_table.h の 970 行で定義されています。
00970 { 00971 m_replacer.touch( id.index(), id.way(), key ); 00972 } 00973
size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::way_num | ( | ) | const [inline] |
iterator shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::write | ( | const key_type | key, | |
const value_type & | val = value_type() , |
|||
bool * | ref_replaced = NULL , |
|||
key_type * | ref_replaced_key = NULL , |
|||
line_type * | ref_replaced_line = NULL | |||
) | [inline] |
setassoc_table.h の 914 行で定義されています。
参照元 Onikiri::BTB::Update()・Onikiri::Cache::UpdateTableBody().
00919 { 00920 hasher_size_type key_index = index( key ); 00921 set_type set = m_strage.get_set( key_index ); 00922 bool replaced = false; 00923 00924 // miss 00925 iterator id = find( key ); 00926 if( id == end() ){ 00927 00928 // Find an invalid way. 00929 size_type way = set.find_free_way(); 00930 00931 // Could not find a free way and now replace a valid way. 00932 if( way == invalid_way ){ 00933 way = m_replacer.target( key_index ); 00934 replaced = true; 00935 } 00936 00937 id = iterator( this, key_index, way ); 00938 } 00939 00940 if( ref_replaced ){ 00941 *ref_replaced = replaced; 00942 } 00943 00944 if( replaced && ref_replaced_line ){ 00945 *ref_replaced_line = set.at( id.way() ); 00946 } 00947 00948 if( replaced && ref_replaced_key ){ 00949 *ref_replaced_key = m_hasher.rebuild( ref_replaced_line->tag, id.index() ); 00950 } 00951 00952 key_type tag = m_hasher.tag( key ); 00953 set.write( id.way(), tag, val ); 00954 00955 touch( id, key ); 00956 return id; 00957 } 00958
Here is the caller graph for this function:
const size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::invalid_index = strage_type::invalid_index [static] |
setassoc_table.h の 821 行で定義されています。
const size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::invalid_way = strage_type::invalid_way [static] |
setassoc_table.h の 822 行で定義されています。
hasher_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::m_hasher [protected] |
setassoc_table.h の 1058 行で定義されています。
replacer_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::m_replacer [protected] |
setassoc_table.h の 1057 行で定義されています。
strage_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::m_strage [protected] |
setassoc_table.h の 1061 行で定義されています。
size_type shttl::setassoc_table< PairType, Hasher, Replacer, Strage >::m_way_num [protected] |
setassoc_table.h の 1059 行で定義されています。