14歳の自分に衝撃の事実を告げてください

wikipediaを調べると、TLBミスが発生したときの方式として以下の処理が発生するとあります。

-------------
・MMUによるTLB管理の場合
CPU自身が自動的にページテーブルを参照して、指定された仮想アドレスに対応するエントリがないか調べる(x86の場合は、CR3レジスタを使用)。エントリがあれば、必要な情報がTLBに読み込まれ、TLB参照を再実行し、TLBヒットとなってプログラムの実行は正常に続行される。
--------------

ここで、”CPU自身が自動的にページテーブルを参照する” で言うページテーブルはメインメモリ上のものだと思いますが、ページテーブルを参照する際、通常のメインメモリアクセスと同様に、L1、L2、L3のキャッシュにアクセスしてからメインメモリへのアクセス、となるのでしょうか?

よろしくお願いいたします。

A 回答 (2件)

CR3はコントロールレジスタの一つでページング・アドレス変換におけるトップレベルのページディレクトリ(※)の(先頭)物理アドレスとその属性フラグを保持する。


# ※CPUモードが32-bit, PAE, IA-32eでアドレス変換に使う変換テーブルの段数が異なるので実際の名称は異なる

PCDとPWTはCR3およびページディレクトリエントリ、ページテーブルエントリ等に存在するフラグで、キャッシュ可否を決める。
PCD=1だと対応するページディレクトリ/ページテーブル/ページをキャッシュしない。
PCD=0のとき、PWT=1だと対応するページディレクトリ/ページテーブル/ページへの書き込みがライトスルーになる。
PCD=1のとき、PWT=0はUncached、PWT=1はUncachableらしい。
    • good
    • 0

ページテーブル等がキャッシュされるか否かはCR3および各エントリのフラグ(PCDおよびPWT)によります。

詳細は資料を参照のこと。

http://www.intel.co.jp/content/www/jp/ja/process …
ここからアーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル下巻を参照のこと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速目を通してみます。

ちなみに
CR3 PCD PWT
の役割をざっくり、簡単に教えて頂けますでしょうか。

お礼日時:2016/02/17 20:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!