Top / CPU / CPUID / MTRR

MTRRs (Memory Type Range Registers、メモリタイプ範囲レジスタ)

MTRR は Pentium Pro より採用されたメモリタイプを設定することの出来るレジスタ群です。指定できるメモリタイプは以下の通り。

  • UC (Uncacheable、ストロング・キャッシュ不可)
  • UC- (Uncacheable、ストロング・キャッシュ不可、オーバーライド可能)
  • WC (Write Combining)
    WC は、CPU -> Memory 間のデータ書込みが多重に発生した場合、最後に書き込まれたデータ以外は破棄します。書き込み遅延が生じにくく、データ転送量も少なく見積もることが出来るので高速なデータ転送が期待できます。
    書き込みタイミングを保障する必要が無い(いつも最新の情報さえ書き込まれていれば問題の無い)フレームバッファに向いているメモリタイプと言えます。
    ちなみに AGP も同じノリで、AGP の場合、Z バッファやテクスチャデータ等の完全性を保障しなくてもいいデータを別ポートにて転送することでパフォーマンスを向上させています。ホンの一瞬の 1-bit 画像化けがゲームの妨げになるとは思えませんし。
  • WT (Write-through)
  • WB (Write-back)
  • WP (Write protected)

VGA の描画用ビデオメモリ(フレームバッファ)の範囲設定を WC(Write Combining) にすることで PC->VGA 間の転送速度が上がり、描画速度を向上させることが可能になります。

MTRR は CPU 以外にも VGA、Chipset も合わせてサポートしている必要があり、Pentium Pro が全盛期だった当時、MTRR を使用するとかなり不安定になった記憶があります。個人的にはあまり良い思い出が無い、というか :)

関連情報

  • Linux Kernel 2.4 Documentation mtrr.txt (JF Project)
    Linux の mtrr 制御方法について記載があります。詳細については LHR/proc/mtrr を参照してください。
  • 日本語技術資料のダウンロード (インテル)
    上記のサイトで公開されている資料「IA-32 インテル アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル、下巻: システム・プログラミング・ガイド」の「メモリ・キャッシュ制御」が参考になります。

Last-modified: 2005.09.11 (日) 16:50:08 (6801d)