[注:この回答は、最近の編集に対処することを特に意図しており、それ以外の場合は、すでに投稿されているいくつかの音声回答に追加されません。]
繰り返しますが、マイクロコード(少なくとも最初の近似値まで)は特定の種類のファームウェアです。
「マイクロコード」は、この文脈では「プロセッサファームウェア」を介してマーケティングしているだけです。
まあ、それはマーケティングではありません。マーケティングではXBoost Pro(TM)などと呼ばれていました。むしろ、それは工学用語です。CPUを設計する場合、マイクロコードとCPUの他のファームウェア(および他のデバイスに一般的なファームウェアの種類)の違いは重要です。そうでない場合、おそらくそうではありません。
マザーボードを設計したり、オペレーティングシステムを記述したりする場合は、「マイクロコード更新」を使用して、より扱いにくく、あまり馴染みのない「CPUファームウェア更新」の省略形を使用する可能性があります。ほとんどのCPUファームウェアの更新は、主にマイクロコードに影響するため、同じものに十分近いです。おそらく違いを知っていますが、それを気にする必要はありません。
エンドユーザーはその違いを知ったり気にしたりする必要はなく、理想的な世界では「マイクロコード」という言葉はまったく聞こえません。
最近の投機的実行の脆弱性の報道で注目されたのではないかと思いますが、気にする必要がないことをより明確にした文脈でそれを以前に聞いたことがあるかもしれません。これらの脆弱性は計画よりも早くリリースされたため、他の方法で報道されたよりも報道が少なくなる可能性があります。エンドユーザーの観点からは、BIOSアップデート、オペレーティングシステムアップデート、および場合によってはアプリケーションアップデートをインストールする必要があります。これらのいずれかに新しいマイクロコードが含まれている場合、どれを知っているか気にする必要はありません。
だから、おそらくあなたが知ったり気にしたりする必要はないと気づいたとしても、純粋な好奇心から興味があるかもしれません:他のファームウェアとマイクロコードを区別するにはどうすればいいですか?
まあ、最初に認識すべきことは、必ずしも単一のハードで高速な定義があるわけではなく、それはより多くのBleggs and Rubesの状況であるということです。それでも、マイクロコードについて言えることはいくつかあります。
マイクロコードは通常、CPU上ではなくCPU内で実行されます。これが高レベルのビューです。
マイクロコードのアーキテクチャは、通常、通常のファームウェアを含む通常のコードのアーキテクチャとは大きく異なります。並列性が高く、ハードウェアにより近いところに実装される可能性があります。これについては、いくつかの既存の回答(独自の回答を含む)で説明されていますが、詳細はCPUの設計によって異なる場合があることに注意してください。
ハードウェアは多くの場合、製造元が提供するファームウェアのみを実行するように設計されていますが、サードパーティのファームウェアを使用することは特に珍しいことではありませんが、おそらく保証が無効になります!サードパーティのマイクロコードははるかにまれですが、古代では(CPUがブレッドボックスのサイズのことを話していました)、一部のエンドユーザーがCPUのマイクロコードを変更すると信じていました。私の知る限り、これはPCで使用されているCPUの種類では不可能です。
マイクロコードは通常、パブリック命令セットアーキテクチャを変換または実装するのに役立ちます。つまり、オペレーティングシステムの設計者やアプリケーションプログラマが使用するマシンコードを実行します。これについては、次のセクションで詳しく説明します。
「実行vsデータ」多くの回答がこのパラダイムを使用しています
紛らわしく異なる方法で、私は恐れていますが、私は自分のコメントに対処します。このセクションは、上記の最後の箇条書きを拡張するのにも役立ちます。ここでの目標は、CPUが実行しているジョブ(ハードウェアとマイクロコードの組み合わせによって達成される)と一般的なデバイスが実行しているジョブ(ハードウェアとファームウェアの組み合わせによって達成される)を区別することです。SATAハードディスクドライブを選択します。
SATAドライブは、「セクター5,123からデータを読み取る」および「このデータをセクター1,321に書き込む」という行に沿ったコンピューターからの指示に従います。ドライブのファームウェアは、ハードウェアにこれを実現させる役割を果たします。通常、それは何らかの組み込みCPUで実行されるごく普通のコードです。ドライブの命令は順番に到着しますが、到着した順序で処理されない場合があります。これらの命令はプログラムではなく、メインCPUで実行されているプログラムによって送信されます。特に、制御の流れはありません。つまり、次に実行する命令をSATAドライブに指示する命令はありません。
CPUはコンピューターを担当します。初期化が完了すると、マザーボード(BIOS、別の種類のファームウェア)が提供する命令(「マシンコード」)を実行し、オペレーティングシステムが提供するマシンコードを実行し、提供されたマシンコードを実行します。アプリケーションベンダーによって。CPU自体は、EEPROM(BIOSの場合)またはRAM(オペレーティングシステムとアプリケーションの場合)からマシンコードを取得します。特に、マシンコードには制御の流れがあります。マシンコードは、次に実行するマシンコードをCPUに伝えます。同じマシンコードを繰り返しループすることができ、コードが作業しているデータに応じて異なるビットのコードを実行できます-SATAコードのようなデバイスインターフェイス言語の命令は、限られた一連の簡単なタスクを実行できますが、マシンコードは行う何でも。(チューリング完全性も参照してください。)
上記の最後の箇条書きを次のように書き換えることができます。通常、マイクロコードはチューリング完全言語を実装します。通常のファームウェアは通常そうではありません。
マイクロコードで「ハードウェア命令が解釈される」とはどういう意味ですか。
本当ですが、おそらく混乱を招きます。重要な点は、制御の流れがありチューリング完了であるマシンコードと、SATAなどのデバイスインターフェースで定義されている命令とそうでない命令との区別です。
「マイクロコード」は、サウンドカードで実行されるコードに適用されますか
いいえ、サウンドカードはSATAドライブのように、コードではなく命令を受け取ります。指示は、「シャープを再生する」または「このデータを波形として解釈して再生する」などです。まだ非常に簡単です。
およびビデオカード(GPU)?
昔ながらのビデオカード(GPUなし)は、SATAドライブと同じです。指示は、「このピクセルをこの色に設定する」または「この位置にAを書き込む」のようなものです。
... GPUは複雑で、上記で説明しようとした2つの世界の中間に位置します。それらをメインコンピューターの内部にある専用のコンピューター、つまり独自のCPUを備えたコンピューターと考えるのがおそらく最も簡単でしょう。SATAドライブのようなデバイスにもCPUが組み込まれているのは事実ですが、違いは、SATAドライブの組み込みCPUはドライブの製造元が提供するコードのみを実行するのに対し、GPUはオペレーティングシステムやアプリケーションベンダーが提供するコードも実行することです。本当にこれはまったく別の質問です。
TL; DR:マイクロコードは特定の種類のファームウェアであり、ハードウェアがチューリング完了命令セットを実装するのに役立ちます。