2016-06-15 63 views
6

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

+0

質問があれば無料です。 –

+0

ページテーブルが必要な理由なぜ物理メモリを直接指し示すことができないのですか? @SumeetSingh – marsh

+2

@marshあなたはhttps://www.youtube.com/watch?v=qlH4-oHnBb8&t=1sに従うことで仮想メモリ上のビデオをお勧めします。 –

答えて

0

オペレーティングシステムは仮想メモリを使用し、ページテーブルはこれらの仮想アドレスを物理アドレスにマッピングします。 TLBはそのようなマッピングのキャッシュとして機能します。それは、そのページが見つからない場合

program >>> TLB >>> cache >>> Ram 

TLB内のページのための番組検索は、それがTLBミスだし、さらに、キャッシュ内のページを検索します。

ページがキャッシュにない場合は、キャッシュミスであり、さらにRAM内のページを探します。

ページがRAMにない場合、ページフォールトであり、プログラムはセカンダリストレージ内のデータを探します。

ので、一般的な流れは

Page Requested >> TLB miss >> cache miss >> page fault >> looks in secondary memory. 
8

が、私はこれらすべてのものは、ステップバイステップで説明しましょうだろう。

CPUは、​​とpage offsetを含む論理アドレスを生成します。

​​

は、対応する page frame numberを取得するには、 page tableへのインデックスとして使用されている、と我々は physical memory(とも呼ばれるメインメモリ)のページフレームを持っていたら、私たちは、メモリの右の単語を取得するために page offsetを適用することができます。

なぜTLB(変換ルックアサイド・バッファ)

事は、そのページテーブルがphysical memoryに格納され、時には非常に大きくなることが、ので、物理アドレスに論理アドレスの変換をスピードアップしますそれがあれば、私たちは時々、TLB高価で、より高速な連想メモリで作られを使用し、だからではなく、最初のページ・テーブルに行こうと、我々はTLBに行くとTLBへのインデックスに​​を使用して、対応するpage frame numberを取得し、 (page frame numberpage offsetの両方があるので)page tableを完全に避けて、physical addressを形成します。

TLBミス

我々はTLB内部page frame numberが見つからない場合は、TLB missだけで、その後、我々は対応page frame numberを探しにpage tableに行くと呼ばれています。私たちはそのTLB hitと呼ばれる、TLBpage frame numberを見つけ、そして私たちは、ページテーブルに移動する必要がない場合

TLBは

をヒット。

ページフォールト

たちはTLBまたはpage tableを使用して物理アドレスを形成しているとき、それは問題ではないと私たちはメインメモリにそれを見つけることはありませんに発生します。

キャッシュは

キャッシュメモリは物理メモリよりも速い速度で動作し、我々は物理メモリに行く前に、私たちは常にキャッシュに行く小さなメモリでヒット。対応するワードをキャッシュ内のキャッシュメモリに配置することができれば、それはcache hitと呼ばれ、物理メモリに移動する必要はありません。

キャッシュミス

それであるだけcache memoryへのマッピングが見つからない場合後の対応blockcache missと呼ばれる)キャッシュ内のメモリの(物理メモリpage frameに似block)は、その後、我々はphysical memoryに行き、 page tableまたはTLBを経由するすべての処理を行います。

だから流れは基本的に1次回はcache memoryに行くこの

であり、そのcache hit場合、我々は行われています。

。そのcache missの場合は、手順3に進みます。

最初にTLBに行き、そのTLB hitphysical addressを使用して物理メモリに移動した場合、page frameが見つかった場合は完了です。 page frameが見つからない場合は、page faultpage replacement algorithmsのいずれかを使用します。

。そのTLB missの場合は、physical addressを形成するためにpage tableに行きます。 physical addressを使用するとphysical memoryに行きますが、page frameが見つかった場合は完了です。 page frameが見つからない場合は、page faultpage replacement algorithmsのいずれかを使用します。

END注私は仮想キャッシュ(プロセス間の高速ですが共有可能ではない)に関連して議論してきた流れが、流れは間違いなく物理キャッシュの場合に変化するであろう(遅いができ

プロセス間で共有されます)。キャッシュは、複数の方法で対処できます。深く掘り下げたい場合は、thisthisをご覧ください。

+0

ありがとう!それは本当に役に立ちました。 –

+0

私は流れが正しいとは思わない。 PattersonとHennessyの "Computer Organization and Design"によると、物理アドレス(物理アドレスタグとキャッシュインデックスを含む)を取得するためにTLBをチェックし、キャッシュインデックスと物理アドレスタグに基づいてキャッシュにアクセスする必要があります。 – user1036719

+0

@Summet Singh TLBは速いので、メモリ階層に違反しているとは思わない。でも、デヴィッド・ブラックシェイファーのビデオで、あなたがそれを指摘し、http://harttle.com/assets/img/blog/tlb-cache.png – user1036719

4

プロセスが実行されており、データ項目Xが必要であるとします。最初のキャッシュメモリで

は、それが要求されたデータ項目を持っているかどうかがチェックされ、それは(キャッシュがを打つ)があれば、そこ(キャッシュミス)ではありませんreturned.Ifされ、それメインメモリからロードされます。

は、キャッシュミスのメインメモリは、要求されたデータ項目を含むpageがあるかどうかを確認するためにチェックされますがされた場合(ページがを打つ)と、そのようなページが(ページフォルト)でない場合は、ページが含ま所望のアイテムをディスクからメインメモリに持ち込まなければならない。

ページフォルトTLBは(TLBはを襲った)目的のページのフレーム番号が利用できるかどうかを確認するためにチェックされる処理中にそれ以外の場合は(TLBはを欠場)OSページフォールトをサービスするためのページテーブルを参照してくださいする必要があります。これらのタイプのメモリをアクセスするために必要な

時間:

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

キャッシュのアクセスが最も時間を要するので、一定のレベルでヒットまたはミスが大幅に効果的なアクセスを変更します時間。

1

ページ違反の原因は何ですか?メモリが のハードディスクに移動されたので、それはいつもですか?または、他のアプリケーションのために移動しましたか?

システムがでない場合をサポートmultiprogrammingマルチプログラムでは、実行可能なメインメモリに1つまたは複数のプログラムがあります。)、メモリがハードディスクに移動されたため、確実にページ違反が発生しました。

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

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

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

enter image description here

クラッシュページフォルトですか?それとも、TLBミスと同じですか?

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