web-dev-qa-db-ja.com

キャッシュミス、TLBミス、ページフォールト

誰かがキャッシュミス、TLBミス、ページフォールトの違いを明確に説明できますか?また、これらは有効なメモリアクセス時間にどのように影響しますか?

18
Pushp Sra

ページフォールトの原因は何ですか?メモリがハードディスクに移動されたため、常にですか?または、他のアプリケーションに移動しただけですか?

まあ、それは依存します。システムがnotをサポートしている場合 multiprogrammingマルチプログラミングシステムでは、実行する準備ができている1つ以上のプログラムがメインメモリにロードされています)、メモリがハードディスクに移動されたため、間違いなくページフォルトが発生しました。

システムがマルチプログラミングをサポートしている場合、オペレーティングシステムがグローバルページ置換を使用するか、ローカルページ置換を使用するかによって異なります。グローバルを使用する場合、はい、他のアプリケーションのためにメモリが移動される可能性があります。しかし、ローカルでは、メモリはハードディスクに戻されています。プロセスでページフォールトが発生すると、ローカルページ置換アルゴリズムにより、同じプロセスに属するページが置換されます。一方、グローバル置換アルゴリズムでは、フレームのプール全体から任意のページを自由に選択できます。これらについてのこの議論は、 スラッシング を扱うときにさらにポップアップします。

TLBミスとページフォールトの違いを混同しています。

TLBミスは、仮想アドレスから物理アドレスへの変換に必要なページテーブルエントリがTLB(変換ルックアサイドバッファ)に存在しない場合に発生します。 TLBはキャッシュのようなものですが、データを保存するのではなく、ページテーブルエントリを保存するため、TLBがヒットした場合に図に示すようにページテーブルを完全にバイパスできます。

enter image description here

ページ違反はクラッシュですか?それともTLBミスと同じですか?

クラッシュは回復できないため、どちらもクラッシュではありません。しかし、プロセスの実行を中止する必要なく、ページフォールトとTLBミスの両方から回復できることはよく知られています。

5
Sumeet

プロセスが実行されており、データ項目Xが必要であることを想像してください。

最初に、要求されたデータ項目があるかどうかを確認するためにキャッシュメモリがチェックされ、そこにある場合は(cache hit)、返されます。そこにはありません(キャッシュミス)、メインメモリからロードされます。

キャッシュミスがある場合、メインメモリをチェックして、要求されたデータ項目を含む page があるかどうかを確認します(page hit )そして、そのようなページが存在しない場合(page fault)、目的のアイテムを含むページをディスクからメインメモリに取り込む必要があります。

ページフォールトの処理中に、TLBで目的のページのフレーム番号が利用可能かどうかが確認されます(TLB hit)それ以外の場合(TLB miss)OSは、ページフォールトのサービスについてページテーブルを参照する必要があります。

これらのタイプのメモリにアクセスするのに必要な時間:

キャッシュ<<メインメモリ<<ディスク enter image description here

キャッシュアクセスに必要な時間は最小限であるため、特定のレベルでヒットまたはミスが発生すると、有効なアクセス時間が大幅に変わります。

5
Rupsingh