私は利用可能なメルトダウンのマイクロコード修正がないことを知っています(それはすでに さまざま質問 で回答されています)、そして唯一の現存するマイクロコードパッチ( IBRSおよびIPBP )はSpectreバリアントの1つでのみ役立ちますが、Meltdownのマイクロコード修正がpossibleおよび実現可能。
具体的には、私は好奇心旺盛です:
KPTIがMeltdownの現在の「公式」修正であり、そのマイクロコードと新しい コンパイラーインストルメンテーション がSpectreを部分的に処理していることをすでに知っています。免責事項:Intelマイクロコードの制限に光を当てるかもしれない 4c3トーク を見たことはありませんが、制限があることは承知しています。
LWNスレッドで満足のいく answer を見ました。 jcm:のコメントから引用
マイクロコードでそれが可能であるとは思えません。それを見てみましょう:
投機的ロード。マイクロコードでできることは、すべての推測をオフにすること、またはすべてのロードをシリアル化することです(同様)。
分岐予測。間接予測子(
しかしそれはIBRSが行うことです)*投機中の権限チェック。投機またはキャッシュをオフにするか、TLBを強制終了するか、ほとんど選択肢がなくなります。
いくつかの理由により、マイクロコードのランダムな命令を単に置き換えたり、複雑な動作を追加したりすることはできません。
すべての命令がマイクロコード化されているわけではありません。高速パス命令はマイクロコードシーケンサーにさえ触れません。
パッチRAMはtinyであり、そのようなパッチのようなものを運ぶことはできません。
複雑なTLBと分岐予測ロジックは、マイクロコードを介した直接的なアルゴリズム制御の対象ではなく、特定の側面のみが対象です。動作を変更したり、微調整 チキンビット 、制御信号を操作したりできますが、まだデザインに含まれていないものを追加することはできません。
マイクロコードは魔法ではありません。正しく動作しないミルランの複雑な命令の大部分を修正するため、またはチキンビットを強打するためなどがあります。
* IBRSの動作に関するこのステートメントは、LWNに関する別のコメントで 論争 でした。