
ハードウェア探偵のケン・シャリフ氏は、世界最古の x86 CPU である Intel 8086 の機能セットと操作の可能性について自身のブログで調査しました。8086 のマイクロコード操作を追跡することで、シャリフ氏は予想外の設計上の「選択」を発見しました。IP 窃盗犯を捕まえるための独自のマイクロコードから、8086 プロセッサが未知の命令 (同様にあまり知られていない結果) を実行できるようにした疑わしい (しかし必要な) 設計上の決定まで、この調査によって、おそらく過去 50 年ほどで最も重要な CPU リリースに光が当てられました。
Intel 8086に実装された世界初のx86命令セットは、1970年代後半にリリースされたCPUとしては、まさに期待通りのものでした。今日の最先端チップは数千億個のトランジスタ(より複雑な回路の基本構成要素)を搭載できますが、Intel初の商用x86 CPUである5~10MHzのIntel 8086は、わずか2万9千個のトランジスタで動作させなければなりませんでした。
現代のプロセッサは、存在しない命令の実行をブロックします。しかし、Intel 8086(1978年)のような初期のマイクロプロセッサは、不正な命令のチェックを行っていませんでした。不正な命令を実行すると、隠れた機能が利用できたり、本来アクセスできないレジスタにアクセスできてしまう可能性がありました。🧵 pic.twitter.com/BCdp7ZBY6V 2023年7月16日
トランジスタ数の増加は、一般的にパフォーマンスの向上、特に機能性の向上につながります(より多様で複雑な命令のサポート強化とハードウェアベースのアクセラレーションがその代表例です)。当時も現在と同様に、パフォーマンス、電力効率、トランジスタ数/ダイ面積のバランスが、トランジスタの割り当て方法、そして最終的にはどの機能が「必須」でどの機能が「不要」と判断されるかに厳しい制限を課していました。
シャリフ氏の調査結果によると、Intel 8086の特異な点は、CPUがマイクロコード実行のためのチェックアンドバランス機構を全く備えていなかったことだ。マイクロコードとは、ソフトウェアとハードウェアの間の、ハードウェアに最も近い層であり、複雑な命令をCPUが実行可能な、より単純で段階的な命令群に分割する役割を担っている。しかし、トランジスタ数が29,000個に制限されていたため、Intelはハードウェアレベルで実行可能な命令と実行不可能な命令をロックしないことを選択した。通常、命令はホワイトリスト方式で処理される。つまり、CPUはハードウェア設計内で処理可能であることが既に分かっているマイクロコードの実行を許可するのだ。
しかし、Intel の 8086 ではトランジスタのスペースが非常に狭かったため、同社は実際には CPU が処理できるマイクロコード操作のホワイトリストを組み込んでいませんでした。つまり、「不正な」(つまりサポートされていない) マイクロコード操作がある場合、Intel の 8086 は「不正に要求された」操作の結果を指定せずに、とにかくマイクロコード操作を解決しようと最善を尽くしました。
Intel 8086は、マイクロコードROMチップ(読み取り専用メモリ)に保持された521個の命令をサポートしていました。これらの512個の命令の中には、フォールバック機構などの理由で重複したものもありましたが、その他の命令は公開されませんでした。マイクロコード操作の中には、当初計画されていたものの結局実装されなかった機能のためか、その他の理由により、文書化されていないものもありました。
しかし、シャーリフ氏が検証した興味深いマイクロコードが、Intelの知的財産権を窃盗犯から守るのに役立った。シャーリフ氏は、8086のROMに搭載されている512個の命令リストから命令を抽出し、既知の機能を持つオペコード(白色)を特定することができた。オレンジ、黄色、緑色のオペコードは8086では空白だったが、Intelの次期プロセッサである80186、80286、80386ではそれぞれ実装された。そして最後に、紫色の例外は、Intelの8086以降のプロセッサに実装されていたものの、公に文書化されていなかったオペコードである。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
シャリフ氏の見解は、文書化されていないパープルフラグ(Intelのx86設計には8086以来存在していたにもかかわらず、2017年になってようやく同社の文書で明らかになった)は、Intelの技術を模倣しようとする者にとって一種のハニーポットとして機能していたというものだ。企業が独自のCPUソリューションの開発を省略し、代わりにIntelのマイクロコードIPを盗用した場合、そのCPUには関連するマシンコードビットが入力されると、同じSALC(Set AL to Carry)演算が実行される。これはバーコード識別に相当するもので、IntelはIP窃盗犯をより効果的に訴追することができる。
Francisco Pires 氏は、Tom's Hardware のフリーランス ニュース ライターであり、量子コンピューティングに関心を持っています。