X86-S
概要編集
インテルは、1978年に16bitリアルモードで動作する「8086」、1982年に16bitプロテクトモードで動作する「80286」、1985年に32bitプロテクトモードで動作する「80386」を投入。以降もその資産を継続できるよう、これまでのCPUではある程度の互換性を維持してきた。
しかし2004年に投入した64bitモード(Long Mode)を導入した際にVM86モードが削除され、翌年に登場したWindows XP Professional x64 Editionでは16bitのバイナリが完全に削除された。それ以降はIntelは64bit UEFIを推進し、2020年にはUEFIで動作しない16bitや32bit OSをネイティブで動作させるための互換性機能をファームウェアから削除した。
つまり、事実上16bitと32bitプロテクトモードは、今も名目上のサポートしているだけに留まっていた。しかし今後Intelは、CPUからも16bit/32bitモードを完全に取り除くことでレガシーフリーとする考えだ。
これまで、システムをリセット/初期化する際は16bit→32bit→64bit、または16bit→64bitへの遷移を辿っていたが、X86-Sではリセット/初期化した段階で64bitからスタートする。
ただし、64bit環境下で32bitアプリを動作させるための「Compatibility Mode」は残すとしている。
X86-S ISAにおける変更編集
- CPUを常にページモードで動作させるよう限定
- VM86モードとして知られている32bit ring 0を削除
- ring 1およびring 2を削除
- 16bitリアルモード/プロテクトモードの削除
- 16bitアドレッシングの削除
- 固定MTRRsを削除
- ユーザーレベルI/Oおよびstring I/Oを削除
- CR0ライトスルーモードを削除
- CR0の中のレガシーFPU制御bitを削除
- ring 3インタラプトフラグコントロールを削除
- 廃止されたCRアクセス命令の削除
- INIT/SIPIを再構築
- 4-および5-levelのページテーブル切り替えメカニズムを追加
- x2APICのみのサポートおよびXAPICを削除
- 8529(PDF記述ママ。おそらく8259を指す)のためのAPICサポートの削除
- EFER MSRにおけるNX/SYSCALL/Long Modeの無効化を削除
- #SSと#NP例外を削除
- 一部条件でセグメンテーションアーキテクチャのサブセットをサポート