はじめに
Intelがこれまでのほぼ完全な後方互換路線(上位互換路線)から外れて、現代に合わせた命令セット・アーキテクチャーに移行する際の具体的な設計仕様を発表しました。この内容にはある程度のIA-32およびIntel 64の理解をしている人たちに向けた概要を説明するWebページと、深くIntelアーキテクチャーを理解していることを前提とするPDFファイルによる詳細の2つに分かれています。
今回は1本のメモですべての内容について書くのではなく、3本に分けることにしました。というのも、それぞれ必要な知識レベルが異なる情報が2つあることと、それぞれについて私の解釈でコメントをする回に分けたほうが理解が進むと考えていることによります。
1本目である今回は、Intelが該当する詳細なPDFを公開しているWebページに書かれている内容を、さかきけいの理解で日本語にしたものを「概要編」としてお伝えしたいと思います。
お願い
もしもIntelの関係者で、私がこの日本語ドキュメントを公開することが何らかのライセンスや法的問題があるとお考えであるならば、メールにてご連絡をいただければと思います。その際は、私がメールの送付主がIntel関係者であることを認識できるようにIntel社内からメールを送信し、所属・肩書き等を添えてください。
著作権等
英語版の資料をベースにしているこの日本語ドキュメントはIntelの著作権が及ぶ範囲内にあります。その上で、この日本語ドキュメントには“さかきけい”の著作権が発生しています。“さかきけい”はすべての著作権法上の権利を留保します(詳しくは「ご利用上の注意とお願い」を参照ください)。
免責の表明
この日本語ドキュメントはIntel Corporationが公開している「Envisioning a Simplified Intel Architecture」に記載されている情報を元に、“さかきけい”の理解で作成したものです。このためIntel Corporationには何らこの日本語ドキュメントに対する責任はありませんので、この日本語ドキュメントに関連する問い合わせをIntelに対して行うことを禁止します。
また、この日本語ドキュメントを作成した“さかきけい”も何ら責任を負いません。この日本語ドキュメントの内容は、利用者自身の責任においてのみ使用することができます。
使用上の注意
- 複数の英単語によって構成される語は、単語間に「・」を入れて表現しています。例:ルート・ファイル・システム※1
- 原則として単語末の長音記号「ー」は省略しない方針で編集しています。例:プロセッサー※2
- 気づいたTypoや編集ミスなどは明確であると考えられる場合に若干修正しています。
- 日本語での記述におかしいと思われる個所がある場合には原書をあたってください。
- 技術的などの理由で記載内容にわからない事項がある場合には別途調べてください(“さかきけい”に質問のメールを送るのはご遠慮ください※3)。
- 明らかな誤訳がある場合には具体的なご指摘をメールでお知らせいただけると助かります。
- 記述内容に誤りがある場合にもお知らせいただけると嬉しく思います。ただし、原書も間違っている場合には特に日本語ドキュメントを修正することはせずに、訳注を追加するだけとするかもしれません。
- 前述の内容と被りますが、“さかきけい”は何ら責任や義務を負うものではありません。
文書についてのご指摘をいただける方へのお願い
- なるべく平坦でかつ理解しやすい程度に周辺情報を含む、日本語でのご指摘をお願いします。
- “さかきけい”の主観において、いただいた情報の適用を行わないことがあることをあらかじめご理解ください。
シンプルなIntelアーキテクチャーを思い描く
長寿のインテル・アーキテクチャーはPCからクラウドからモバイル、そして組み込み機器からスーパー・コンピューターとその先までに伸長する巨大なインストール・ベースがある、豊かなソフトウェア・エコシステムに成長しました。
20年以上前の発表以来、Intel 64アーキテクチャーは有意なオペレーティング・モードになりました。この発展の例として、MicrosoftはWindows 11オペレーティング・システムの32ビット・バージョンの出荷を終了しました。インテル・ファームウェアはすでに非UEFI64のオペレーティング・システムのネイティブ・サポートをしていません。今日、64ビットのオペレーティング・システムはデファクト・スタンダードです。これらは32ビットのアプリケーションを実行することができますが、16ビットのアプリケーションのネイティブ実行のサポートを停止しました。
この発展において、Intelは私たちのハードウェアとソフトウェアのエコシステムには簡素化の機会があると信じています。
とあるレガシー・モードには、現代のオペレーティング・システムがCPUの起動時に64ビット・モードへ入る際の有用性がほとんど存在しません。“64ビット・モードだけのアーキテクチャーに簡素化するために、これらのほとんど使用されなくなった要素を取り除くことができるでしょうか?”と尋ねてみることには意味があります。
図1. いくつかのレガシー・モードを取り除く、このホワイト・ペーパーで提案するアーキテクチャーは、64ビット・アーキテクチャーへの移行を成し遂げます。
このホワイトペーパーは現状でX86-S(Simplification = シンプル化)と呼ばれている64ビット・モードだけのアーキテクチャーのために追及している設計拡張と変更について詳説します。Intelは64ビット・モードだけのソリューションへのISA(命令セット・アーキテクチャー)移行による利点の拡大について調査を行っている中で、エコシステムからフィードバックを受けるためにこのペーパーを発行しています。
64ビットだけのアーキテクチャーはどのように動作しますか?
Intel 64アーキテクチャーのデザインは、リセットからオリジナルの8086と同じ状態で起動し、64ビットのモードへ遷移するために一連のコード遷移を必要とします。一度だけ実行され、これらのモードは現在のアプリケーションやオペレーティング・システムでは使用しません。
モード | どのような種類 | X86-Sにおけるサポート | |
---|---|---|---|
IA-32eモード | 64ビット・モード | 64ビットのOSとアプリケーション | はい |
コンパチビリティー・モード – リング3 | 32ビット・アプリケーション | はい | |
コンパチビリティー・モード – リング0 | 64ビットOSにおける32ビット・システム・コード | いいえ | |
レガシー・モード | リアル・モード | 16ビットOSとアプリケーション | いいえ |
仮想8086モード | 32ビットOSによる16ビットOSとアプリケーション | いいえ | |
プロテクト・モード | セグメントを伴う16ビットおよび32ビットOS | いいえ |
X86-Sにおけるサポートしないモードとサポートするモード
64ビット・アーキテクチャーは、現状でリアル・モードまたはプロテクト・モードのいずれかで実行されている内容と同等の64ビット・モードにおいて実行可能な実装を必要とします。
例えば:
- CPU(SIPI)のブートについては、今日リアル・アドレス・モードで開始し、64ビットへの置き換えを必要としています。リセット状態から直接64ビットに入るということは、64ビット・オペレーションを実施するためのいくつかのステージにおけるトランポリン・コードを排除することができます。
- 今日、5レベルのページを使用するためには、ページングを無効にすることを必要とし、それはページングを行わないレガシー・モードへ戻ることを必要としています。提案されたアーキテクチャーでは、ページ化モードから離れることなく5レベルのページングへ切り変えることができます。
システム・アーキテクチャーへの複雑ではない改善が、オペレーティング・システムだけに影響を与える状態で、これらの変更を実装することができます。
64ビットだけのアーキテクチャーの利点はなんでしょうか?
64ビット・モードだけのアーキテクチャーは、より古いアーキテクチャーによる要素を取り除き、ソフトウェアとハードウェア・アーキテクチャーの総合的な複雑さを減少させます。64ビット・モードだけのアーキテクチャーを探求することにより、現代のソフトウェアの展開に位置を合わせた他の変更を行うことができるでしょう。
これらに含まれる変化:
- 近代的なオペレーティング・システムが既に使用しているものと一致する、64ビットのために簡易化されたセグメント・モデルを使用することで32ビット・アプリケーションのセグメントをサポートする。
- ゲートのような時代遅れのセグメント機能とリング1と2(近代的なソフトウェアは使用していない)を削除する。
- 16ビット・アドレスのサポートを削除する。
- リング3による入出力ポートへのアクセスに対するサポートを排除する。
- 入出力ポートに対するストリング操作を排除する。これは、かつてのCPU主導による入出力モデルのためにサポートされていた。
- X2APICのために使用するローカル割り込みコントローラー(APIC)の制限およびレガシー8259の削除。
- オペレーティング・システムが使用していない、いくつかのモード・ビットの削除。
64ビット・モードのみのアーキテクチャーにおけるレガシー・オペレーティング・システム
64ビット・モードのみのアーキテクチャーCPUにおいて、レガシー64ビット・オペレーティング・システムを動作させることは、この取り組みにおける明確な目標ではありませんが、インテル・アーキテクチャーのエコシステムが、仮想化ベースのソフトウェア・ソリューションにおいてレガシー・オペレーティング・システムを起動させるために必要な機能をエミュレートすることができる機能を提供するために、仮想化ハードウェア(VMX)を使用できるよう、仮想化製品について十分に検討をしました。
64ビット・モードだけのアーキテクチャーのための詳細提案書
64ビット・モードだけのアーキテクチャーのための提案書は閲覧可能です。これは、このホワイト・ペーパーで要約した考えを具体化します。エコシステムがソフトウェアに生じる可能性のある衝撃を評価するために、Intelはこの仕様を公開しています。
[ダウンロード PDF](※訳注:英語版PDFへのリンクです→日本語版は「詳細編」で公開しています)
設計提案書に対するフィードバックは、emailを送ってください※4
参考情報 – 時系列
1978 | – | Intel 8086のリリース、16ビット・リアル・モードを搭載した。 |
1982 | – | Intel 80286のリリース、16ビット・プロテクト・モードを搭載した。CPLはIOPLほどはオリジナルのプロテクト・モード・アーキテクチャーでは特権がなく、LOCKプリフィクスは#GPとなった。 |
1985 | – | Intel 80386のリリース、32ビット・プロテクト・モードとページングを搭載した。仮想86モードの追加により16ビット・リアルモード・オペレーティング・システムでページングを使用することができた。Intel 80386はLOCKプリフィクスがIOPLを無視する挙動を変更した。 |
1997 | – | Intel Pentium IIはSYSENTER拡張を導入した。アーキテクチャーの拡張によってフラットなコードとスタック・セグメントを体系化した。 |
2004 | – | 64ビット・インテル・アーキテクチャー・システムのリリース。64ビット・モードにおける仮想8086モードのサポートの廃止。 |
2005 | – | インテル・アーキテクチャーに対して仮想化テクノロジーを追加。仮想マシン内でレガシー・オペレーティング・システムを実行することを可能にした。 |
2005 | – | Windows XP Professional x64 EditionがWindows 16ビット・バイナリーのサポートを廃止した。 |
2008 | – | A20ゲートの削除。これは初期の8086オペレーティング・システムの互換性のための外部エミュレーションだった。 |
2012 | – | 64ビットのUEFIファームウェア・インターフェースを広範囲に配布した。 |
2020 | – | Intelのファームウェアから16ビット/32ビットまたはUEFIではないオペレーティング・システムのネイティブ・サポートの廃止。 |
まとめ
私が気づいたころにはIntel 8086がすでに存在しており、その後現在に至るまでパソコン向けの主流プロセッサーであることに素直に驚きを感じています。
「参考情報 – 時系列」の内容が、この手の発表によくある内容よりも、ずっと技術的であるところに本件の方向性を感じています。特にLOCK
プリフィクスについての80286と80386の差についてが記載されたのは、当時のアーキテクトの一人であった現在のIntel CEOであるパトリック・ゲルシンガー氏の影響があったのではないか、などと夢想してしまいます。彼がこの文章を発表する承認フローの中で目を通していれば書き加える可能性があったのではないか、そう想像してしまうのです。この件について言及されることは非常に稀有であるだけに、そう考えてしまいます。
特に問題がなければ連載2回目の「詳細編」は明日公開予定です。
- インテル株式会社による表現がそうなっているので、それに合わせています。
- インテル株式会社による表現がそうなっているので、それに合わせています。
- 質問者の技術レベルに応じて必要な回答を用意するのは、非常に高いスキルと多くの時間を必要とするものです。私はこれらのサービスが可能な状態にはありません。
- 翻訳元のページとホワイト・ペーパーが英語なのでフィードバックも英語であるべきであろうと私は考えますが、もしかすると日本語で送ったとしてもAI技術の専門家でもあり、日本法人もあるIntel Corporationであれば、読まれる可能性もゼロではないかもしれません。