インテルのマイクロコードとは何ですか?
質問
私が読んだところでは、BIOS を変更せずに CPU のバグを修正するために使用されるようです。 アセンブリの基本的な知識から、アセンブリ命令が CPU によって内部的にマイクロコードに分割され、それに応じて実行されることは知っています。しかし、インテルは何らかの方法で、システムが稼働している間に何らかの更新を行うためのアクセス権を与えています。
どなたか、それらについての詳細な情報をお持ちですか。マイクロコードで何ができるのか、どのように使用できるのかに関するドキュメントはありますか?
EDITです。 私はwikipediaの記事を読みました。どうやったら自分で書けるのか、どんな使い道があるのかがわかりませんでした。
どのように解決するのですか?
古い時代、マイクロコードは CPU で多用されていました。すべての命令がマイクロコードに分割されていました。これにより、控えめな CPU で比較的複雑な命令セットが可能になりました (たとえば モトローラ 68000 を考えると、多くのオペランド モードと 8 つの 32 ビット レジスタを備えた 40000 トランジスタに収まるのに対し、シングルコアの最新の x86 は 100 個を超える 数百万 ). これはもう真実ではありません。パフォーマンス上の理由から、ほとんどの命令は現在では「ハードワイヤード」になっています。
最近の x86 では、次のようないくつかの複雑な命令はもっともらしいです。
fsin
(浮動小数点値に対してサイン関数を計算する) のような複雑な命令はマイクロコードで実装されていますが、単純な命令 (たとえば
imul
を使った整数倍算は実装されていません。このため、カスタム マイクロコードで実現できることは限られています。
とはいえ、マイクロコードの形式は特定のプロセッサ モデルに非常に特有であるだけでなく (たとえば、Pentium III と Pentium IV のマイクロコードは互いに自由に交換できません。もちろん、AMD プロセッサに Intel のマイクロコードを使用することは論外です)、厳重に保護された秘密でもあります。インテルは、オペレーティングシステムやマザーボードBIOSがマイクロコードを更新する方法を公開していますが(ハードリセットのたびに行う必要があり、更新は揮発性RAMに保存されます)、マイクロコードには、次のような特徴があります。 コンテンツ は文書化されていません。そのため インテル® 64 および IA-32 アーキテクチャー ソフトウェア開発者向けマニュアル (Volume 3a) では、アップデート手順 (セクション 9.11 "microcode update facilities") が説明されていますが、実際のマイクロコードは暗号化され、チェックサムがクロックフルになると記載されています。この表現は曖昧なので、あらゆる種類の暗号化保護が隠されている可能性がありますが、要するに、Intel 以外の人がカスタム マイクロコードを書いて試してみることは現在不可能だということです。
暗号化にデジタル (非対称) 署名が含まれていない場合、および/または Intel の人々が何らかの形で保護システムを失敗させた場合、次のような驚くべきリバース エンジニアリングの努力も考えられます。 可能性があります。 しかし、おそらく適用範囲が限られている (ほとんどの命令がハードワイヤードされているため) ことを考えると、プログラミング能力に関する限り、これはあまり意味のないことだと思われます。
関連
-
ロックされたdeepinファイルを削除する方法は?deepinのロック付きファイルを削除する方法のヒント
-
[解決済み] gzip: stdin: gzip 形式ではありません tar: 子プロセスはステータス 1 を返しました。エラーは回復不可能: 現在終了中
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] POSIX」の意味を教えてください。
-
[解決済み] 1サイクルあたり4FLOPの理論上の最大値を達成するにはどうすればよいですか?
-
[解決済み] インテル Sandybridge ファミリー CPU のパイプラインのためのプログラムの最適化解除
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】新しいAndroid用Intelエミュレーターを起動する
-
[解決済み】x86_64アセンブリで無駄なMOV命令を導入すると、なぜタイトループが速くなるのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux sarコマンドによるシステム性能の詳細解析事例
-
Kali Linuxのマウスライトテーマを変更する方法は?マウスカーソルのテーマを変更するためのヒント
-
linux(ubuntu 18.04)でのアイデア運用データベース障害問題について
-
makeの低レベルエラー:セパレータストップがない
-
apache startup error (98) Address already in use: make_sock: could not bind to...
-
[解決済み] x86アセンブリでレジスタに使用されるpush/pop命令の機能は何ですか?
-
[解決済み] ビーコン待ちでハングアップしたリーバー
-
[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?
-
[解決済み] Unix/Linuxで、ファイルのあるフォルダを別のフォルダにコピーするにはどうしたらいいですか?[クローズド]
-
[解決済み] なぜインテルはプロセッサーに内蔵RISCコアを隠すのか?