この2年間、x64に対応したOSはLinuxのみだったが、x64版Windowsの登場により、より広い市場にx64アーキテクチャが受け入れられる体制になった。x64版Windowsへの移行について、ポイントを3回に分けて見ていこう(特集:64ビットコンピューティング最前線)。
2005年4月に開催されたWinHECで、Microsoftは正式にx86プロセッサの64ビット拡張(x64)アーキテクチャをサポートするOSの出荷を開始した。x64アーキテクチャをサポートした最初のプロセッサ「Opteron」がAMDからリリースされて、ほぼ2年後のことである。日本語版については、5月16日にサーバ向けOSとして、Windows Server 2003 x64 Editions(Standard、Enterprise、Datacenterの3バージョン)が正式発表され(関連記事参照)、続いて5月24日にWindows XP Professional x64 Editionが発表された(関連記事参照)。この2年間、x64に対応したOSはLinuxのみという状況が続いていたが、Windowsの登場により、より広い市場にx64アーキテクチャが受け入れられる体制になった。
これら4つのバージョンのx64版Windowsは、すべてx86およびIPF向けのWindows Server 2003 SP1をベースにしたものだ。x64版の最大の特徴は、x86版(32ビット版)に比べてアドレス空間が大幅に広げられたことと、極めて小さいオーバーヘッドで32ビットアプリケーションを実行可能なことにある。
x86版のWindowsがサポート可能な物理アドレス空間はEditionにより異なり、2Gバイト(Web Edition)〜64Gバイト(Datacenter Edition)までの幅を持つ。だが、仮想アドレス空間はトータルで32ビット(4Gバイト)に限られており、デフォルトではうち2Gバイトをシステムが利用するため、ユーザーアプリケーションが利用可能な仮想アドレス空間(ユーザーエリア)は2Gバイト分に限定される。ユーザーエリアを3Gバイトにまで拡張する起動スイッチも用意されているが、これはシステム領域を1Gバイトに縮小することで実現しているため、アプリケーションそのものの互換性に加え、デバイスドライバの互換性問題も生じる。そのため、広く使われていないのが実情だ(この機能の存在自体が、それほど広く知られていない)。
x64版Windowsでは仮想アドレス空間が44ビット(16Tバイト)まで拡張され、大規模なアプリケーションへの対応が大幅に改善された。もちろんこのメリットを享受するには、x64版Windows用にアプリケーションを作成する必要がある(少なくともリコンパイルが必須)。拡大された仮想アドレス空間により、複数の大規模32ビットアプリケーションを動作させた場合の性能が改善されることもあると思われるが、既存の32ビットアプリケーションで、44ビットに拡大された仮想アドレス空間の恩恵を受けられるわけではない。
●エディションごとの機能の違い物理 アドレス 空間 |
仮想 アドレス 空間 |
サポート プロセッサ数 |
|
---|---|---|---|
Windows XP | 4GB | 4GB | 1〜2 (Professional) 1 (Home) |
Windows XP 64bit Edition |
128GB *2 | 16TB | 1〜2 *1 |
Windows Server 2003 Web |
2GB | 4GB | 1〜2 |
Windows Server 2003 Standard 32 |
4GB | 4GB | 1〜4 |
Windows Server 2003 Enterprise 32 |
32GB | 4GB | 1〜8 |
Windows Server 2003 Datacenter 32 |
64GB | 4GB | 8〜64 |
Windows Server 2003 Standard x64 |
32GB | 16TB | 1〜4 |
Windows Server 2003 Enterprise x64 |
1TB *3 | 16TB | 1〜8 |
Windows Server 2003 Datacenter x64 |
1TB | 16TB | 8〜64 |
Windows Server 2003 Standard IPF |
32GB | 16TB | 1〜4 |
Windows Server 2003 Enterprise IPF |
1TB | 16TB | 1〜8 |
Windows Server 2003 Datacenter IPF |
1TB *4 | 16TB | 8〜64 |
* 32 = IA-32 * x64 = 64ビット拡張システム * IPF = Itaniumプロセッサ・ファミリ |
|||
*1 64bit Editionに今のところHome Editionなどのバリエーションは存在しない *2 当初のIPF版(その後廃止)は16GB、Windows Server 2003 SP1に合わせて32GBへ拡張予定だったが、特定顧客の要望を受け128GBまで拡張 *3 当初は64GBだったがSP1/x64版のタイミングで1TBへ拡張 *4 当初は512GBだったがSP1のタイミングで1TBへ拡張 |
64ビット版Windowsにおける32ビットアプリケーションの実行は、IPF(Itanium Processor Family)版でも用意されており、Windows Server 2003 SP1では新たにIA-32 Execution Layer(IA-32 EL)による実行がサポートされるようになった。以前は、IPFが備えるIA-32互換のハードウェア機能を利用しており、IPFそのものの性能向上が32ビットアプリケーションの性能向上につながらなかった。IA-32ELは、ソフトウェアエミュレーションによる32ビットコードの実行であるため、IPFそのものの性能向上がそのまま32ビットコードの性能向上につながるというメリットがある反面、どうしてもオーバーヘッドが存在する。
一方、x64版での32ビットコード実行は、x64版プロセッサが備える32ビット互換モードを利用するため、ほとんどオーバーヘッドが存在しない。x64版プロセッサに32ビットOSをインストールした時と、ほぼ同じ性能が得られる。32ビットアプリケーションと64ビットアプリケーションが混在する環境にはx64版の方が向いている、といえるだろう。なお、64ビットモードのアプリケーションだが、x64版とIPF版の間にバイナリレベルの互換性はない。それぞれ専用のアプリケーションが必要となる。
Copyright © ITmedia, Inc. All Rights Reserved.