Intelマイクロコードとは何ですか?質問する

Intelマイクロコードとは何ですか?質問する

私が読んだところによると、これは BIOS を変更せずに CPU のバグを修正するために使用されるそうです。アセンブリに関する私の基本的な知識から、アセンブリ命令は CPU によって内部的にマイクロコードに分割され、それに従って実行されることはわかっています。しかし、Intel は、システムが起動して実行されている間に何らかの更新を行うためのアクセスを何らかの方法で提供しています。

誰かそれらについてもっと情報を持っていますか? マイクロコードで何ができるのか、どのように使用できるのかに関するドキュメントはありますか?


編集: Wikipedia の記事を読みました。自分で書く方法や、それがどのような用途に使えるのかはわかりませんでした。

ベストアンサー1

昔はCPUでマイクロコードが多用されていました。すべての命令がマイクロコードに分割されていました。これにより、比較的複雑な命令セットを中程度のCPUで実現できました(モトローラ 68000は、多数のオペランドモードと8つの32ビットレジスタを備え、40000個のトランジスタに収まるが、シングルコアの最新のx86では100個を超えるトランジスタが必要になる。数百万)。これはもう真実ではありません。パフォーマンス上の理由から、ほとんどの命令は現在「ハードワイヤード」になっています。つまり、命令の解釈は、マイクロコードの外部にある柔軟性のない回路によって実行されます。

最近の x86 では、 (浮動小数点値の正弦関数を計算する)などの複雑な命令はfsinマイクロコードで実装されている可能性がありますが、 を使用した整数乗算などの単純な命令は実装されてimulいません。これにより、カスタム マイクロコードで実現できることが制限されます。

とはいえ、マイクロコード形式は特定のプロセッサ モデルに非常に特化しているだけでなく (たとえば、Pentium III と Pentium IV のマイクロコードは自由に交換できません。もちろん、Intel のマイクロコードを AMD プロセッサに使用することは考えられません)、厳重に保護された秘密でもあります。Intel は、オペレーティング システムまたはマザーボード BIOS がマイクロコードを更新する方法 (ハードリセットのたびに実行する必要があります。更新内容は揮発性 RAM に保存されます) を公開していますが、マイクロコードコンテンツ文書化されていない。Intel® 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル(ボリューム 3a) では、更新手順 (セクション 9.11「マイクロコード更新機能」) について説明していますが、実際のマイクロコードは「暗号化」されており、チェックサムが満載であるとしています。この文言は曖昧であるため、あらゆる種類の暗号化保護が隠されている可能性がありますが、要するに、Intel 以外の人がカスタム マイクロコードを作成して試すことは現在不可能です。

もし「暗号化」にデジタル(非対称)署名が含まれていない場合、あるいはインテルの人々が何らかの形で保護システムを台無しにした場合、驚くべきリバースエンジニアリングの努力が考えられるかもしれない。できた潜在的には、このようなマイクロコードを作成できるようになりますが、適用範囲がおそらく限られていることを考えると (ほとんどの命令がハードワイヤードされているため)、プログラミング能力に関する限り、これによって得られるものは多くない可能性があります。

おすすめ記事