インテルマイクロコードは、インテル製のx86プロセッサ内で実行されるマイクロコードです。1990年代半ばに導入されたP6マイクロアーキテクチャ以降、マイクロコードプログラムは、リリース後にCPUで発見されたバグを回避するために、オペレーティングシステムまたはBIOSファームウェアによってパッチを適用できるようになりました。 [ 1 ]インテルは当初、テスト向け設計(DFT)イニシアチブ の一環として、プロセッサのデバッグ用にマイクロコードアップデートを設計していました。[ 2 ]
Pentium FDIVのバグを受けて、パッチ可能なマイクロコード機能は、製品のリコールを行わずに現場でのアップデートを可能にするという、より幅広い目的で使用されるようになりました。[ 1 ]
P6以降のマイクロアーキテクチャでは、x86命令は特定のプロセッサとステッピングレベルに固有のより単純なRISCスタイルのマイクロ操作に内部的に変換されます。[ 1 ]
P6以前のマイクロコード
Intel 80486とAMD Am486には約5000行のマイクロコードアセンブリがあり、合計約240KビットがマイクロコードROMに格納されています。[ 3 ]
P6以降のマイクロオペレーション
Pentium Pro以降のほとんどのIntel x86プロセッサでは、命令は命令フェッチ・デコードユニットによってプロセッサ固有のマイクロオペレーションのシーケンスに変換され、プロセッサによって直接実行されます。マイクロコードで実装された命令の場合、マイクロコードはオンチップメモリからフェッチされたマイクロオペレーションで構成されています。[ 4 ]
Pentium Proでは、各マイクロオペレーションは72ビット幅、[ 5 ] : 43 または118ビット幅である。[ 6 ] : 2 [ 7 ] : 14 これには、オペコード、2つのソースフィールド、および1つのデスティネーションフィールドが含まれ、[ 8 ] : 7 32ビットの即値を保持できる。[ 6 ] [ 7 ] : 14 Pentium Proは、内部のマイクロコードROMでパリティエラーを検出し、マシンチェックアーキテクチャを介してこれを報告することができる。[ 9 ]
マイクロオペレーションは、最大3つのソース入力と2つの出力を持つ一貫した形式を持っています。[ 10 ] プロセッサは、実行の前後にレジスタ名の変更を行って、これらの入力を実レジスタファイル(RRF)との間でマッピングします。 [ 10 ]アウトオブオーダー実行が使用されるため、マイクロオペレーションとそれが表す命令は同じ順序で出現しない場合があります。
Pentium Proの開発中、A2ステッピングとB0ステッピングの間にいくつかのマイクロコード修正が行われました。[ 11 ] Pentium II(P6 Pentium Proベース)では、MMX命令セットをサポートするために追加のマイクロ操作が追加されました。[ 12 ] いくつかのケースでは、まれなコーナーケースを確実に処理するために「マイクロコードアシスト」が追加されました。[ 12 ]
Pentium 4 は、同時に 126 個のマイクロ操作を実行できます。[ 13 ] :10 マイクロ操作はデコードされ、12,000 エントリの実行トレース キャッシュに格納され、同じ x86 命令の繰り返しデコードを回避します。[ 13 ] :5 6 個のマイクロ操作のグループが 1 つのトレース ラインにパックされます。[ 13 ] :5 マイクロ操作は、同じキャッシュ ライン内で追加の即時データ空間を借りることができます。[ 14 ] :49 例外処理などの複雑な命令は、マイクロコード ROM にジャンプします。[ 13 ] : 6Pentium 4 の開発中、マイクロコードがプロセッサのバグの 14% を占めていましたが、Pentium Pro の開発中は 30% でした。[ 15 ] :35
2006年に導入されたIntel Coreマイクロアーキテクチャでは、比較とジャンプを含むいくつかの一般的な命令ペアに「マクロ操作融合」が追加されました。 [ 16 ] Coreの命令デコーダは、x86命令を3つの異なる方法でマイクロコードに変換します。
| x86命令 | x86デコーダー | マイクロオペレーション |
|---|---|---|
| 一般 | シンプルデコーダー×3 | 1~3 |
| 他のほとんどの | 複素デコーダー×1 | ≤4 |
| 非常に複雑 | マイクロコードシーケンサー | 多くの |
インテルのハイパースレッディングによる同時マルチスレッド実装では、マイクロコードROM、トレースキャッシュ、命令デコーダは共有されますが、マイクロオペレーションキューは共有されません。[ 17 ]
アップデート機能
1990年代半ば、新しいマイクロコードを供給する機能は当初Pentium Pro BIOSアップデート機能と呼ばれていました。[ 18 ] [ 19 ]これは、ユーザーモードのアプリケーションがBIOS割り込み呼び出しを行って新しい「BIOSアップデートデータブロック」を供給することを意図しており、BIOSはこれを部分的に検証して不揮発性BIOSメモリに保存し、次回の起動時にインストールされているプロセッサに供給することができました。[ 18 ]
インテルは、 DOSで実行可能な「」というBUP_UTIL.EXE名前に変更されたプログラムを配布しました。複数のマイクロコードアップデートのコレクションは連結され、拡張子「」を使用して番号が付けられました(例:」)。[ 20 ]:79 CHECKUP3.EXE.PDBPEP6.PDB
プロセッサインターフェース
プロセッサは、プロセッサ内部に保持され、内部ROMに格納されているマイクロコードセットを使用して起動します。[ 1 ] マイクロコードの更新により、別のSRAMと、マイクロコードROM内でブレークポイントとして機能する「マッチレジスタ」セットが作成され、 SRAM内の更新されたマイクロ操作リストへのジャンプが可能になります。[ 1 ]マイクロ コード命令ポインタ(UIP)とすべてのマッチレジスタ間で一致が行われ、一致すると対応する宛先マイクロコードアドレスへのジャンプが行われます。[ 2 ] : 3 オリジナルのP6アーキテクチャでは、SRAMに60個のマイクロ操作と複数のマッチ/宛先レジスタペアのためのスペースがあります。[ 1 ] [ 2 ] : 3 ROMマイクロコードからSRAMに保持されているパッチ適用済みマイクロコードへのジャンプには、1プロセッサ命令サイクル かかります。[ 1 ] マッチレジスタは、マイクロコード一致アドレスとマイクロコード宛先アドレスで構成されます。[ 21 ]
マイクロコードの更新を開始するには、プロセッサは保護リング0(「リング0 」)にある必要があります。 [ 21 ]:1 対称型マルチプロセッシング構成 の各CPUは個別に更新する必要があります。[ 21 ]:1
更新は、そのアドレスをeaxレジスタに格納し、設定しecx = 0x79、wrmsr(モデル固有のレジスタへの書き込み)を実行することによって開始されます。[ 22 ]:435
マイクロコード更新フォーマット
インテルはマイクロコードの更新を2,048(2キロバイト)のバイナリブロブとして配布しています。[ 1 ] この更新には、どのプロセッサ向けに設計されているかの情報が含まれており、CPUID命令の結果と照合することができます。[ 1 ] この構造は48バイトのヘッダーと、それに続く2,000バイトで構成され、更新するプロセッサによって直接読み取られます。[ 1 ]
- マイクロコード更新プロセス中にプロセッサによって実行されるマイクロコードプログラム。[ 1 ] このマイクロコードは、特殊なレジスタを使用してコンポーネントを再構成したり、有効化または無効化したりすることができ、ブレークポイントマッチレジスタを更新する必要がある。[ 1 ]
- 最大60個のパッチされたマイクロオペレーションがSRAMに格納されます。[ 1 ]
- マイクロコード更新のフォーマットを分かりにくくするために、ランダムな値で構成されたパディング。 [ 1 ]
各ブロックは異なる方法でエンコードされており、2,000バイトの大部分は構成プログラムやSRAMマイクロオペレーションの内容としては使用されず、それ自体ははるかに小さい。[ 1 ] プロセッサへのアップデートの適用が可能かどうかの最終的な判断と検証は、プロセッサによる復号化中に実行される。 [ 18 ]各マイクロコードアップデートは特定のCPUリビジョンに固有のものであり、異なるステッピングレベルのCPUでは拒否されるよう設計されている。マイクロコードアップデートは、改ざんを防止し、検証を可能にするために暗号化されている。[ 23 ]
ペンティアムには2層の暗号化が施されており、その詳細はインテルによって明確に文書化されておらず、10人未満の従業員にしか知られていない。[ 24 ]
Intel Atom、Nehalem、Sandy Bridgeのマイクロコードアップデートには、10進数で17の指数を持つ2048ビットRSA係数を含む520バイトの追加ヘッダーが含まれています。 [ 21 ]:7、8
Intel Goldmont CPU、そしておそらく他の世代のCPUでは、マイクロコードの内容をRC4 -drop512で復号し、復号した内容をSHA256でハッシュ化し、ハッシュの署名をRSA-2048で検証することが判明しています。CPU自体には、RC4鍵を導出するための64バイトのシードと、RSA-2048係数のSHA256ハッシュが含まれており、マイクロコードBLOB内の別のハッシュと交換することはできません。[ 25 ]
| マイクロアーキテクチャ | プロセッサの例 | 供給長さ | 機能的長さ | 疑わしいエンコード |
|---|---|---|---|---|
| P6 | ペンティアムプロ | 2000 | 864; 872; 944; 1968 | 64ビットブロック暗号 |
| コア | PIII …コア2 | 4048 | 3096 | |
| ネットバースト | P4、ペンティアムD、セレロン | 2000–7120 | 2000 + N*1024 | 連鎖ブロック暗号 |
| アトム、ネハレム、サンディブリッジ | コアi3/i5/i7 | 976–16336 | 976 + N*1024; 5120 | AES + RSA署名 |
デバッグ
特別なデバッグ用マイクロコードをロードして拡張実行トレースを有効にすると、ブレークポイントモニターピンを介して追加情報が出力されます。[ 26 ] Pentium 4では、特別なマイクロコードをロードすることで、マイクロコード拡張実行トレースモードにアクセスできます。[ 26 ] JTAGテストアクセスポート(TAP) を使用する場合、一対のブレークポイント制御レジスターを使用して、マイクロコードアドレスでブレークすることができます。[ 26 ]
1980年代半ば、NECとインテルはマイクロコードの著作権をめぐって米国連邦裁判所で長期にわたる訴訟を繰り広げていた。[ 27 ] NECはNEC μPD8086でインテル8086 CPUのセカンドソースとして活動しており、インテルと長期の特許および著作権クロスライセンス契約を結んでいた。1982年8月、インテルはマイクロコードの実装に関して著作権侵害でNECを提訴した。[ 28 ] [ 29 ] NECはクリーンルームソフトウェアエンジニアリングによって、V20およびV30プロセッサのマイクロコードの実装における類似性は、コピーによるものではなく、アーキテクチャによって要求される制約の結果であることを実証し、勝訴した。[ 27 ]
Intel 386 はマイクロコードとプログラマブルロジックアレイの組み込みセルフテストを実行でき、セルフテストの値はレジスタに格納されます。[ 30 ] BIST 中、マイクロプログラムカウンタはすべての ROM を調べるために再利用され、結果は複数入力シグネチャレジスタ (MISR) と線形フィードバックシフトレジスタのネットワークを介して照合されます。[ 31 ] Intel 486の起動時に、ハードウェア制御の BIST が 2 20クロックサイクル実行され、マイクロコード ROM を含むさまざまなアレイがチェックされます。その後、制御はマイクロコードに移され、レジスタと計算ユニットのさらなるセルフテストが行われます。[ 32 ] Intel 486 のマイクロコード ROM には 250,000 個のトランジスタがあります。[ 32 ]EAX
AMDは、インテルの286、386、486マイクロコードを再利用する長期契約を結んでいた。[ 33 ] 2004年10月、裁判所は、この契約はAMDによるインテルの486インサーキットエミュレーション(ICE)マイクロコードの配布には適用されないとの判決を下した。[ 33 ]
直接アクセステスト
ダイレクトアクセステスト(DAT)は、テストのための設計(DFT)とデバッグのための設計(DFD)イニシアチブの一部としてIntel CPUに組み込まれており、販売前に個々のCPUを完全にカバーするテストが可能です。[ 34 ]
2020年5月、制御レジスタバス(CRBUS) [ 35 ]から直接読み取るスクリプト(JTAG USB-A to USB-A 3.0 with Debugging Capabilitiesの「Red Unlock」を悪用した後、D+、D-、Vccなしで[ 36 ] )を使用して、Intel Goldmont CPUのローカルダイレクトアクセステスト(LDAT)ポートから読み取り、ロードされたマイクロコードとパッチ配列が読み取られました。[ 37 ]これらの配列は、CPUが特定のモードになった後にのみアクセス可能であり、オフセット0x6a0を介してアクセスされる5つの配列で構成されています。[ 38 ]
- ROM: マイクロコードトライアド
- ROM: シーケンスワード
- RAM: シーケンスワード(更新可能)
- RAM: マッチ/パッチペア(更新可能)
- RAM: マイクロコードトライアド(更新可能)
参考文献
- ^ a b c d e f g h i j k l m n o Gwennap , Linley (1997年9月15日). 「P6マイクロコードはパッチ適用可能」(PDF) . Microprocessor Report . 2009年12月21日時点のオリジナル(PDF)からアーカイブ。 2018年1月23日閲覧。Intelは、
Pentium Pro
および
Pentium II
を含む
P6
プロセッサにマイクロコードパッチ機能を実装しました。…この機能により、プロセッサの製造後にマイクロコードを変更し、プロセッサの設計後に発見されたバグを修正できます。…当初この機能はデバッグ専用として設計されていましたが、Pentium FDIVバグのコスト削減に対処した後、Intelはこれを現場で使用できるようにすることを決定しました。…P6チップは、内部ROMにマイクロコード一式を搭載しています。…BIOSは、ダウンロードシーケンスを開始するために、メモリアドレスを特別なCPUレジスタに書き込みます。…P6プロセッサは、最大60個のマイクロ命令を保持できる小型SRAMを搭載しています。パッチコードはこのSRAMにダウンロードされます…また、特定のマイクロコードアドレスに遭遇するとトラップを発生させる「マッチ」レジスタのセットも含まれています。(これは、アセンブリコードのデバッグに使用される「命令ブレークポイント」機能に似ています。)このトラップは1サイクルで処理され、マイクロコードの実行をパッチRAMにベクトル化します。…ダウンロードされたマイクロコードは2つのセグメントで構成されています。…1つ目は、すぐに実行される初期化ルーチンです…必要に応じてマッチレジスタも初期化します。…2つ目のセグメントには、通常動作中にパッチRAMに保持され、マッチレジスタトラップを介してアクセスされる1つ以上のパッチが含まれています。…元のマイクロコードはROMに保存されます…マッチレジスタによってマイクロコードの動作を変更できます。このようにして、マイクロコードで実装されていると仮定すると、正しく動作しないx86命令を修復できます。…元のマイクロコードの一部を置き換えるパッチが作成され、正しい動作を実行してから元に戻ります。…マッチレジスタの数…複数。 …単一のバグ、…複数のパッチが必要になる可能性があり、一部のバグは修復するには複雑すぎる…メカニズムにより複数のバグを修正できる可能性がある…P6プロセッサの機能は、特別なレジスタを介して無効にすることができる…2,048バイトのデータブロック。ブロックには48バイトのヘッダーが含まれており、これには日付コード、CPU ID (ステッピングレベルを含む)が含まれます。)、およびチェックサム、そしてプロセッサにダウンロードされる 2,000 バイトのデータです。… チェックサムは CPU では使用されません。… 2,000 バイトのデータ は、Intel によれば解読が極めて困難であるという方法で暗号化されています。バイトはさまざまな長さのブロックに分割され、それぞれが異なってエンコードされています。… 通常 2,000 バイトよりはるかに小さく、残りのデータは、暗号を解読しようとする者を混乱させるためのランダム ノイズです。… Intel はマイクロコードの形式に関する情報を一切公開していません。… は意図的に理解しにくいように設計されています。P6 マイクロコードの形式を知っているのは、Intel の従業員のごくわずかです。
- ^ a b c Yeoh Eng Hong; Lim Seong Leong; Wong Yik Choong; Lock Choon Hou; Mahmud Adnan (1998年4月20日). Chao, Lin (編). 「PentiumおよびPentium Proマイクロプロセッサ向け高度な故障解析手法の概要」(PDF) . Intel Technology Journal (Q2).
Pentium Proマイクロプロセッサ... マイクロパッチ
DFT
機能。... は、マイクロコード パッチ RAM と、複数のマッチ レジスタとデスティネーション レジスタのペアという 2 つの主要要素で構成されています。... マイクロコード命令ポインタ (UIP) がマッチ レジスタの内容と一致すると、UIP にデスティネーション レジスタの新しいアドレスが再ロードされます。...リセット サブルーチンの
UIP は
マッチ レジスタに設定でき... これにより、リセット サブルーチンが完全にバイパスされます。
- ^ Trumbull, Patricia V. (1994-10-07). Intel Corporation v. Advanced Micro Devices (裁判の「 ICE 」モジュールにおける事実認定および結論).米国北カリフォルニア地区連邦地方裁判所. サンノゼ. 2021-05-10閲覧– Advanced Micro Devices経由. 12本のピンは「ICE」回路に関連しています。… AMD 486DXLおよびDXLVは
、「SMM」機能を実装するために、 「
ICE
」に関連する3本のピンを接続しています。…
486
には250行、つまり12,032ビットの「ICE」マイクロコードがあります
。「
ICE
」は486マイクロコード全体の約5%を占めています。… 2行… (「
ICE
」モードの「
フリップフロッ
プ」を設定するために使用)… 青色でコード化されたマイクロコード行は製造テストに関連し、「
ICE
」関連の目的には使用されません
。 … インテルは、
486SL
において、このバージョンのチップのデータシート機能である「
SMM
」を実行するために、赤色でコード化された75本のラインを使用しました。黄色のコード化された約32本のラインは、「ICE」に固有ではない日常的な処理を実行します。約2本のラインは「ICE」専用として残されています。
- ^ 「Pentium Proプロセッサマイクロアーキテクチャの旅」 Intel 1996年12月20日時点のオリジナルよりアーカイブ。
- ^ Kubiatowicz, John (2004年5月3日). 「P6 (Pentium Pro, II, III) における動的スケジューリング」(PDF) .低消費電力設計、先進のインテル® プロセッサー. CS152 コンピュータアーキテクチャとエンジニアリング (講義25).
複雑な80x86命令は、
長いマイクロオペレーションシーケンスを発行する従来のマイクロプログラム (
8K x 72ビット) によって実行されます。
- ^ a b Gwennap, Linley (1995年2月16日). 「IntelのP6は分離型スーパースカラ設計を採用」(PDF) . Microprocessor Report . 第9巻第2号. MicroDesign Resources. pp. 1– 7. S2CID 14414612 . 2018年10月8日時点のオリジナル(PDF)からアーカイブ。P6
μOPSは118ビットの固定長で、通常の構造を用いて1つの演算、2つのソース、および1つのデスティネーションをエンコードする。ソースフィールドとデスティネーションフィールドはそれぞれ32ビットのオペランドを格納できる幅を持つ。
- ^ a b Asanovic, Krste (2002). "P6 uops" (PDF) . Microprocessor Evolution: 4004 to Pentium Pro (Spring): 14. 2018年1月23日閲覧.
各uopは約118ビットの固定フォーマットを持ちます… – オペコード、2つのソース、およびデスティネーション… – ソースフィールドとデスティネーションフィールドは、即値またはオペランドを保持するために32ビット幅です
- ^ Colwell, Robert P.; Steck, Randy L.; Intel Corporation (1995-04-12). 「A 0.6 μm BiCMOS Processor With Dynamic Execution」(PDF) . p. 7 . 2020-05-27閲覧。
マイクロオペレーションはP6プロセッサにおけるアトミックな作業単位であり、オペコード、2つのソースオペランド、1つのデスティネーションオペランドで構成されています。これらのマイクロオペレーションは固定長であり、スケジューリングが必要なため、Pentium(R)プロセッサのマイクロコードよりも汎用的です。
- ^ 16.6.1. シンプルエラーコード(PDF) .マシンチェックアーキテクチャ(レポート). Pentium® Pro ファミリー デベロッパーズマニュアル. 第3巻: オペレーティングシステムライターズガイド. 1996年1月3日. p. 401. 2001年9月6日時点のオリジナルからアーカイブ。2018年10月1日閲覧。
固有のコードはグローバルエラー情報を示す…マイクロコードROMパリティエラー
- ^ a b Ronen, Ronny; Intel Labs (2005年1月18日). Micro Operations (Uops) (PDF) . The Pentium II/III Processor "Compiler on a Chip" (Report). Haifa: Tel Aviv University . pp. 26, 31, 32, 43, 44, 46. 2007年4月16日時点のオリジナル(PDF)からのアーカイブ。 2018年1月23日閲覧。
各「
CISC
」
命令
は1つ以上の
uopsに分割されます…
src
/
dest
の標準表現
(3
src
、2
dest
) … 例えば、
次のようになります
…
ID
: 命令を
uops
に変換します。最大 6 個の
uop
をバッファリングします…
割り当て
と
RAT … 1 クロックあたり最大 3 個の
uop
を処理できます
… 予約ステーション (RS) … 未実行のすべての
uop
のプール(最大 20 個) … 順序どおりにリタイアします: … 1 クロックあたり最大 3 個の
uop
をリタイアします…
OOO
クラスタ … 1 クロックあたり最大 5 個のリソース準備完了
uop
が選択され、ディスパッチされます
pop eaxesp1<-esp0+4, eax1<-[esp0] - ^ Papworth, David B.; Intel Corporation (1996年4月). 「Pentium Proマイクロアーキテクチャのチューニング」(PDF) . IEEE Micro . p. 14. ISSN 0272-1732 . 2018年10月8日時点のオリジナル(PDF)からのアーカイブ。 2018年10月8日閲覧。B0
ステッピングには、Aステップシリコンで発見された問題に対するマイクロコードバグとスピードパスの修正がいくつか組み込まれている。
- ^ a b Kagan, Michael; Gochman, Simcha; Orenstien, Doron; Lin, Derrick (1997). 「MMXテクノロジ搭載PentiumプロセッサおよびPentium IIマイクロプロセッサのMMXマイクロアーキテクチャ」(PDF) . Intel Technology Journal (Q3): 6, 7.
Pentium IIプロセッサのマイクロアーキテクチャは、Pentium Proマイクロプロセッサのものと類似しています…新しい
MMX
命令をPentium Proプロセッサ固有のuopに変換するように変更されています(新しいSIMD [Single Instruction Multiple Data] uopが追加され、新機能が実装されました)。…問題を修正し、操作をやり直すために、マイクロコードアシストが作成されました。アシストは、ユーザーからは見えないイベントで、マシンをフラッシュアウトし、まれではあるものの対処が難しい問題をマイクロコードが処理できるようにします。すべてのMMX命令は
TOS
をゼロにするため、アシストは
TOS
をゼロに書き込んで操作を再開する必要があります。 … MMX命令オペコードマップにおける命令ホールである不正オペコードは、1つのuopアシストコールを生成するように定義されています。このアシストコールは、ROBにマシンをフラッシュするよう指示し、アシストマイクロコードフローによってプロセッサが不正オペコードエラーを処理できるようにします。
- ^ a b c d Hinton, Glenn; Sager, Dave; Upton, Mike; Boggs, Darrell; Carmean, Doug; Kyker, Alan; Roussel, Patrice (2001). Chao, Lin (ed.). "The Microarchitecture of the Pentium 4 Processor" (PDF) . Intel Technology Journal . No. Q1.
IA-32命令バイトは、uops (マイクロオペレーション) と呼ばれる基本オペレーションにデコードされます。これは、レベル1 (L1) 命令キャッシュの高度な形式で、命令デコードロジックと実行コアの間に配置され、デコード済みのuopsを保存します。命令は一度デコードされ、そこから繰り返し使用されます。最大12Kのuopsを保持できます。ヒット率は、従来の8K~16Kバイトの命令キャッシュと同等です。 … トレース ラインごとに 6 つの uop のグループに uop をパックします … マイクロコード ROM … 文字列の移動などの複雑な IA-32 命令や、障害および割り込み処理用 … トレース キャッシュはマイクロコード ROM にジャンプし、そこから uop が発行されます … マイクロコード ROM が uop のシーケンス処理を完了すると … マシンのフロントエンドはトレース キャッシュから uop のフェッチを再開します … Pentium 4 プロセッサのディープ バッファリング (126 の uop と 48 のロードが実行中)
- ^ Fog, Agner (2020-05-25). 「Intel、AMD、およびVIA CPUのマイクロアーキテクチャ」(PDF) (アセンブリプログラマとコンパイラメーカー向けの最適化ガイド). デンマーク工科大学. p. 49.
… μopの即値32ビットオペランドが±2
15 の
範囲外にあり、16ビット符号付き整数として表現できない場合、近くのμopからストレージスペースを借りることができない限り、2つのトレースキャッシュエントリが使用されます。… 追加のストレージスペースが必要なμopは、独自のデータスペースを必要としない近くのμopから16ビットの追加のストレージスペースを借りることができます。
- ^ Bentley, Bob; Gray, Rand (2001). Chao, Lin (編). 「Intel® Pentium® 4 プロセッサの検証」(PDF) . Intel Technology Journal (Q1): 29– 26.
バグに関する議論
- ^ a b De Gelas, Johan (2006年5月1日). 「Intel Core versus AMD's K8 architecture」 . AnandTech . p. 3. 2010年8月12日時点のオリジナルよりアーカイブ。2018年1月23日閲覧。Core
アーキテクチャには、4つのx86デコーダー(シンプルデコーダー3つとコンプレックスデコーダー1つ)が搭載されており、1~15バイトの可変長x86命令を固定長RISCライクな命令(マイクロオペレーションと呼ばれる)に変換します。一般的なx86命令は単一のマイクロオペレーションに変換されます。コンプレックスデコーダーは、最大4つのマイクロオペレーションを生成する命令を担当します。非常に長く複雑なx86命令は、マイクロコードシーケンサーによって処理されます。マクロオペレーション融合…x86比較命令(
)はジャンプ命令(
)と融合されます。
CMPJNE TARG - ^ Kim, Dongkeun; Shih-wei Liao, Steve; Wang, Perry H.; del Cuvillo, Juan; Tian, Xinmin; Zou, Xiang; Wang, Hong; Yeung, Donald; Girkar, Milind; Shen, John P. (2004年1月11日). 「Intelのハイパースレッディング・プロセッサにおけるプリフェッチ・ヘルパースレッドの物理的実験」(PDF) . pp. 4, 5. 2018年1月24日閲覧.
L1トレースキャッシュ: 12Kマイクロオペレーション、8ウェイ・セット・アソシエイティブ、1ラインあたり6マイクロオペレーション… 共有: トレースキャッシュ、…
IA-32
命令デコード、マイクロコードROM、
Uop
リタイアメントロジック、… パーティション: Uopキュー
- ^ a b c 8: Pentium Pro プロセッサ BIOS アップデート機能(PDF) (レポート). 2.0. Intel. 1996年1月12日. p. 45. 2020年11月3日閲覧。
認証手順では、プロセッサが提供する復号化を利用して、潜在的に悪意のあるソースからの更新を検証します。
- ^スティラー、アンドレアス;ポール、マティアス R. (1996-05-12)。「プロゼソルグフラスター」。c't – コンピュータ技術に関する雑誌。トレンドとニュース / aktuell - Prozessoren (ドイツ語)。 Vol. 1996年、いいえ。 6. Verlag Heinz Heise GmbH & Co KG。 p. 20. ISSN 0724-8679。2017-08-28 のオリジナルからアーカイブ。2017 年 8 月 28 日に取得。
- ^スコット・ミューラー、クレイグ・ザッカー(1998年9月)。ジム・ミナテル、ジル・バイパス、リック・クーゲン(編)『PCのアップグレードと修理』(PDF)(10周年記念版)。Que Publishing。79ページ。ISBN 0-7897-1636-42018年10月1日取得。
更新データベースファイルPEP6.PDBでサポートされているプロセッサステッピング(リビジョン)とマイクロコード更新リビジョン…プロセッサ更新ユーティリティ(CHECKUP3.EXE)を使用すると…正しいマイクロコード更新を簡単に確認できます。
- ^ a b c d e Chen, Daming Dominic; Ahn, Gail-Joon (2014年12月11日). 「x86プロセッサマイクロコードのセキュリティ分析」(PDF) .アリゾナ州立大学. pp. 1, 5, 7. 2018年1月23日閲覧。
プロセッサのマイクロコードを更新するには、スーパーバイザ権限(リングゼロ)が必要です。1970年代以降、プロセッサメーカーはx86を一連の(RISC)マイクロオペレーション(uops)にデコードしてきました。特に1994年の悪名高い
Pentium FDIVバグ
以降、動的デバッグ機能を実装し、プロセッサのエラッタを修正するための更新メカニズムを提供するために、書き込み可能なパッチメモリが導入されました。 1995年にはP6(Pentium Pro)マイクロアーキテクチャ、 1999年には
K7マイクロアーキテクチャ、
対称型マルチプロセッシング
(SMP)を搭載し
、各論理プロセッサで同期的に実行される必要があります。MROMに加えてRAMにもパッチを適用します。最大60個のマイクロ
命令
があり、パッチ適用はマッチレジスタとデスティネーションレジスタのペアによって実装されます。520バイトのブロックには、各プロセッサファミリ内で一定であると思われる2048ビットのRSA係数が含まれます。その後に、固定値11hの4バイトのRSA指数が続きます。
- ^ Shanley, T. (1998). Pentium Pro および Pentium II システムアーキテクチャ. Addison-Wesley Professional. p. 435. ISBN 9780201309737。
- ^ Wolfe, Alexander (1997年6月30日). 「Intel、Pentium MPUのバグを解消する計画を準備」 . EE Times . No. 960. 1999年11月13日時点のオリジナルよりアーカイブ。 2018年10月3日閲覧– Techweb経由。
「BIOSアップデート機能」というあまり知られていない名称。…「各BIOSアップデートは、プロセッサの特定のステッピングに合わせて調整されています。」…データブロックは、…復号後、マイクロコード自体に直接マッピングされます。
- ^ Wolfe, Alexander (1997年6月30日). 「Intelのバグ対策機能に発見された脆弱性」 . EE Times . サンタクララ. 2003年3月9日時点のオリジナルよりアーカイブ。
インテルのマイクロプロセッサグループに所属するテクニカルマーケティングマネージャー、アジェイ・マルホートラ氏はこう語る。「マイクロコードパッチを含むデータブロックが暗号化されているだけでなく、プロセッサがBIOSアップデートのヘッダーを検査した後、アップデートを正常にロードする前に、プロセッサ内で2段階の暗号化が行われます。」…これは厳重に守られた秘密だ。「文書化されていません」と、インテルのマイクロプロセッサグループのアーキテクト、フランク・ビンズ氏は言う。「この内容が記されたインテルの『レッドブック』が手に入るわけではありません。実際には、インテル全体で10人にも満たない人しか理解していないのです。」
- ^ Borrello, Pietro; Easdon, Catherine; Schwarzl, Martin; Czerny, Roland; Schwarz, Michael (2023), CustomProcessingUnit: Intel Microcodeのリバースエンジニアリングとカスタマイズ, doi : 10.60882/CISPA.24614721.V1 , 2025年11月10日取得
- ^ a b c「Intel プローブ モードの詳細」。Hardice。2018年1 月 23 日閲覧。特別な命令が実行されると、
BPM
を介してパケットが送信されます
。拡張実行トレースを有効にするには、特別なマイクロコード パッチを適用する必要があります。Pentium 4 のみ、2 つ目のタイプが存在します。これはマイクロコード拡張実行トレースと呼ばれます。制御レジスタ バスにより、
LLC
やマイクロコード/
仮想ヒューズ
PROM へのアクセスなど、プロセッサの内部配列や機能にアクセスできます。CPU パッケージ上にありますが、CPU シリコン ダイ内にはありません。この PROM には、コールド ブート中に CPU が読み込むマイクロコードも含まれています。48 ビットのマイクロコード アドレスにブレークポイントがあります。TAP
コマンド BRKPTCTLA および BRKPTCTLB
によって
アクセス
さ
れ
ます。
- ^ a bエルキンス、デイビッド・S. (1990年冬)。「NEC対インテル:「クリーンルーム」手順を証拠として用いるための手引き」。コンピュータ/ロー・ジャーナル。10 (4): 453。NECによる
クリーンルーム手順
の裁判証拠としての
使用…
グレイ判事は
マイクロコードを…著作権法の「コンピュータプログラム」の定義の範囲内で定義した…インテルのマイクロコードは著作権保護対象となる…インテルのマイクロコードには必要な著作権表示が含まれていなかった…著作権は失効していた…インテルはコピーの主張の根拠を失った
- ^ Hinckley, Robert C. (1987年1月). 「NEC対Intel:ハードウェアは著作権編集者のブラックホールに引き込まれるのか?」サンタクララハイテクノロジーロージャーナル. 3 (1).付録
: マイクロコードフォーマット;
8086/8088フォーマット
;
V20
/V30フォーマット
- ^ Leong, Kathy Chin (1988年3月28日). 「Intelの証人が証言を撤回」 . Computerworld . 第22巻第13号. サンノゼ. pp. 83, 84. ISSN 0010-4841 . 2018年10月2日閲覧。
- ^ 「Intel386 DXマイクロプロセッサ 32ビットCHMOSマイクロプロセッサ(統合メモリ管理機能付き)」(PDF)。1995年12月。2004年9月3日時点のオリジナルからアーカイブ。セルフテストは、すべての制御ROMの機能をチェックします…EAXレジスタには、Intel386 DXがマイクロコードと主要な
PLA
コンテンツ
のセルフテストに合格したことを示す00000000hのシグネチャが含まれます。
- ^ 「5.1 Intel 80386における徹底的なテスト」(PDF) .組み込みシステム向けBIST(ビルトインセルフテスト) . 組み込みシステムのテスト . IIT Kharagpur : 2006年10月7日. 2018年10月6日閲覧.
ROMの場合、パターンは通常のロジックの一部であるマイクロプログラムカウンターによって生成されます。
- ^ a b Gelsinger, Patrick ; lyengar, Sundar ; Krauskopf, Joseph ; Nadir, James ; Intel (1999). i486™ CPU におけるコンピュータ支援設計と組み込み自己テスト(PDF) . 1989 IEEE International Conference on Computer Design: VLSI in Computers and Processors. IEEE. pp. 200– 201.
- ^ a b「AMDに対する裁判所の判決に懸念」 InfoWorld 、 1994年10月17日、5ページ。 2018年1月24日閲覧。
カリフォルニア州サンノゼ連邦地方裁判所の判決では、AMDはAMDマイクロプロセッサに搭載されているIntelの
インサーキット・エミュレーション
(ICE)コードを使用する権利を有しないとされています。このコードは全てのAMD 486に搭載されていますが、低消費電力の486-DXLおよび486-DXLVプロセッサでのみ使用されています。…AMDは、このコードを排除するため、486シリーズ全体の見直しに着手しました。
- ^ Wu, David M.; Lin, Mike; Reddy, Madhukar; Jaber, Talal; Sabbavarapu, Anil; Thatcher, Larry; Intel Corporation (2004). 「Intel 高性能マイクロプロセッサ向け最適化された DFT およびテストパターン生成戦略」(PDF) . pp. 38, 43, 44.
アレイへのアクセスと診断にはダイレクト・アクセス・テスト (DAT) を使用し、メモリセルの安定性テストにはプログラマブル・ウィーク・ライト・テスト・モード (PWWTM) を使用することでテスト時間を短縮します。… アレイ
DFT
テスト戦略は、第 2 レベルキャッシュのテストに PBIST (Programmable Built-In Self Test) を使用し、残りのアレイのテストに DAT を使用することです。… PBIST は JTAG TAP コントローラを介して利用できます。… 図 4 に示す PX の DAT モード… PX にはより多くのアレイ (110 個以上) があります… PX のアレイテストカバレッジは 99.3% で、Pentium 4 ファミリの中で最高です。
- ^ Team, uCode Research (2020年5月25日). 「chip-red-pill/crbus_scripts」 . GitHub . 2020年5月26日閲覧。
- ^ Positive Research (2020-07-21)、ptresearch/IntelTXE-PoC、2020年7月25日閲覧
- ^ Ermolov, Mark [@_markel___] (2020-05-19). 「Intel Atom CPUのローカル・ダイレクト・アクセス・テスト(LDAT)DFT機能を使用して、マイクロコード・シーケンサーROMをダンプしました。また、IROM(μ-OPS用即値)と思われるものを抽出し、MS Patch RAMとMatch/Patchレジスタの変更にも成功しました」(ツイート)– Twitter経由。
- ^ Bosch, Peter (2020年5月22日). 「Intel LDAT notes」. 2020年5月26日閲覧.
PDAT CR: 0x6A0; 配列選択: 0‒4
さらに読む
- 米国特許 5404473、Papworth, David B.、Fetterman, Michael A. & Glew, Andrew F. 他共著、「パイプライン プロセッサにおける文字列演算処理のための装置および方法」、1995 年 4 月 4 日公開、Intelに譲渡。「 REP スイング演算の 最初のCuops は、展開された反復処理の実行後に残っている反復処理回数をMS ループ カウンタにロードします。… MSのループ カウンタがロードされる間に、少数の反復処理(たとえば 7 回)が送信されます。この展開コードは、(E)CX の値に基づいて条件付きで実行されます。… 残りの 3 回の反復処理はNOPSに変換されます。」
- 米国特許5559974、Boggs, Darrell D.、Brown, Gary L.、Hancock, Michael M.他「独立してロードされたマイクロエイリアスレジスタとマクロエイリアスレジスタに同時にアクセス可能なデコーダ」、1996年9月24日公開、Intelに譲渡
- 米国特許5566298、Boggs, Darrell D.、Brown, Gary L.、Hancock, Michael M.他「エイリアス機構を備えたデコーダにおけるアシストおよびリスタート中の状態回復方法」、1996年10月15日公開、Intel に譲渡。「…制御はマイクロオペレーションシーケンス(MS)ユニットに戻り、さらなるエラー訂正制御マイクロオペレーション(Cuops)を発行します。リスタートを簡素化するため、XLAT PLA(変換プログラマブルロジックアレイ)によって提供されるエラー発生マクロ命令から生成されたCuopsは、有効ビットがアサートされていない状態でCuopレジスタにロードされます。」
- 米国特許5600806、Brown, Gary L. & Parker, Donald D.、「命令バッファを用いて可変長マクロ命令の命令境界を整列させる方法および装置」、1997年2月4日公開、Intelに譲渡「ADD、XOR、SUB、AND、ORは、1つの汎用Cuopで実装されます。1つのCuop でのみ表現可能な別の命令グループには、 ADCとSBBが含まれます
- 米国特許5630083、Carbine, Adrian L.、Brown, Gary L.、Parker, Donald D.、「複数の命令を並列にデコードするデコーダ」、2013年3月1日公開、Intelに譲渡
- 米国特許6055656、ウィルソン・ジュニア、ジェームズ・A、ミラー、アンソニー・C、ロードハメル、マイケル・W他、「標準化されたテストアクセスポートによるレジスタバスアクセスの制御」、2000年4月25日公開、Intelに譲渡
- 米国特許 20030196096、サットン、ジェームズ A.、「マイクロコードパッチ認証」、公開日 2003-10-16
- 米国特許5948097、アンドリュー・グリュー&スコット・ディオン・ロジャース共著、「コールゲートを使用せずにコンピュータシステムの特権レベルを変更する方法および装置」、1999年9月7日公開、Intel に譲渡。「SYSENTER命令とSYSEXIT命令は、Pentium ProプロセッサなどのIntelアーキテクチャプロセッサで実行可能なアセンブリ言語命令です。マイクロオペレーションは、ソースフィールドに適切なデータが入力されると準備完了と判断されます。命令デコードユニットは、各命令を1つ以上のマイクロオペレーションにデコードする1つ以上の変換(XLAT)プログラマブルロジックアレイ(PLA)で構成されています。SYSENTER命令とSYSEXIT命令は、それぞれ図5と図6に示す手順を実行するマイクロオペレーションにデコードされます。」
- 「マイクロコードアップデータインターフェースsysctl」(
ucode.cドライバ) XNU 2018年1月24日閲覧。#define IA32_BIOS_UPDT_TRIG (0x79) /* microcode update trigger MSR */ - Sivaram, AT; Fan, Daniel; Yiin, A. (2002-10-10). 「APGを用いた効率的な組み込みメモリテスト」. Proceedings. International Test Conference . Vol. 1. ボルチモア、メリーランド州: IEEE. pp. 47– 54. doi : 10.1109/TEST.2002.1041744 . ISBN 0-7803-7542-4. ISSN 1089-3539 . S2CID 19579807 .
- Bosch, Peter (2020年10月1日). 「CPUの内部:P6マイクロコードのリバースエンジニアリング」 . YouTube . オランダ. 2020年11月1日閲覧.
外部リンク
- uCodeDisasm — Python の Intel マイクロコード逆アセンブラ (CRBUS から)、uops の名前