これは Operating System Concepts、9th edition Silberschatz et alによる段落です:
対象のページ番号がTLBで見つかった回数の割合は、ヒット率と呼ばれます。たとえば、80%のヒット率は、80%の時間TLBで目的のページ番号を見つけることを意味します。メモリにアクセスするのに100ナノ秒かかる場合、ページ番号がTLBにある場合、マップメモリアクセスには100ナノ秒かかります。 TLBでページ番号が見つからない場合は、最初にページテーブルとフレーム番号のメモリ(100ナノ秒)にアクセスし、次にメモリ内の目的のバイト(100ナノ秒)にアクセスして、合計200ナノ秒にする必要があります。 (ページテーブルのルックアップは1回のメモリアクセスのみを前提としていますが、これから見るようにさらに多くのメモリアクセスが必要になる場合があります。)有効なメモリアクセス時間を見つけるため、ケースをその確率で重み付けします:有効なアクセス時間= 0.80 ×100 + 0.20×200 = 120ナノ秒
しかし、同じ本の第8版
私は混乱しています
有効なアクセス時間
誰かが私のためにそれを説明できますか?
TLBでページが見つかった場合(TLBヒット)、合計時間はTLBでの検索時間にメモリへのアクセス時間を加えたものになるため、
TLB_hit_time := TLB_search_time + memory_access_time
TLBでページが見つからない場合(TLBミス)、合計時間はTLBを検索する時間(何も検索しませんが、検索します)に加えて、ページテーブルを取得するためにメモリにアクセスする時間になります。フレーム、およびデータを取得するためにメモリにアクセスする時間
TLB_miss_time := TLB_search_time + memory_access_time + memory_access_time
しかし、これは個々のケースで、TLBパフォーマンスの平均測定値を知りたい場合、実効アクセス時間、つまり前の測定値の加重平均を使用します
EAT := TLB_miss_time * (1- hit_ratio) + TLB_hit_time * hit_ratio
または
EAT := (TLB_search_time + 2*memory_access_time) * (1- hit_ratio) +
(TLB_search_time + memory_access_time) * hit_ratio
ここでの有効時間は、平均ヒットまたはミスの相対確率を使用した時間です。ヒットが80%の確率で発生し、ミスが20%の確率で発生した場合、多数のヒット/ミスの有効時間(平均時間)は0.8 *(ヒット時間)+ 0.2 *(ミス時間) )。
EATの一般式
ヒット率= a
メインメモリアクセス時間= m
連想検索(TLBアクセス)= e
EAT =(m + e)a +(2m + e)(1-a)
= 2m - ma + e
TLBでは、頻繁にアクセスされるページ番号とフレーム番号のコピーが保持されます。これは、メモリに保存されているページテーブルからのものです。
最初にTLBを調べます。見つかった場合、メモリの場所に移動するため、合計アクセス時間は次のようになります。
20 + 100 = 120 ns
TLBが欠落している場合、まずTLBを検索し、次にメモリに保存されているページテーブルを検索する必要があります。したがって、1つのメモリアクセスと1つの特定のページがアクセスしますが、もう1つのメモリアクセスのみです。したがって、合計時間は次と等しくなります。
20 + 100 + 100 = 220 ns
また、有効なメモリアクセス時間は次と等しくなります。
0.80 * 120 + 0.20* 220 = 140 ns