稼働中のWindows 7の46パーセントが64ビット版であるという(関連記事)。Windowsウォッチャーを自認し、「Vistaが「遅い」と感じませんか?」「Vistaが『遅い』と感じませんか?その2」「64ビット版Vista最大の欠点」といった記事を書いてVistaの64ビット版を推奨してきた記者としては、ここはどうしても、64ビット版Windows 7のメリットと、それを享受するための注意点を書き記しておきたい。

 64ビットWindowsのメリットをひとことで言うなら「大きなメモリーを使える」だ。32ビットWindowsでは、PAE(Physical Address Extension)を使う場合を除き、物理メモリーは最大4Gバイトである。64ビットのWindows 7では、Home Basicなら8Gバイト、Home Premiumなら16Gバイト、Professional以上なら192Gバイトが最大値だ。

 とはいうものの、「そんなにメモリーがあっても…」と思ってしまう人もいるだろう。そういう議論はパソコンを巡って20年以上繰り返されてきたのだが、今回もやはり、最後は大きなメモリーを活用する形で決着するだろう。Windows 7において、なぜ大きなメモリーが嬉しいのか。四つの視点から述べる。

利点(1)ディスクキャッシュが増える

図1●Windows 7のタスク マネージャーで「キャッシュ済み」の欄を見ると、ディスクキャッシュにどの程度のメモリーを使っているかわかる。この画面では約5.6Gバイトだ
図1●Windows 7のタスク マネージャーで「キャッシュ済み」の欄を見ると、ディスクキャッシュにどの程度のメモリーを使っているかわかる。この画面では約5.6Gバイトだ
[画像のクリックで拡大表示]

 大きなメモリーの第一の利点は、ディスクキャッシュが大きくなることだ。図1はメモリー8Gバイトを積んだパソコンのタスク マネージャーだが、「キャッシュ済み」の欄が「5608」と表示されている。約5.6Gバイトのメモリーがディスクキャッシュとして利用されているわけだ。

 ディスクキャッシュがこのくらいあると、頻繁に利用するファイルのほとんどが収まるため、ファイルを開いてアプリケーションを起動する時間が短縮される。パソコンの快適な動作を表現して「さくさく」という言葉が使われることがあるが、まさにそうなる。

利点(2)32ビットのプログラムで4Gバイト使える

 32ビットWindowsで32ビットプロセスが利用できるメモリー(ユーザーモードの仮想アドレス空間)は最大2Gバイトだ。4GT(4-gigabyte tuning)と呼ばれるチューニングをすれば3Gバイトまで増やせるが、弊害もあるので誰にでも勧められるチューニング方法とは言いがたい。それが64ビットWindowsなら、簡単に4Gバイトになる。

 図2はVisual Basic 2010 Express(Visual Studio 2010の無償版であるVisual Studio 2010 Expressの一部)で作成した、メモリー不足を意図的に引き起こすプログラムだ。32ビットでビルドして普通に実行すると、約0.75Gバイト、約1.1Gバイトの配列は作れるが、さらに増やそうとしてメモリー不足で停止してしまう。

 Visual Studio 2010に付属するEDITBINコマンド(図3)を使い、先ほどの32ビットプログラムに/LARGEADDRESSAWAREの指定を与えたところ、配列をさらに大きくできた。メモリー8Gバイトの64ビットWindows 7では、配列の大きさを約2.6Gバイトまで増やせた。

図2●Visual Basic 2010で書いた、大きな配列を作ってメモリーを使い切るプログラム
図2●Visual Basic 2010で書いた、大きな配列を作ってメモリーを使い切るプログラム
[画像のクリックで拡大表示]
図3●32ビットのプログラムでも、EDITBINコマンドで/LARGEADDRESSAWAREオプションを付けると2GB超のメモリーを利用できる
図3●32ビットのプログラムでも、EDITBINコマンドで/LARGEADDRESSAWAREオプションを付けると2GB超のメモリーを利用できる
[画像のクリックで拡大表示]

 /LARGEADDRESSAWAREによるアドレス空間の拡大は、Visual C++など、他のプログラミング言語で作ったプログラムにも適用できる。日経ソフトウエア2010年9月号(好評発売中!)の特集2「マルチコアを使いこなせ!並列プログラミング入門」では、並列化の例題として、Visual BasicとVisual C++で素数の一覧を作るプログラムを取り上げ、そこでは/LARGEADDRESSAWAREが大活躍であった。これだけでメモリー空間が広がるのだから、ラッキー!という感じである。