2007.12.19

x64への移行はどうだろう

家のパソコンがクラッシュしたのを期に、いまさらながらVistaにしてみた。しかしハードは当時のままでCeleron 2GHz、512MBといったスペック。でもWebやメールだけだからもしかしたら使えるかも?と淡い期待をしていたのですが・・・見事に打ち砕かれました。メモリが足りないのかな?とタスクマネージャで確認してみると、なんとタスクマネージャだけでCPU使用率が50%になっている。メモリ使用率はそれほどでもない。うーん。作り直しか。
Vistaを快適に使うにはメモリ2GBは必要とはよく聞くはなしでx32のメモリ上限4GBもそろそろ限界が近づいてきた感がある。現在開発しているシステムでも、DBサーバでは4GBはかなり手狭になってきた印象を受ける。そろそろx64への移行がはじまるかなと思ったところで、今メインで開発している.NETの互換性はどうなるのだろう?と、ちょっと調べてみた。
結論から言うとx64ではWOW64(Windows on Windows 64)というx32コードをx64コードに置き換えて実行するしくみがあるため、x32の.NET Framework 1.0/1.1をそのまま実行可能だそうだ。内部的な変換のオーバヘッドが気になったが、マシン語の命令は互換性が保たれているため、さほど影響は出ないらしい。ItaniumやCrusoeのようにまるきり違う命令へ変換するためにパフォーマンスが問題になることにはならない様子。また.NET Framework 2.0 からはターゲットCPUを指定してx32、x64用にビルドを分けることができるとのことでひと安心。
とここまでは全てマネージコードのアプリケーションの話で、APIを直接呼び出すようなアンマネージコードを含んでいる場合は注意が必要。というのも、64bitとなった場合、ポインタの領域も64bitになる。APIにはポインタを頻繁に使うので、動作確認が必要になりそうだ。特に.NET Framework 1.0/1.1のときは標準機能が不足していて、いくつかアンマネージなコードを書いた気が・・・。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
admin