【レポート】
Windows 64-bit Edition Technology Tourの午後は、64bit版のSQL Serverの機能概要や、具体的に32bitアプリを64bitネイティブアプリとしてコンパイルし直す場合の問題点などについて解説が行われた。
SQL Serverについては午前中も登場したMark Franks氏が、まず既に現在製品として出荷されているSQL Server 2000の64bit版について説明を行った。同氏によれば元々SQL Server 2000の64bit版は8TBまでの仮想メモリをサポートしているほか、テーブルサイズも最大5GBと非常に巨大なデータを扱うことが可能になっているという。またメモリアドレッシングも現在のところ1TBをフラットに扱うことが可能になっているが、これは「あくまでハードウェア的な最大メモリ量が、今のところHPの64wayサーバで1TBだから1TBと言っているだけで、実際にはもっとメモリ容量が大きくてもソフト的には対応可能」(同氏)という意味なのだとか。
もちろんパフォーマンスは高く、特にメモリキャッシュが効いた場合の処理速度は非常に高速。今回は実際に5GBのテーブルを相手にSQL Queryを発行した場合の処理時間の比較を行うデモを行い、1回目は約68秒かかっていた処理が、データがメモリに読み込まれた後の2回目には同じ処理がわずか1.7秒程度で終了するところを参加者に披露した。
ただ現在の64bit版SQL Serverではデータ変換サービスやSQLメール、Reporting Servicesなどがサポートされていないほか、GUIの管理ツールも32bit版しか存在しないため、これを32bit環境にインストールしてリモートで64bit版のサーバを管理する必要がある。これらの問題をクリアした上に信頼性やパフォーマンスの向上、新機能の追加などが行われたのが「Yukon」(開発コード名)ことSQL Server 2005ということになるが、SQL Server 2005の64bit版は「今年夏のβ2からサポートする」(同氏)予定となっている。
続いて登場したマイクロソフトの長尾康氏は、C/C++で書かれた32bitアプリを64bit化するに当たってのコーディング上の問題点について解説した。
といっても、基本的に32bit版と64bit版ではAPIなどはほとんど変更がないし、また移植性を考慮して、64bit版のVisual C++でもinteger型やlong型は32bitのままとなっている。ただポインタに関してはさすがに64bit化せざるを得なかったため、例えばポインタをintやlongなどにキャストして使っているコードや、ウィンドウハンドルなどをlongにキャストしているケースなどではコンパイル時にエラーが発生したり、コンパイルは通っても実行時にメモリクラッシュが起きてしまったりするので、そのようなケースではコードの修正が必要になると同氏は説明した。
また構造体などを扱う場合のメモリブロックのアライメントに関しても、32bit版では4バイトでのアライメントだったものが64bit版では8バイトのアライメントに変更されているため、この点に気をつけないとミスアライメントによってアプリケーションがクラッシュしてしうなどの可能性がある。特にItanium版ではミスアライメントが起こるとアプリケーションに例外が渡るため、アプリ側で例外をハンドリングしないとアプリの異常終了などを引き起こしてしまうことになり注意が必要だ、と同氏は述べた。
さらにItanium版特有の問題として、同氏はProfile-Guided Optimization(POGO)について解説した。これはItanium版のアプリについて、最初にコンパイルしたプログラム(Instrument Code)を実行させてプロファイル情報を収集した上で、ソースコードとこのプロファイル情報を用いて再コンパイルを行ってコードを最適化して実行速度を大幅に高速化するというもの。同氏によれば一般的にPOGO実行前と実行後では実行速度が倍くらいになる効果があるということでこれを使わない手はないが、一方でPOGOはプログラムのレイアウトを大幅に入れ替えてしまうことから、同氏は「デバッグはPOGO実行前に行っておいたほうがよい」とアドバイスしていた。
最後に登場したマイクロソフトの佐藤直樹氏は、64bit環境下での.NETアプリケーションの開発について説明した。
もちろん.NETの32bitアプリケーションでも、午前中に解説されたWOW64を使えば基本的には問題なく動作するのは当然の話。問題は、例えば32bitで開発された.NETアプリを64bit環境下でネイティブな64bitアプリとして動作させることが可能かどうか、ということになるが、これは「条件付で可能」。同氏によれば、Visual J#のみは64bit環境下でも32bitアプリしか生成できないため、J#で書かれたアプリはWOW64上での32bit動作になってしまうというが、それ以外の言語でMSILのみで構成され検査可能なアプリケーションであれば64bitネイティブ動作が可能だという。
またVisual Studio 2005では新たにC#に「/platform」スイッチが追加され、例えばx64環境やItanium環境でのみ動作するILを生成することが可能になる。この際x64、もしくはItaniumのスイッチが指定されたバイナリは従来のPE32形式ではなく「PE32+」形式で生成されることになるとのこと。
このスイッチで指定された環境はGlobal Assembly Cache(GAC)上でFusionにより管理され、例えばx64環境下でx86版とx64版で同名のアセンブリが並存することができたり、Itanium版のインストールを拒否したりできたりする。この際どちらのアセンブリが利用されるかは呼出元のアプリがどちらの環境で動いているかで決定されるため、x86版のアプリがx64版のアセンブリを呼び出したりするといったことはできないとのこと。
ただ、32bit版の.NETアプリを64bitネイティブで動作させるとなるといくつか注意が存在するという。まず浮動小数点演算については「32bitでは計算できなかったものが64bitでは計算できたりするので、両方で実行結果を同じにすることは期待せずに、IEEE-754に従った処理を行うようにすべき」(同氏)。またバイナリのシリアル化を使用する場合はポインタサイズの違いがIntPtrなどに影響してくるため、その点に注意してコードを書く必要があるとのこと。
またCOMコンポーネントを.NETアプリで利用するといった場合は、アーキテクチャをまたがった形での相互運用には困難が伴うという。今回は実際に32bit版のCOMコンポーネントをCOM+として登録することで64bitネイティブの.NET環境で問題なく動作させるといったデモも行われたが、同氏は「これはあくまでも一時的な延命策であり、こういったことはあまりやらないほうがいいのではと個人的には思う」と述べていた。
| 64bit Windowsは開発者/ユーザに大きなメリット - マイクロソフトが解説 [2004/6/23] |
| 「64bitへの移行は16bit→32bitより簡単」- AMD・MSカンファレンスより [2004/4/27] |
| 【レポート】.NET Developers Conference - デザインとロジックの分離を目指す「Avalon」 [2003/12/10] |
| 【レポート】.NET Developers Conference - Longhorn、国内初お披露目 [2003/12/10] |
| CTC、複数のDCを仮想で利用するマルチ仮想データセンタサービスの実証実験 [09:38 5/22] |
| 【コラム】にわか管理者のためのWindowsサーバ入門 第87回 パフォーマンス警告による負荷状況記録[2003] [09:00 5/22] |
| Twitterが「Do Nt Track」を導入 - プライバシー保護の動きがさらに拡大 [08:30 5/22] |
| Nginx、早くも評価版開発スタート - 1.3系でSPDY対応を目指す [08:30 5/22] |
| 慶応大、好き嫌いや眠気などを簡単に測定できる簡易脳波計測器を開発 [07:30 5/22] |
|
渡部篤郎、自分のモノマネをする山本高広に「勝手にやってるでしょ?」 [11:30 5/22] エンタメ |
|
SKE48「アイシテラブル!」女性グループ史上4組目の5作連続1位 - オリコン [11:30 5/22] エンタメ |
|
もらえるだけでは…ボーナス見込み額最多は"30万~40万円"、6割が金額に不満 [11:24 5/22] ライフ |
|
【男性編】一緒に東京スカイツリーを上ってみたいキャラランキング [11:00 5/22] エンタメ |
|
【女性編】一緒に東京スカイツリーを上ってみたいキャラランキング [11:00 5/22] エンタメ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。