トランスレーション・ルックアサイド・バッファ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
トランスレーション・ルックアサイド・バッファ (TLB; Translation Lookaside Buffer) とは、CPU内のある種のバッファ(あるいはキャッシュ)であり、仮想アドレスを物理アドレスに変換するためのページテーブルの内容を入れておくものである。
このバッファは固定数エントリを持ち、仮想物理アドレス変換を高速に行うために使われる。したがって、通常はMMUの管理下におかれ、オペレーティングシステムから直接操作することはない。典型的な連想メモリ (Content Addressable Memory)であり、仮想アドレスをサーチキーとして物理アドレスをサーチ結果として得る。CAMとして読むことに成功すると得られた物理アドレス(物理ページ番号)を使ってメモリアクセスを行う。マッチしなかった場合、MMUはページテーブルを参照するが、それにはさらにクロックサイクルを要する。特にテーブル自体が存在しない場合(スワップアウトされている場合)、MMUでは解決できず、オペレーティングシステムがディスクからページテーブルを持ってくる。
TLBはCPUとキャッシュメモリの間に置かれている場合もあるし、キャッシュと主記憶装置の間に置かれることもある。これは、キャッシュが仮想アドレスを使っているか、物理アドレスを使っているかで決定される。
キャッシュが仮想アドレスを使っている場合、メモリアクセス要求はCPUからキャッシュに直接伝えられ、キャッシュにヒットしなかった場合にTLBが使われる。キャッシュが物理アドレスを使っている場合、TLBはメモリアクセスの度に必ずアクセスされ、得られた物理アドレスを使ってキャッシュにアクセスする。どちらの実装にも利点と欠点がある。
TLBミスが発生すると、ページテーブルがチェックされて指定された仮想アドレスに対応するエントリがないか調べる。もしあれば、必要な物理アドレスがTLBに読み込まれる。ページテーブルにエントリがない場合ページフォールトが発生する。
[編集] TLB特性の例
- サイズ: 8 - 4,096 エントリ
- ヒット時にかかる時間: 0.5 - 1 クロックサイクル
- ミスヒット時にかかる時間: 10 - 30 クロックサイクル
- ミスヒット率: 0.01% - 1%
もし、ヒット時に 1クロックサイクルかかり、ミスヒット時に 30クロックサイクルかかって、ミス率が1%だとすると、実際のメモリアクセスにかかる平均時間は1 * .99 + 30 * .01 = 1.29クロックサイクルとなる。
[編集] コンピュータ・セキュリティ
設計上意識されていないかもしれないが、TLBは他のプログラムからメモリを隠蔽して保護するためにも有効な手段となる。これは、オペレーティングシステムやセキュリティソフトウェア、あるいはルートキットなどのウイルスやマルウェア等のいずれによっても活用される。
カテゴリ: OSのメモリ管理 | CPU | コンピュータ関連のスタブ項目