x64版Windowsのメリットは32ビットアプリケーションとの互換性x64版Windowsへの移行は急がば回れ? 

この2年間、x64に対応したOSはLinuxのみだったが、x64版Windowsの登場により、より広い市場にx64アーキテクチャが受け入れられる体制になった。x64版Windowsへの移行について、ポイントを3回に分けて見ていこう(特集:64ビットコンピューティング最前線)。

» 2005年07月26日 13時22分 公開
[元麻布春男,ITmedia]

 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.

注目のテーマ