解説

IA-32の64bit拡張がもたらすもの

元麻布春男
2004/06/04
解説タイトル

 2004年2月に開かれた開発者向けカンファレンス「Intel Developer Forum(IDF) Spring 2004」で、Intelは同社の32bitプロセッサに64bit拡張を施すことを明らかにした。この技術は、IA-32アーキテクチャに64bit拡張を施したもので、当初、64bit Extension Technologyと呼ばれていた。現在は、「Extended Memory 64 Technology(EM64T)」がこの技術の正式名称となっている。

 EM64Tは、既存のIA-32プロセッサ互換の「レガシーIA-32モード」に加え、64bit拡張モードである「IA-32eモード」が追加された。新たに提供される64bit OSでサポートされるIA-32eモードは、アドレス空間やレジスタを拡張した64bitモードと、64bit OS上でIA-32互換のアプリケーションを動かすための互換モードの2つをサポートする。この互換モードにより、EM64Tをサポートしたプロセッサでは、64bitアプリケーションだけでなく、32bitアプリケーションもこれまでと同様、高速に実行できる。

 すでにIA-32プロセッサには、PAE(Physical Address Extension)やPSE(Page Size Extension)といった物理メモリ・アドレスのみを拡張するメカニズムが用意されている。しかしEM64Tでは物理アドレスだけでなく、仮想アドレスも拡張されるため、より大規模なアプリケーションを実行することが可能になる。同時にレジスタ長やレジスタ数を拡張するとともに、命令セットも拡張されおり、単なるアドレス拡張以上の意味を持っている。表1はIA-32(PAEモード)、IA-32eモード(64bitモード)、Itaniumプロセッサのそれぞれがサポート可能なアドレス空間とレジスタについてまとめたものだ。

  IA-32(PAE) IA-32e(EM64T) Itaniumプロセッサ
物理アドレス空間 36bit(64Gbytes) 40bit (1Tbytes) 50bit (1Pbytes)
仮想アドレス空間 32bit(4Gbytes) 48bit (256Tbytes) 64bit (16Ebytes)
汎用レジスタ長 32bit 64bit 64bit
汎用レジスタ数 8本 16本 128本
128bit XMMレジスタ数 8本 16本 N/A
表区切り
表1 各プロセッサのアクセス可能なアドレス空間とレジスタの構成

 IA-32eモードでは、PAEやPSEでは実現できなかった仮想メモリ空間が大幅に拡張されていることに加え、汎用レジスタの64bit拡張(RAX、RBXなど)や追加(R8〜R15)、128bit XMMレジスタの追加(XMM8〜XMM15)など、レジスタの拡張が目立つ。もちろん、これらの拡張はIA-32eモードのみで利用可能だ。つまりアドレス拡張やレジスタ拡張を利用するには、新しい64bit OSと専用のデバイス・ドライバ、新しいアプリケーションが必要になる。

コラム
EM64TにおけるHyper-Threadingテクノロジのサポート
 EM64Tにおいても、Hyper-Threadingテクノロジ(HTテクノロジ)はサポートされる。そのため、64bit OSがHTテクノロジに対応していれば、OSからは2つのEM64T対応の物理プロセッサが搭載されているように見える。IA-32eモードでは、32bitアプリケーションと64bitアプリケーションのスレッドが混在して割り当てられる可能性もあるが、この場合でもまったく問題なく実行できるという。
(デジタルアドバンテージ)

 表1に記したのはあくまでもプロセッサの仕様であり、実際の利用環境であるOSでどこまでサポートするかは、個々のOSの実装にゆだねられる。どんなOSでも表1に記したプロセッサ・スペックの上限まで利用できるわけではないことに注意が必要だ。表2はWindowsによるアドレス空間のサポート状況と、対応するプロセッサ数をまとめたものである。なおMicrosoftは、2004年第4四半期にAMD64/EM64T(以降、x64)対応のWindows XPとWindows Server 2003をリリースする予定である。

  物理アドレス空間 仮想アドレス空間 サポートCPU数
Windows XP 4Gbytes 4Gbytes 1〜2(Professional)、1(Home)
Windows XP 64bit Edition (x64/IPF) 16Gbytes *2 16Tbytes 1〜2 *1
Windows Server 2003 Standard 32 4Gbytes 4Gbytes 1〜4
Windows Server 2003 Enterprise 32 32Gbytes 4Gbytes 1〜8
Windows Server 2003 Datacenter 32 64Gbytes 4Gbytes 1〜64
Windows Server 2003 Standard x64 32Gbytes 16Tbytes 1〜4
Windows Server 2003 Enterprise x64 64Gbytes 16Tbytes 1〜8
Windows Server 2003 Standard IPF 32Gbytes 16Tbytes 1〜4
Windows Server 2003 Enterprise IPF 64Gbytes 16Tbytes 1〜8
Windows Server 2003 Datacenter IPF *3 512Gbytes 16Tbytes 1〜64
表区切り
表2 Windowsがサポートするアドレス空間と対応するプロセッサ数
*1 64bit Editionには、いまのところHome Editionは存在しない
*2 Windows Server 2003とに合わせて32Gbytesへと拡張予定
*3 x64版のDatacenter Editionのリリースは現時点で未定

 基本的に64bit版のWindowsがサポートする仮想アドレス空間は16Tbytesとなっている(うちシステム用が8Tbytes、ユーザー用が8Tbytes)。32bit版では、OSのEditionを問わず仮想アドレス空間が4Gbytesに制限されている(うちユーザー用は2Gbytes。PAEモード時は起動時のオプションでユーザー用を3Gbytesに拡張することも可能だが、一部制限などがあるため普及していない)。

 従ってEM64Tは、扱うデータセットが非常に大きく、アプリケーションと合わせて2Gbytesを超える場合は、極めて有効なことが分かる。逆にいえば、64bit OS+EM64Tを利用しても、データセットがそれほど大きくない既存の32bitアプリケーションの性能向上に直ちに結びつくとは限らないし、既存の32bitアプリケーションを単純に64bit化したとしても性能が向上するとは限らない。Microsoftも、x64版のメリットとして、大きなデータを扱うCADソフトのデータを32bit版OfficeのPowerPointに連係させる、といった使い方を示している。だが、Officeそのものに64bit版を追加するという話は現時点ではないようだ。

EM64TとItaniumプロセッサとのすみ分け

 EM64Tが論議を呼んだのは、以下の2点にある。

  1. AMD64互換(AMDの後追い)であること
  2. Itaniumプロセッサ・ファミリ(IPF)がありながら2番目の64bitアーキテクチャを追加したこと

 まずAMD64互換についてだが、この決定にMicrosoftが強く関与していたことに疑う余地はない。Microsoftは、64bitプラットフォームにおいても、IntelとAMDで共通になることを強く望んでいたのは間違いない。最終的にIntelはそれに同意したのだと考えられている。その共通プラットフォームとなるのがWindows XP 64-Bit Edition for 64-Bit Extended Systems(クライアント)であり、Windows Server 2003 SP1 for 64-Bit Extended Systems(サーバ)というわけだ。

 x64に対応したWindowsは、基本的にAMD64アーキテクチャ対応のAMD製プロセッサと、EM64T対応のIntel製プロセッサの両方で作動する。「基本的に」と書いたのは、AMDとIntelにはそれぞれ固有の機能があり、それに依存したコードを書けば、他方の環境では動作しないアプリケーションを作成できるからだ。具体的には、SSE3や3DNOW!といったSIMD拡張命令だ。SSE3をサポートしているのはいまのところIntel製プロセッサのみであり、AMD製プロセッサがサポートする3DNOW!はIntel製プロセッサがサポートしない。これらに依存したコードを書けば、当然互換性は失われる(HTテクノロジもIntel製プロセッサ固有の機能で、IA-32eモードでもサポートされるが、これが互換性問題の原因になることはないと思われる)。

 2番目のポイントであるIPFとEM64Tの関係だが、Intelは両者を、それぞれ別の市場セグメントですみ分け可能な2つのアーキテクチャであると位置付けている。すなわちメインストリーム向けのEM64Tと、ハイエンド向けのIPFという具合だ。すでにIntelアーキテクチャのプロセッサは、サーバ市場で圧倒的多数を占めるようになっているが、それはあくまでも台数ベースの話である。

 単価の高いハイエンド・サーバ市場では各社のRISCプロセッサが幅をきかせている。このハイエンド・サーバ市場は、台数ベースでは2割にも満たないが、金額ベースでは全サーバ市場の半分を占める。ある意味でベンダにとっておいしい市場となっている。Intelにすれば、この市場を無視することはできないということだろう。IPFがまずターゲットとするのはこの市場である。そして、この市場を狙うにふさわしいスケーラビリティと高信頼性を念頭に開発されており、アプリケーションの蓄積も、バックエンドが中心となる。

 一方、IA-32ベースのプロセッサは、フロントエンドを中心とした低価格のサーバ向け、という位置付けであり、Webサーバやアプリケーション・サーバとしての利用が中心だ。その位置付けは、IA-32にEM64Tが加わっても変わらないとIntelは説明する。こうした位置付けは、Microsoftも同意しており、x64をメインストリームに位置付ける一方で、IPFについては最もスケーラビリティの高いプラットフォームと位置付けている。Windows Server 2003 Datacenter Editionがx64向けに用意されないこと、Web EditionがIA-32にのみ設定されていることなどは、こうした事情を反映したものと考えていいのかもしれない。

 とはいえEM64Tの登場により、IA-32ベースのプロセッサがこれまでより上位の市場セグメントに進出する可能性は高まる。市場でのすみ分けが、Intelが意図したとおりになるかどうかはフタを開けてみなければ分からない、というのが率直なところだろう。いずれにしてもx64対応のWindowsは2004年内のリリースを目標に現在開発中である。日本語版の開発も、年内のRTMを目標に開発されている。x64版Windowsに対応したデバイス・ドライバやアプリケーションの整備は、OSのリリースから本格化する。そう考えると、64bit環境の普及にはまだ2〜3年が必要だが、逆に2〜3年後に64bit環境を確立するには、このタイミングで環境整備を始める必要がある、ということもできるだろう。記事の終わり

コラム
次の差別化ポイントはマルチコア化
 2004年2月のIDF Spring 2004でIntelがEM64Tを発表して3カ月が過ぎた。この間、実際の製品はまだリリースされていないわけだが、EM64Tに対するIntelのスタンスには微妙な変化が見られる。IDFの時点でIntelは、EM64Tをサポートするのはサーバ向けのプロセッサだけで、クライアント向けプロセッサについては未定というスタンスを貫いていた。「64bit環境を必要とするようなアプリケーションがクライアントにいま、存在するのか」といった論調である。

 しかし5月に開かれたアナリストミーティングでポール・オッテリーニ(Paul Otellini)社長は、Celeronからハイエンドまで、NetBurstマイクロアーキテクチャのプロセッサすべてでEM64Tをサポートしていく方針であることを明らかにし、2005年からサポートを開始していくと述べた(モバイル向けについては、いまのところ具体的なEM64Tサポートのロードマップは明らかにされていない)。

 
2月の慎重路線から、積極路線に転じたような印象だが、むしろEM64TやNX(No Execute:メモリ・ページの属性に非実行属性を付与するもの。バッファ・オーバーフローなどによるプログラムの実行が防止できる)のサポートは当然であり、これらをサポートするかどうかを論点にはしたくない、という意思さえ感じられた。Microsoftがプラットフォームとしてサポートするといっているものに対して、サポートする/しないを論じるのはナンセンスである、というニュアンスだ。代わりにIntelがポイントとして打ち出しているのは、プロセッサのデュアルコアおよびマルチコア化である。複数のプロセッサ・コアによる物理的な並列処理を、今後の差別化のポイントにしたいようだ。こうした路線変更を受けて、Tejas(開発コード名:テハス)とJayhawk(同:ジェイホーク)という90nmプロセス製造による2世代目のNetBurstマイクロアーキテクチャ・プロセッサがキャンセルされてしまった(いずれもシングルコアのプロセッサだといわれていた)。

 IntelがEM64T、あるいはAMD64互換の64bit拡張に慎重だったのは、やはりIPFを抱えているからだろう。Intelは、IPFとEM64TをサポートしたIA-32プロセッサはすみ分けると主張し続けているものの、市場に混乱が生じる可能性は否定できない。できればやりたくなかったに違いない。それでもやることになったのは、MicrosoftがOSを提供するからであり、やると決めた以上はナンバーワンを目指すのが当然だ。長期的にIPFとEM64Tのすみ分けがどうなるのかはともかくとして(IPFがいままで以上にハイエンド色を強めるかもしれない)、EM64Tのサポートに力が入るのではないかと思われる。
 
目次ページへ  「System Insiderの解説」


System Insider フォーラム 新着記事
  • Intelと互換プロセッサとの戦いの歴史を振り返る (2017/6/28)
     Intelのx86が誕生して約40年たつという。x86プロセッサは、互換プロセッサとの戦いでもあった。その歴史を簡単に振り返ってみよう
  • 第204回 人工知能がFPGAに恋する理由 (2017/5/25)
     最近、人工知能(AI)のアクセラレータとしてFPGAを活用する動きがある。なぜCPUやGPUに加えて、FPGAが人工知能に活用されるのだろうか。その理由は?
  • IoT実用化への号砲は鳴った (2017/4/27)
     スタートの号砲が鳴ったようだ。多くのベンダーからIoTを使った実証実験の発表が相次いでいる。あと半年もすれば、実用化へのゴールも見えてくるのだろうか?
  • スパコンの新しい潮流は人工知能にあり? (2017/3/29)
     スパコン関連の発表が続いている。多くが「人工知能」をターゲットにしているようだ。人工知能向けのスパコンとはどのようなものなのか、最近の発表から見ていこう
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

System Insider 記事ランキング

本日 月間