テストレジスタは、Intel 80386およびIntel 80486プロセッサにおいて、通常は自己テストを行うためにプロセッサが使用するレジスタである。これらのレジスタのほとんどは文書化されておらず、特殊なソフトウェアによって使用される。テストレジスタはTR3からTR7と名付けられている。通常のプログラムでは、通常、これらのレジスタが動作する必要はありません。Pentiumでは、テストレジスタはさまざまなモデル固有のレジスタ(MSR)に置き換えられました。[1]
80386 では、TLBテスト用にTR6とTR7 の2 つのテスト レジスタが提供されていました。TR6 はテスト コマンド レジスタ、TR7 はテスト データ レジスタでした。80486 では、 L1 キャッシュのテスト用にTR3、TR4、TR5 の3 つの追加レジスタが提供されていました。TR3 はデータ レジスタ、TR4 はアドレス レジスタ、TR5 はコマンド レジスタでした。これらのレジスタには、MOV命令のバリアントでアクセスしました。テスト レジスタは、ソース オペランドまたはデスティネーション オペランドのいずれかになります。MOV 命令は、実アドレス モードと保護モードの両方で定義されています。テスト レジスタは特権リソースです。保護モードでは、テスト レジスタにアクセスする MOV 命令は、特権レベル0 でのみ実行できます。他の特権レベルで実行中にテスト レジスタの読み取りまたは書き込みを試みると、一般保護例外が発生します。また、これらの命令は、80486 より新しいほとんどの CPU で無効なオペコード例外を生成します。
命令は、データの流れに応じて 2 つの方法でエンコードされます。汎用レジスタからテスト レジスタへのデータの移動は、0F 26 /r(r/mは GPR、 はregテスト レジスタ) としてエンコードされます。反対方向 (つまり、テスト レジスタから汎用レジスタ) へのデータの移動は、0F 24 /r(r/mは GPR、 はregテスト レジスタ) としてエンコードされます。[2]レジスタ間の移動のみがサポートされているため、命令のModR/Mバイトの "mod" フィールド (上位 2 ビット) は に設定する必要があります11b。(ModR/M バイトの "mod" フィールドを 以外の値に設定すると、11b未定義の動作が発生し、プロセッサによって動作が異なります。[3] )
テスト レジスタおよび/または関連するオペコードは、次のx86プロセッサでサポートされていました。
- ^ Intel 386では、TR4レジスタとTR5レジスタは、命令プリフェッチに関連するデータ項目を返す、文書化されていない読み取り専用レジスタとして機能することが報告されています。[4]
- ^ IBM、TI、STのCyrix 製造パートナーのCPU モデルもすべて、対応する Cyrix ブランドの CPU モデルと同じテスト レジスタをサポートしていました。
- ^ Cyrix由来のST486 CPUコアをベースにしたSoCもCyrix 486と同じテストレジスタセットをサポートしていた。このようなSoCには、例えばSTPC AtlasやZFMicro ZFx86などがある。[10]
- ^ Cyrix 6x86では、TR1およびTR2レジスタはCyrix構成レジスタ30hのビット6を設定することで有効にできます。これらのレジスタは文書化されていませんが、それらを使用するサンプルコードがCyrixによって公開されています。[12]
- ^ Cyrix 6x86では、TR6レジスタとTR7レジスタはTLBのテストだけでなく、プロセッサのVSPM(可変サイズページングメカニズム)の設定にも使用できました。[13] VSPMは、4エントリ[14]のソフトウェアTLBで、エントリごとにマスクがあり、からバイトまで のすべての2の累乗のページサイズをサポートしていました。これはCyrix 6x86にのみ存在し、6x86MX以降のプロセッサでは削除されました。
- ^ 「Joshua」コアのみ。Cyrix III の「Samuel」コアバリアントは TRx テストレジスタをサポートしていませんでした。
- ^ 6x86MX、MII、および「Joshua」Cyrix IIIプロセッサでは、TR3-TR5レジスタはL1キャッシュのテストだけでなく、スクラッチパッドメモリの使用のために個々のL1キャッシュラインを特定のアドレスにロックするためにも使用できます。[15] [16]
参照
参考文献
- ^ Intel、Pentium® プロセッサ ファミリ デベロッパーズ マニュアル、注文番号 241428-005、1997 年、セクション 16.1.2、ページ 442 - 386/486 TRx レジスタと同じ機能を提供する Pentium MSR のリストを示します。
- ^ 80386 の紹介 (80386 データシートを含む) Intel 1986 年 4 月 p. 122。
- ^ Robert L. Hummel、PC Magazine Programmer's Technical Reference、1992年、ISBN 1-56276-016-5、476ページ。
- ^ Robert Collins、「Move Special Registers」、1997年6月5日アーカイブ。
- ^ AMD、Am386 マイクロプロセッサ データブック、1992 年、21 ページと 151 ページ
- ^ AMD、Am486® マイクロプロセッサ ソフトウェア ユーザーズ マニュアル、rev.1、1994、セクション 1.59、p. 82
- ^ John H. Wharton, The Complete X86, Volume 1, 1994. MicroDesign Resources、ISBN 1-885330-02-2、296ページ。
- ^ Chips and Technologies、Super386 DX プログラマーズリファレンスマニュアル、pub.no. UG85、 rev 1.0、1992、ページ 201。
- ^ NexGen、Nx586™ プロセッサおよび Nx587™ Numerics プロセッサ データブック、1993 年 7 月 8 日、116 ページ
- ^ ZFMicro、ZFx86 データブック 1.0 Rev D、2006 年 6 月 5 日、101 ページ
- ^ Cyrix、Cx486DLC マイクロプロセッサ データ シート、注文番号 94706-01、1992 年 5 月、セクション 2.3.2.6、p.37
- ^ Cyrix、6x86 BIOS ライター ガイド、リビジョン 4.1、1996 年 7 月 29 日、43 ページ。
- ^ Cyrix、6x86 プロセッサ データ ブック、注文番号 94175-01、1996 年 3 月、セクション 2.6.5、p. 74
- ^ Linux カーネル アーカイブ、Re: Cyrix 6x86 パッチ..、1996 年 11 月 4 日
- ^ Cyrix、6x86MX プロセッサ データ ブック、注文番号 94329-00、1997 年 7 月 15 日、セクション 2.13.1.1、87 ページ
- ^ VIA-Cyrix Corp.、Cyrix III プロセッサ データブック、v1.0、2000 年 1 月 25 日、セクション 2.9.1.1、86 ページ
- ^ Cyrix、MediaGX プロセッサ データ ブック、改訂 2.0、1998 年 10 月 29 日、セクション 3.3.2.4、p.59
- ^ AMD、Geode™ LX プロセッサ データブック、発行 ID: 33234H、2009 年 2 月、セクション 8.3.4.3、p.648
- ^ IDT、WinChip C6 プロセッサ データシート、セクション A.2、p.79
- ^ Intel、Quark SOC X1000 Core 開発者マニュアル、注文番号 329679-001、2013 年 10 月、付録 B、296 ページ
