Enterprise Watch
最新ニュース

米Microsoftロドリゲス氏「32ビットの開発知識は、64ビット環境でそのまま使える」

~Microsoft Windows 64-bit Technology Tour 2004

 6月22日にマイクロソフト株式会社の主催で行われたイベント「Microsoft Windows 64-bit Technology Tour2004」において、「64-bit アプリケーション アーキテクチャ」をテーマに、米Microsoft Windowsディビジョン リードプロジェクトマネージャのクライド・M.ロドリゲス氏が講演を行った。


x64対応Windowsは2005年第1四半期に提供

米Microsoft Windowsディビジョン リードプロジェクトマネージャー クライド・M.ロドリゲス氏
 Microsoftでは、Itanium Processer Family(IPF)に対応するWindows Server 2003をすでに提供している。そしてAMDの「AMD64」とIntelが2月にアナウンスした「EM64T」、この2つのx86互換64ビット拡張アーキテクチャ「x64」に対応する64ビットOSについても、「2004年末までに開発を終え、2005年第1四半期には提供する予定」とした。

 この2つに32ビット版をあわせた3つのWindowsは、「共通したソースコードベースを元に、それぞれのインタラクションセット向けにコンパイルされる」という。このIPF版、x64版の間にはバイナリレベルでの互換性はなく、対応するアプリケーションやドライバについても別個に必要となるが、それぞれに対応するコンパイラがすでにIntelから提供されている。またマイクロソフトの提供するSDK(Software Developer Kit)、DDK(Driver Developer Kit)が、現在テクニカルベータプログラムを通じて利用可能となっている。このSDKでコンパイルしたバイナリは「64ビットでは約25%ファイルサイズが増加する」という。

 このWindows 64-bitアーキテクチャでは、仮想メモリを16TB(32ビットでは4GB)、ページファイルを512TB(同64GB)、またシステムキャッシュ1TB(同1GB)をサポートしている。「大量メモリを利用できる点が64ビット環境における最大のメリット」と同氏は述べた。

 Windows Server 2003だけでなく、x64向けにのみリリースされるWindows XP 64-bit Editionについても同じ1つのソースコードからコンパイルされる。これらは同OSの間で機能の違いはないが、「x64では32ビットアプリがネイティブに走ることが特徴」といえる。


1つのコードから32ビット、x64、IPFに対応するOSがコンパイルされる 64-bit Windowsでサポートされるメモリ領域の上限

64-bit Windows上で32ビットアプリケーションを動作させる「WOW64」

Windows XP 64-bit Edition上で32ビット版のWordを動作させた例
 このため同社では、64-bit Windows上で32ビットアプリケーションを動作させるサブシステム「Windows 32 On Windows 64(WOW64)」をOSにあわせて提供する。アプリケーションが64ビットか32ビットかについては、「dumpbin.exe」が自動的にアーキテクチャを判定するため、ユーザーはシームレスに利用できる。

 x64環境でWOW64により32ビットアプリケーションを動作させた場合には、メモリ領域の拡張により動作速度が改善される場合があるという。もちろんIPF環境向けにも提供されるが、「Itaniumでは「Exec.Layer」を介して32ビットコードが実行されるため、処理速度の面ではデメリットがある」とした。

 また32ビット環境では「%systemroot%\syetem32\*.*」に存在するファイルシステムは「%systemroot%\syewow64\*.*」に、また32ビットにのみ対応するキーは「HKEY_LOCAL_MACHINE_\Software\WOW6432Node」のレジストリ配下に格納される。よって32ビットアプリケーションは64ビットDLLのロード、レジストには対応しない。

 そしてネイティブな32ビット環境と違い、16ビットのアプリケーション、Windows 3.xユーティリティは動作しない。この点については「下位互換性を確保するため、16ビットで動作するインストーラは多い。これを検知して、シームレスに32ビット版に交換する機能を提供する」とした。また32ビットのカーネルモードドライバ、OS/2やPOSIXアプリケーションについても非サポートとなる。

 このほか32ビット版の.NET Framework、Visual Studio .NET 2003については、すでにx64、IPFの双方で動作サポートが表明されている。32ビット版のSDK、DDKについては、x64上での動作がサポートされる。

 .NET Frameworkについては、CLR(Common Language Runtime)を使用したマネージドコードの32ビットアプリケーションの動作が64-bit Windows上でサポートされるという。64ビット版の.NET Frameworkは、2005年の前半にVisual Studio 2005のリリースとともに発表されるという。この64ビットCLR上では、32ビットアプリケーションがシームレスに動作するとのことだ。


32ビットから64ビットへのアプリケーション移行プロセス

「Nile」32ビット版のアーキテクチャ

ビジネスロジックとデータベース層のみ64ビット環境へ移行された
 同氏は32ビットから64ビットへの移行の容易さを強調した。「16ビットから32ビットの移行を経験した方も多いだろうが、あのときのようにメモリモデル、API、ライブラリの違いによるエラーリスクを負うことはない」とし、「確かに単なるリコンパイルでは済まないが、デバッガツール、プロセス、APIが同じなので、32ビットでの開発知識は応用できる。現在は8バイトのポインタサイズが64ビット長に変わるが、32ビットコードを64ビット環境で機能させるのに多くのことは必要ない」とした。

 具体的にアプリケーションを移植する際には、それが単体で動作するのか階層式なのか、関連するコンポーネントとテクノロジー、プロセスの依存関係などを事前に考慮する必要がある。同氏はMSDNで配布されているC++のサンプルアプリケーション「Nile」を用いて、32ビットから64ビットへのポーティングについて話を進めた。

 Nileは、ISAPIを用いてプレゼンテーション層を実装した3階層型のアプリケーションで、ビジネスロジックにはCOMコンポーネントが、データアクセスにはCOMオブジェクトが利用されている。この場合「Webプレゼンテーション層を64ビットへ移行しても、パフォーマンス向上はほとんどない。IEにも32ビット版と64ビット版があるが、64ビット版のActiveXはインターネット上でまだサポートされていない」と、一般のクライアント向けに利用する場合には、64ビット化が利便性の面からデメリットにもなり得るとした。

 次にクライアントとHTTP通信するIISを64ビットに移行することで、「より多くのプロセスを実行でき、アプリケーションの信頼性、拡張性が増す」とした。またデータストアも64ビットに移行している。同氏は「SQLの移行は非常に容易だ」とした。

 こうした方針の下、移行にあたっては「コアロジックは修正がいらない。ポインタタイプの修正と、COM+でのポインタ、タイプサイズのマイナーチューンだけが必要だった」という。実際の変更箇所は「DB.cpp」内の4箇所のLONGをLONG_PTRへ、22箇所のSQLINTEGERをSQLLENへ、「DBX.cpp」内の31箇所のSQLINTEGERをSQLLENへ、「ISAPI」内の2つのDWORDをDWORD_PTRへ、7つのLONGをLONG_PTRへ、WIN64 #ifdef blocksを4つ追加し、1つのUnsigned LongをUINT_PTRへ変更したたけだという。作業は「64ビット開発の経験がない3名のデバッガーが4日で終えられた」とのこと。


COM/COM+/ActiveX/RPC各コンポーネントの32/64ビット間での運用

 同氏は、COM/COM+/ActiveX/RPCそれぞれの32ビットと64ビットコンポーネント間でプロセスを相互運用する場合を解説した。

 COMでは同一プロセス内に32/64ビットを混在できない。コード間でコミュニケーションを行うためにはIn-Process コンポーネント(IPC)を用いる必要がある。また呼び出し・参照を行うOut-of-processコンポーネントも用意されている。

 ActiveXの実行ファイルでは、32/64ビットコンポーネント間のコミュニケーションが可能だ。またDLLについても相互に利用・参照できる。ただIEでは32/64ビット間はもちろん、x64、IPFとの間でもActiveXコントロールをロードできない。

 RPCでは、その仕様により相互運用性が大幅に簡素化されたという。そのプログラミングモデルはデータタイプを規定しており、またポインタサイズはローカルに依存するため、接続時に意識せずにそのまま利用できる。これはDCOMについても同じだという。このほかCOM+コンポーネントに関しては、64ビット環境にそのままインストールし、利用することが可能になっている。

 最後に同氏は「移植のメリットは個々の要件によりケースバイケース」とした。アプリケーションを64ビットに対応させるにあたっては、必要になる作業がそれぞれに違い、またそこで得られるメリットにも差がある。このため「移行する必要がない場合には、手を加えずに利用を続けるべき」とした。



URL
  Microsoft Windows 64-bit Technology Tour 2004
  http://www.microsoft.com/japan/events/route64/
  Windows XP 64-Bit Edition 技術概要
  http://www.microsoft.com/japan/technet/prodtechnol/winxppro/evaluate/xp64ovw.asp
  Beyond Windows XP: Get Ready Now for the Upcoming 64-Bit Version of Windows
  http://msdn.microsoft.com/msdnmag/issues/01/11/xp64/toc.asp
  Microsoft .NET Pet Shop
  http://msdn.microsoft.com/library/en-us/dnbda/html/bdasamppet.asp


( 岩崎 宰守 )
2004/06/23 19:54

Enterprise Watch ホームページ
Copyright (c) 2004 Impress Corporation All rights reserved.