連載
» 2010年06月03日 00時00分 公開

64bit Windows時代到来:第1回 64bit Windowsのメリットとは (2/3)

[打越浩幸,デジタルアドバンテージ]

 今回は、64bit版Windows OSのメリットについて列挙してみよう。

メリット1――大容量の物理メモリが利用可能になる

 64bit版Windows OSを利用する最大のメリットは、4Gbytes以上の物理メモリを、(特別な仕掛けなしに)利用できるという点にある。最近のコンピュータでは4Gbytes以上の最大物理メモリをサポートしているものが多く、最初から4Gbytesかそれ以上のメモリを搭載したシステムも販売されている。またシステムの寿命を考えると、将来、強化するためにメモリを(空きスロットいっぱいまで)増設することもあるだろう。

 だがシステムに4Gbytes以上の物理メモリを搭載しても、条件によってはそのすべてを利用できず、いくらか無駄になることがある。例えば8Gbytesのメモリを搭載しても、最大で4Gbytesしか利用できないといったことがある。利用できるメモリ・サイズが制限される要因にはいろいろなものがあるが、例えばOSの仕様上の制限、CPUの仕様上の制限、チップセットの仕様上の制限、システムの設計上の制限(メモリ・ソケット数など)がある。これらが組み合わさり、最も厳しい制限に合わせて利用可能な最大メモリ・サイズが決まる。以下、それらの制限についてみていこう。

■OSの仕様による制限

 Windows OSには、その目的や要求仕様などに合わせて、サポートできる最大メモリ・サイズが制限されている。32bit版のWindows OSの場合、クライアント向けは最大で4Gbytes、サーバ向けは4Gbytes(Standard Edition)から64Gbytes(Enterprise Edition)程度になっている。これに対して、最初から大容量のメモリをサポートすることを目的として開発されている64bit版Windows OSでは、8Gbytesとかそれ以上のメモリがサポートされている。

 OSがサポートしている最大物理メモリはWindows OSのバージョンやエディション、Service Packなどによっても異なるが、例えば次のようになっている。完全なリストについてはTIPS「Windows OSでサポートされている最大物理メモリ・サイズは?」を参照していただきたい。

Windows OS名とそのエディション 32bit版(x86) 64bit版(x64)
Windows XP
Windows XP Professional 4Gbytes
Windows XP Professional x64 Edition 128Gbytes
Windows Vista
Windows Vista Home Basic 4Gbytes 8Gbytes
Windows Vista Ultimate 4Gbytes 128Gbytes
Windows 7
Windows 7 Starter 2Gbytes
Windows 7 Home Premium 4Gbytes 16Gbytes
Windows 7 Professional 4Gbytes 192Gbytes
Windows 7 Ultimate 4Gbytes 192Gbytes
Windows Server 2003
Windows Server 2003 R2/SP1, Standard 4Gbytes 32Gbytes
Windows Server 2003 R2/SP1, Enterprise 64Gbytes 1Tbytes
Windows Server 2003 R2/SP1, Datacenter 128Gbytes 1Tbytes
Windows Server 2008
Windows Server 2008 Standard 4Gbytes 32Gbytes
Windows Server 2008 Enterprise 64Gbytes 2Tbytes
Windows Server 2008 Datacenter 64Gbytes 2Tbytes
Windows Server 2008 R2
Windows Server 2008 R2 Standard 32Gbytes
Windows Server 2008 R2 Enterprise 2Tbytes
Windows OSでサポートされている最大物理メモリ・サイズ(抜粋)
CPUアーキテクチャやWindows OSのエディション、Service Packレベルなどによって、利用可能な最大物理メモリ・サイズは異なっている。サポートするメモリ・サイズが増えると内部的な管理用領域なども多く必要になるため、全体的な性能なども考慮して最大サイズが決められている。ここではx86アーキテクチャ(32bit OS)とx64アーキテクチャ(64bit OS)における制限をまとめている。これ以外にもItaniumアーキテクチャ(IA-64)向けの64bit版Windows OSもあるが、ここでは取り上げない。サイズ欄が「―」となっているものは、該当するエディションの製品がないことを表す(Windows Server 2008 R2以降のサーバOSは64bit版のみの提供となる)。より完全な表についてはTIPS「Windows OSでサポートされている最大物理メモリ・サイズは?」を参照していただきたい。

 例えば32bit版のWindows Server 2003 R2/SP1, Enterprise Editionでは64Gbytesまでサポートされていることからも分かるように、32bit OSだからといって4Gbytesに制限されているわけではない。だがクライアント向けの32bit版Windows OSでは、過去との互換性やクライアント向けPCの仕様なども考慮したためか、このような仕様になっている。もともと4Gbytesまでしかサポートしていなかった古いドライバやアプリケーションなどを利用して、トラブルになることを避けるためであろう。

 結局、クライアント向けWindows OSで4Gbytes以上のメモリを利用したければ、64bit版を利用する必要がある。

■CPUの仕様による制限

 64bit版Windows OSを利用するためには、CPUが64bit命令セットをサポートしている必要があるが、64bit命令セットを備えるCPUがすべて4Gbytes以上のメモリをサポートしているわけではない。例えばIntel社のAtom 330というCPU(低消費電力のデュアル・コアx86アーキテクチャのCPU)では、最大でも4Gbytesの物理メモリしか利用できない(シングル・コアのAtom 230は8Gbytesまでサポート)。このようなCPUを使ったシステムでも64bit版Windows OSをインストールすることは可能だし、64bitアプリケーションを利用できるが、物理メモリは最大でも4Gbytesまでに制限される(後述する管理外メモリも利用できない)。

■ハードウェア/チップセットなどの仕様による制限

 CPUやOSが4Gbytes以上の物理メモリをサポートしていても、システム(チップセット)におけるメモリの割り当てメカニズムの都合などにより、32bit版Windows OSを利用する限り、4Gbytesのメモリをすべて利用することができない。システムにもよるが、実際には3〜3.5Gbytesが32bit版Windows OSで利用できる物理メモリの限界となっている。これはPCIデバイスなどのために、アドレス空間の一部が予約されているためである。図にすると、次のようになる。

4Gbytes以上のメモリを搭載した場合のメモリ・マップ
システムの物理的なメモリ・アドレス空間のマップ。CPUから見ると、メモリやデバイスはこのような物理アドレスで参照できる。システムにメモリを装着すると、まず4Gbytes以下の領域に割り当てられ、そこがいっぱいになると次に4Gbytes以上の領域に割り当てられる。デバイス領域に相当する部分のメモリがどうなるかはシステム次第である。システムによっては単に使えなくなるだけのものもあるし、上位メモリ領域に再マップ(リマップ)されて使えるようになるものもある。
(クライアント向けの)32bit版のWindow OSは、4Gbytes以下の物理メモリ・アドレス空間にしかアクセスできない。4Gbytesよりも上の部分は管理外メモリ領域となる。
64bit版のWindows OSはシステムのすべての物理メモリ・アドレス空間にアクセスできる。4Gbytes以上のアドレス空間にあるメモリ(リマップされたメモリを含む)を利用したい場合は、64bit版のOSを利用するとよい。

 一番左端にあるのが実際のシステムのメモリ・マップであり、CPUから見た物理アドレス空間を表している。アドレス空間がいくつかに分かれており、メモリ領域以外にも、DOS互換領域やデバイスなどに割り当てられている。最下位の1MbytesはDOS互換用の領域であり、常にこの位置に置かれている。

 アドレス=4Gbytesの直下にはPCIデバイスなどで利用するための領域が数百Mbytes予約されている。例えばシステムにグラフィックス・カードを装着すると、CPUからはこの領域を使ってカード上のグラフィックス・メモリへアクセスできる。このデバイス用領域は32bit版のOSやプログラムからでもアクセスできるように、必ずこの位置に確保されることになっているが、実際にどのアドレスから始まるのかはシステム依存である。3Gbytes〜3.5Gbytesのアドレス位置から始まっているシステムが多い。

 このような事情があるため、OSから利用可能なメモリのアドレス空間は、この領域を境にして、4Gbytes以下の領域と4Gbytes以上の領域の2つに分かれている。例えばシステムに8Gbytesのメモリを搭載すると、まず4Gbytes以下の領域にマップされ、残りのメモリは4Gbytes以上の領域にマップされる。

Linux上で見たメモリ・マップの例
PCの起動時にCPUはシステムに装着されているメモリやデバイスの情報を集め、このようなメモリ・マップ情報を作成する。「BIOS-e820」は、このメモリ・マップ情報を 取得するためのBIOS呼び出しの番号。メモリ・アドレスの範囲(アドレスは64bit幅表記)とその用途がリストになっている。「(usable)」となっているところがメモリ領域。この情報はLinuxなどでdmesgコマンドで確認できる。
 (1)最下位にある1Mbytesのメモリ領域。
 (2)先の図で「under 4Gbytes」となっているメモリ領域。32bitプログラムからアクセスできる。約3Gbytes。
 (3)予約領域中にある1Mbytesのメモリ領域。
 (4)先の図で「over 4Gbytes」となっている上位のメモリ領域。約9Gbytes。64bitアドレスを使わないとアクセスできない。
 (5)4Gbytesの境界。

 さてこのようなアドレス空間を持つシステムに対してWindows OSをインストールすると、どうなるであろうか。結果はWindows OSの種類によって異なるが、クライアント向けの32bit版Windows OSでは4Gbytes以下の領域にあるアドレスしかアクセスできない。デバイスに予約されている領域を除外すると、利用可能なメモリは4Gbytesよりも少なく、最大でも3〜3.5Gbytes程度に制限される*1

*1 管理外メモリを利用する

 4Gbytesよりも上位にあるメモリ領域は32bit版Windows OSではアクセスできないため、「(OSの)管理外メモリ」などと呼ばれている。これを使ってRAMディスクを作成するといった活用方法もあるが(次の記事参照)、システムが休止状態になっても、管理外メモリは内容が保存されないなどの問題があるので、その利用には注意が必要である。またRAMディスクとして利用できるだけであり、64bit版Windows OSの代わりになるようなものでもない。


 これに対して64bit版Windows OSを利用すれば、メモリ・マップの状態に関わらず、システムに搭載されたすべてのメモリを利用することができる。メモリ・マップ上ではメモリ領域が2つに分かれているが、CPUのページング機構を使ってメモリ配置を再構成するため、このような場合でも問題なくすべての実装メモリをOSから利用できる。

 つまり、システムに搭載された4Gbytes以上のメモリをすべてWindows OSで利用したければ、64bit版のWindows OSが必須ということである。

 また、メモリが4Gbytesしか搭載されていないシステムでもいくらかの管理外メモリが利用できることがあるが(デバイスがマップされた領域に重なっていた部分が管理外メモリとしてリマップされている。システムにもよるが、500Mbytes〜1Gbytes程度になる)、64bit版のWindows OSをインストールすれば、このような管理外メモリも通常のメモリと同様に扱うことができる。

 ただし先ほどのAtom 330のように、もともと4Gbytesの物理アドレス空間しか持たないCPUやシステムには管理外メモリは存在しないので、最大でも3〜3.5Gbytesまでのメモリしか扱えない。このような場合でも64bit版のWindows OSをインストールして利用してもよいが、32bit版よりも多くのメモリが使えるという恩恵は受けられないことになる。それ以外のメリットがあるなら、64bit版のWindows OSをインストールして利用してもよいだろう。例えばWindows Server 2008 R2(これは64bit版しかない)や、64bit版のアプリケーションの評価などが考えられる。もっとも、このような安価なCPUはIntel-VTやAMD-Vといった仮想化支援機能も持っていないものが多いので、Hyper-Vのような仮想環境を使ってのテストはできないと思われる。

■システムで認識されるメモリの例

 32bit版と64bit版のWindows OSでどのようにメモリが認識されるかを見ておこう。これは12Gbytesのメモリを搭載したシステムに、2種類のWindows OSをインストールした例である。32bit版のWindows OSでは最大でも4Gbytes(デバイスのための予約領域を除外すると、3Gbytes)しか利用できないのに対し、64bit版ではインストールされているメモリがすべて利用されている。

■32bit版Windows 7 Ultimateの例

■64bit版Windows 7 Ultimateの例

OSの違いによる利用可能メモリ・サイズの違い
これは12Gbytesのメモリを搭載したCore i7-930のシステムに、2種類のWindows OSをインストールした場合のシステムのプロパティ画面の例である。32bit版のWindows 7では最大でも3Gbytesしか利用できないのに対し(4Gbytesのアドレス空間のうち、1Gbytesはデバイスなどのために利用できなくなっている)、64bit版のWindows 7では12Gbytes全体を利用できる。
 (1)32bit版のWindows 7では、システムに搭載されている物理メモリのサイズ(12.0 GB)と、Windows OSが利用しているメモリのサイズ(3.00 GB)の両方が表示されている。以前のWindows Vistaなどではどちらか一方しか表示しなかったため、ユーザーが混乱していたための措置。
 (2)これは32bit版のWindows 7。
 (3)12Gbytesのメモリ全体が利用可能である。
 (4)これは64bit版のWindows 7。

 実際に利用可能なメモリ・サイズの詳細はタスク・マネージャでも確認できる。

■32bit版Windows 7 Ultimateの例

■64bit版Windows 7 Ultimateの例

OSの違いによる利用可能メモリ・サイズの違い
OSの違いによる利用可能メモリ・サイズの違いをタスク・マネージャで確認する。
 (1)32bit版のWindows OSが認識している物理メモリ・サイズ。
 (2)64bit版のWindows OSが認識している物理メモリ・サイズ。

Copyright© Digital Advantage Corp. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。