MSR (Model-specific Register、モデル固有レジスタ) †
MSR は Pentium から実装(公式的には Pentium Pro から?)されている CPU 内部制御用のレジスタ群です。専用の RDMSR、WRMSR 命令を使用して MSR の読み書きを行います。MSR は CPU 内部の制御を大きく変更してしまうため、プロテクトモードでは Ring-0 に移行しないと読み書きできません。
MSR にて設定を変更できる項目は以下の通り。
- メモリキャッシュ制御
MTRR(メモリタイプ指定レジスタ)を使用してメモリキャッシュ制御を行います。MTRR はMSR の一つで MTRR の読み書きは当然 RDMSR/WRMSR 命令で行います。
MTRR の詳細については CPU/CPUID/MTRR を参照してください。
- 拡張機能の有効/無効
CPU/CPUID/HTT や CPU/CPUID/PSN 等の有効無効を MSR で指定出来ます*1。
- Microcode の更新 (Intel Only)
CPU のパッチである Mircocode の更新が出来ます。Microcode 自体、どのような用途で使用できるかは機密情報とされ公開されていません。雑誌*2の特集によると Microcode の仕組みを理解しているのは Intel 社内でも数名で、それ以外は社内秘で門外不出なんだそうです。
Microcode の詳細については CPU/Microcode からどうぞ。
- パフォーマンスモニタの制御
VTune を始めとする Intel 系のパフォーマンス測定ソフトウェアは、専らこの CPU 機能を使用して測定しています。
- 温度測定
- デバッグ制御
- マシンチェック
限定的ですが、Intel 製 CPU 以外にも多くの CPU で MSR は採用されています。モデル固有と言われるだけあって動作は異なることが多いですが。
関連情報 †
- 日本語技術資料のダウンロード (インテル)
上記のサイトで公開されている資料「IA-32 インテル アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル、下巻: システム・プログラミング・ガイド」に様々な使用用途について記載があります。お勧め。