表1●IPF版とx64 Editionの違い
表1●IPF版とx64 Editionの違い
[画像のクリックで拡大表示]
図1●Windows XP ProfessionalおよびWindows Server 2003が対応するCPUの数とメモリー容量
図1●Windows XP ProfessionalおよびWindows Server 2003が対応するCPUの数とメモリー容量
[画像のクリックで拡大表示]
図2●x64 Editionでは32ビットWindowsよりも多くの仮想メモリーを利用できる<br>GlobalMemoryStatus APIによって,仮想メモリー容量(ユーザー領域)を調べるプログラムを,Windows Server 2003 x64 Enterprise Editionで動かした。左上は64ビット・アプリケーションとしてビルドしたもの。仮想アドレス空間は8Tバイト(8388607Mバイト)である。右上と右下は同じソース・コードを32ビット・アプリケーションとしてビルドしたもの。右上は「/LARGEADDRESSAWARE」オプションを付けた。仮想アドレス空間は4Gバイト(4095Mバイト)である。右下は同オプションを付けていない。仮想アドレス空間は2Gバイト(2047Mバイト)である。
図2●x64 Editionでは32ビットWindowsよりも多くの仮想メモリーを利用できる<br>GlobalMemoryStatus APIによって,仮想メモリー容量(ユーザー領域)を調べるプログラムを,Windows Server 2003 x64 Enterprise Editionで動かした。左上は64ビット・アプリケーションとしてビルドしたもの。仮想アドレス空間は8Tバイト(8388607Mバイト)である。右上と右下は同じソース・コードを32ビット・アプリケーションとしてビルドしたもの。右上は「/LARGEADDRESSAWARE」オプションを付けた。仮想アドレス空間は4Gバイト(4095Mバイト)である。右下は同オプションを付けていない。仮想アドレス空間は2Gバイト(2047Mバイト)である。
[画像のクリックで拡大表示]
図3●Windows XP Professional x64 Edition&lt;br&gt;ビジュアル・スタイル,Media Player 10,Internet Explorer 6 SP2など,32ビット版と同じ機能が使える。
図3●Windows XP Professional x64 Edition<br>ビジュアル・スタイル,Media Player 10,Internet Explorer 6 SP2など,32ビット版と同じ機能が使える。
[画像のクリックで拡大表示]
図4●既存の.NETアプリケーションも動作する&lt;br&gt;(a)Visual Studio .NET 2003(C#)で開発した画像表示ソフトをWindows Server 2003 ,Enterprise Editionで動かした。(b)同じソフトをWindows Server 2003 x64,Enterprise Editionで動かした。x64 Edition用の.NET Framework 2.0によって,既存の.NETアプリケーションは64ビット・アプリケーションとして動作する。
図4●既存の.NETアプリケーションも動作する<br>(a)Visual Studio .NET 2003(C#)で開発した画像表示ソフトをWindows Server 2003 ,Enterprise Editionで動かした。(b)同じソフトをWindows Server 2003 x64,Enterprise Editionで動かした。x64 Edition用の.NET Framework 2.0によって,既存の.NETアプリケーションは64ビット・アプリケーションとして動作する。
[画像のクリックで拡大表示]
図5●x64 Editionには,64ビット版IEと32ビット版IEがある&lt;br&gt;どちらも同じようにWebサイトを閲覧できる。
図5●x64 Editionには,64ビット版IEと32ビット版IEがある<br>どちらも同じようにWebサイトを閲覧できる。
[画像のクリックで拡大表示]
図6●64ビット版IEでWindows Updateにアクセスしたところ&lt;br&gt;ActivceXコントロールを利用するサイトは,64ビット版IEでは開けない。
図6●64ビット版IEでWindows Updateにアクセスしたところ<br>ActivceXコントロールを利用するサイトは,64ビット版IEでは開けない。
[画像のクリックで拡大表示]

 2005年前半,マイクロソフトはAMD64とIntel EM64Tアーキテクチャに対応したWindows XP Professional x64 EditionおよびWindows Server 2003 x64 Editionを出荷した。これらの64ビットWindowsでは仮想アドレス空間が16Tバイトと,事実上無制限になる。

 アプリケーションを64ビット化すれば,大容量メモリーを利用できる。さらに,整数演算の処理単位が64ビットになり,倍増した16本のレジスタを利用することで,処理速度の向上も見込める。

 64ビット化せずに既存の32ビット・アプリケーションをx64 Editionで動かすだけでも利点がある。32ビットの仮想メモリー領域である4Gバイトすべてをユーザー領域として使えるからだ。32ビットWindowsよりも大きな領域を使える。しかも,実行速度は32ビットWindowsと比べてもほとんど落ちない。

Part1◆x64の威力
32ビット・アプリケーションでも利点がある

 Microsoftは2005年5月に,Windows XP ProfessionalとWindows Server 2003の64ビット版である「x64 Edition」を出荷した。これによってWindowsも,いよいよ本格的に64ビットの時代に突入する。

 64ビットWindowsとしては,既にIPF(Itaniumプロセッサ・ファミリ)向けWindows XPやWindows Server 2003が出荷されている。それらとx64 Editionが違う点は,(1)既存の32ビット・アプリケーションのほとんどがそのまま,しかも動作速度が落ちずに動くこと,(2)32ビット版とほぼ同じ機能が実装されること——である(表1[拡大表示])。

 さらに,x64 Editionが動作するAMD64やIntel Extended Memory 64 Technology(EM64T)に対応したCPUは,Pentium 4など既存の32ビットのx86プロセッサと完全な互換性を備えている。これらのCPUを使ったPCでは,32ビットWindowsもそのまま動作する。まずはハードウエアだけを64ビットにしておき,OSとアプリケーションを32ビットのまま運用できる。その場合も,後日x64 Editionに移行する際に,OSの追加費用はかからない。米Microsoftは,既存の32ビット版Windows XP ProfessionalとWindows Server 2003のユーザーが,無償でx64 Editionにアップグレード(ライセンスを交換)できる仕組みを用意しているからだ。

 対象は上記OSがプリインストールされたx64対応マシンを購入したユーザーで,メーカーに対して申し込む。まずは64ビットのハードウエアと32ビットのWindowsで運用し,時期を見てWindowsをx64 Editionに移行,その後アプリケーションも64ビットへ——と,市場やコンピュータ環境の変化をにらみながら順に移行できる。IPFと異なり,ハードからアプリケーション・ソフトまでを一度に64ビットにする必要はなく,リスクを抑えられ,ハードルも低い。

Datacenter Editionも用意される

 x64 Editionは,Windows XP SP2相当またはWindows Server 2003 SP1相当があらかじめ適用された状態で出荷される。すなわち,データ実行防止機能やWindowsファイアウオールなどが実装され,セキュリティが強化された状態になる。Windows Server 2003 x64 Editionは,それに加えてセキュリティ構成ウィザード,リモート・アクセス検疫サービスなど,Windows Server 2003 SP1で追加される機能も備える。

 Windows XP x64 EditionはProfessionalのみ,Windows Server 2003 x64 Editionには,Standard,Enterprise,Datacenterの3つのエディションが用意される(x64 Editionには英語版にもWebエディションはない)。それぞれの違いは,対応するCPUの数と,メモリー容量である。Standard x64 Editionは,4CPU/32Gバイトに対応する。Enterprise x64 Editionは8CPU/1Tバイト,そして Datacenter x64 Editionは64CPU/1Tバイトに対応する(図1[拡大表示])。どのエディションも,それぞれ相当する32ビット版に比べて,対応するメモリー容量が大幅に増えている。

32ビットでも利用可能メモリーが増える

 x64 Editionで大容量メモリーが使えるという利点は,既存の32ビット・アプリケーションでも有効だ。x64 Edition上ならば,4Gバイトの仮想アドレス空間すべてを,ユーザー領域として利用できる。

 32ビット・アプリケーションの仮想アドレス空間は,32ビットWindowsとx64 Editionのどちらも,4G(2の32乗)バイトである。これを32ビットWindowsでは,アプリケーション(ユーザー領域)とシステム(カーネル領域)で,2Gバイトずつに分けて利用する。最近は,処理すべきデータ容量が増大して,2Gバイトのユーザー領域では足りなくなるアプリケーションが出てきた。

 最近の32ビットWindowsは,「4GT RAMチューニング」と呼ぶ,ユーザー領域に3Gバイトを割り当てるモードも備えている。このモードを利用するには,boot.iniに「/3GB」起動オプションを付ける。その上でアプリケーションにIMAGE_FILE_LARGE_ ADDRESS_AWAREフラグを立てておけば,3Gバイトのユーザー領域が利用できる。このフラグを付けるには,Visual C++の場合は「/LARGE ADDRESSAWARE」というリンカー・オプションを付けてビルドする。ただしこのモードでは,ページ・テーブル・エントリやウインドウ・ハンドル,TCP/IPのソケット・オブジェクトなどを管理しているカーネル領域が1Gバイトに減るので,逆にカーネル・メモリー不足に陥る恐れがある。

 また,32ビット・システムでも,Pentium Pro以降のプロセッサが備える物理アドレス拡張(PAE)という機能などを利用して4Gバイトを超えるメモリーを扱える。だが,4Gバイトのアドレス空間内に設けたウインドウを通してアクセスするので,仮想アドレス空間が増えるわけではない。

 x64 Editionで64ビット・アプリケーションを動かせば,16Tバイト(そのうち,ユーザー領域は8Tバイト)と,事実上無制限の仮想アドレス空間が利用できる。それだけではなく,既存の32ビット・アプリケーションでも,IMAGE_FILE_LARGE_ADDRESS_AWAREフラグを立てているアプリケーションなら,Windowsをx64 Editionにするだけで4Gバイトすべてをユーザー領域として使える。しかもカーネル領域を圧迫することはない。カーネルは,4Gバイトの領域の外で動作しているからだ(図2[拡大表示])。

WOW64で64ビットに変換

 64ビットWindows上で32ビット・アプリケーションを動かす場合,64ビットWindowsのカーネル処理が必要になったときには,アドレス空間の変換が必要になる。64ビットWindowsでは,32ビット・アプリケーションを動かすのに必要な処理の基盤として,WOW64(Windows on Windows 64)と呼ぶ仕組みを使っている。

 WOW64はIPF版の64ビットWindowsも備えており,IPF版ではアドレス変換以外にx86命令からIPF命令への変換なども担っている。だがx64 Editionが動作するAMD64やIntel EM64Tに対応したCPUの64ビット命令は,32ビット・アプリケーションが書かれている32ビットのx86命令と互換性がある。IPF版では命令を変換した上で実行していたため,32ビット・アプリケーションの実行性能が落ちてしまった。一方,x64 Editionではほとんどの命令を変換せずに実行でき,処理性能は落ちない。

 さらにマイクロソフトによると,x64 Editionはベータ版の段階でも32ビット版に比べて,OS自体の処理速度が10%程度向上しているという。特にSSL(セキュア・ソケッツ・レイヤー)の処理は50%以上,Active Directoryの処理で2倍速いとする。アプリケーションに手を加えずOSをx64 Editionにするだけで,実行速度が32ビットWindows上と同等で,より多くのメモリーを利用できるのならば,32ビット・アプリケーションだけを利用するのであっても,x64 Editionに移行するメリットは大きい(WOW64およびAMD64/EM64Tの仕組みは,72ページの「32ビットの実行性能がよい秘密」を参照)。

32ビット版と同じ機能を装備

 機能の面でもx64 Editionは,32ビット版に見劣りしない。x64 Editionには,32ビット版のWindowsと同じ機能がすべて実装されている。この点は,IPF版が機能の面で32ビット版Windowsのサブセットだったのとは異なる。

 例えば,クライアント向けのWindows XP Professionalを見ると,ビジュアル・スタイル(Windows XPの新しいGUI),Windows Messenger,Media Player 10,圧縮フォルダ,システムの復元など,32ビット版と同じ機能が使える(図3[拡大表示])。Windows Server 2003も,x64 Editionには32ビット版と同等の機能が実装されている。

 さらに2005年後半に出荷が予定されている.NET Framework 2.0は,x64 Edition向けも用意される。これによって,既存の.NETアプリケーションは,そのまま64ビットWindows上で,64ビット・アプリケーションとして動作する(図4[拡大表示])。つまり,x64 Edition上では,32ビットWindowsで動作していた既存のアプリケーションのほとんどすべてが,そのまま動作するようになるわけだ。

 ただし,64ビットWindowsには利点だけではなく,使用する上で注意すべき点もある。例えばDLLに関してだ。32ビット・アプリケーションは32ビットDLLしか呼び出せない。同様に,64ビット・アプリケーションが呼び出せるDLLは,64ビット版だけである(どちらもインプロセスDLLの場合)。これは,開発者だけでなく,一般ユーザーが日常的に利用する場面でも注意しなければならない。

 例えばInternet Explorer(IE)である。x64 Editionは32ビット版IEと,64ビット版IEの2つを備えている(図5[拡大表示])。プロキシ・サーバーの設定などは共通なので,どちらか一方にWebアクセスのための設定をすれば,もう一方でも,同じようにWebサイトにアクセスできる。

 ところが,Active Xコントロールを利用するWebページには,32ビット版のIEでしかアクセスできない。ActiveXコントロールはDLLの一種で,今のActiveXコントロールは32ビットのものしか存在しないからだ。そのため64ビット版IEでは,ActiveXコントロールを利用するWebページを開けない(図6[拡大表示])。代表的なのは,Windows Updateである。ただし,Windows UpdateのWebページを64ビット版IEで開いたときには,自動的に32ビット版IEでそのページを開き直す。

 また,デバイス・ドライバは64ビット版にする必要がある。主なグラフィックス・カードやネットワーク・カードのドライバには,既に64ビット版がある。32ビット版Windows XPのインストールCDに標準でドライバが入っている機器については,64ビット版ドライバがx64 EditionのインストールCDにほとんどが含まれている。だが,プリンタやサウンドなど,エンドユーザー向けの周辺機器の中には64ビット・ドライバがないものもある。

 このように,64ビットWindowsについては,少なからず注意すべき点がある。これらについては,81ページの「安心してx64に移行するためのポイント」で詳しく説明する。

出典:日経BPムック『完全詳説! Visual Studio 2005 & SQL Server 2005』 (2005年5月23日発行) より
記事は執筆時の情報に基づいており、現在では異なる場合があります。