TLBキャッシュのさまざまな方法を学ぶタスクがあります。どのアルゴリズムを使用する必要がありますか?
1 に答える
質問は、あなたが何を必要としているのかについて少し不明確なので、これはあなたが言及したトピックに関連する情報の要約です.
メモリにアクセスするには 2 つの「方法」があります。直接マッピングでは、ページ テーブルがメモリ内に保持され、仮想ページ番号によってインデックスが作成されます。仮想ページ番号から実際のページ番号に変換するために、OS はページ テーブルのベース アドレスに移動し、仮想ページ番号を追加します。この位置の値は、ページの実際のアドレスを示します。
もう 1 つの方法は、連想マッピングです。連想マッピングは、ページ テーブルをコンテンツ アドレス メモリに保持するため、仮想アドレスがルックアップされると、プロセスのすべてのページが並行して検索され、O(1) ルックアップ時間の複雑さが生じます。もう 1 つの利点は、実際に割り当てられたページのみが格納されることです。
問題は、連想マッピングでは、コンテンツ アドレス メモリを実現するために特別なハードウェアが必要になることです。
したがって、トレードオフは、大部分が直接マッピングを使用して、少量のコンテンツ アドレス メモリ (TLB = 質問で参照する変換ルックアサイド バッファー) が使用されることです。
次に、重要な考慮事項は、アドレスをいつ TLB に配置するか、およびどの古いアドレスを TLB から削除するかです。これには多くの選択肢があります。最も可能性が高いのは、時間的局所性を利用するために LRU (Least Recent Used) です。他の選択肢としては、使用頻度の低いもの、ラウンド ロビン (おそらくここではあまり適していません)、WS_Clock などがあります。