Windows Q&A
〜Windows管理者の気になる疑問に答える〜
64bitプロセッサ(1)
デジタルアドバンテージ 小林 章彦
2008/07/17
このWindows Q&Aは、Windows管理者の気になる疑問点にコンパクトに答えます。
一部の小型ノートPCを除き、現在販売されているほとんどのクライアントPC/サーバは64bitプロセッサを搭載している。しかしユーザーの多くは、これまでの32bitプロセッサとまったく同じ、32bit版のWindows XP/VistaやWindows Server 2003/2008を利用しており、64bitプロセッサを利用していることを意識していないのではないだろうか。これにはさまざまな理由があるが、1つは64bitプロセッサに対する理解があまり進んでいないからだろう。本稿では、主にコンピュータ・ユーザーを対象に64bitプロセッサの基本をできるだけコンパクトにまとめる。
64bitプロセッサが登場した背景には何があるのか?
1971年に世界初のマイクロプロセッサである4004が登場してから、すでに37年がたった。その間、マイクロプロセッサの命令セット・アーキテクチャは、4bitから8bit→16bit→32bit→64bitへと大きく進化を遂げている。このbit数はマイクロプロセッサの基本的な命令セット・アーキテクチャの特徴を表しており、一般的には1回の処理で扱えるデータの大きさに基づいている。
命令セット・アーキテクチャに進化が求められる背景には、OSやアプリケーションの高機能化に伴い、OSやアプリケーション自体のサイズや、その上で扱われるデータ・セットが巨大化し、その実行に多くのメモリが要求されるようになってきたことがある。例えば16bitから32bitへの移行においては(DOSからWindows 95への移行期)、グラフィカル・ユーザー・インターフェイス(GUI)やマルチウィンドウ、マルチタスクをサポートするWindows OSが急速に広まり、非常に多くのメモリが要求されるようになった。サポート可能なメモリ・サイズの制限で、それまで主流だった16bitプロセッサでは十分な機能が提供できなくなり、必然的により多くのメモリがサポート可能な32bitプロセッサへの移行が進んだ。これと同様に、取り扱うデータ容量が急速に拡大し、32bitプロセッサがサポートするメモリ容量では不足が生じているため、特にサーバ用途で64bitプロセッサへの移行が始まっている。
拡大し続けるソフトウェアのメモリ要求が、命令セット・アーキテクチャ進化の根源的な要因ではあるが、これに対応できた背景には、メモリの大容量化が足並みをそろえたこともある。DRAMのチップ当たりのメモリ容量は、約2年で2倍と、大容量化が順調に進んでいる。ムーアの法則によれば、半導体チップに搭載されるトランジスタ数は、1年半から2年で2倍のペースで増え続けるという。実際、2年ほど前のメモリ・モジュール当たりの容量は512Mbytesだったが、いまでは1Gbytesが主流であり、さらに2Gbytesのモジュールも十分に安価になってきた。チップ1個当たりのメモリ容量が増えれば、コンピュータに搭載可能な物理メモリ容量も増加する。例えば、2Gbytesのメモリ・モジュールを2枚差せば、32bitプロセッサがアクセスできる最大の4Gbytesのメモリをシステムに搭載できる(例外は後述するが、さらに物理的に大容量メモリを搭載可能になったとしても、32bitプロセッサでは4Gbytesを超えるメモリへはアクセスできない)。
容量2Gbytesのメモリ・モジュール
バッファローの容量2GbytesのPC2-4200メモリ・モジュール(DIMM)。クライアントPC向けのDIMMの大容量化は順調に進んでおり、容量2GbytesのDIMMでも5000円を切る価格になってきている。
64bitプロセッサでアクセス可能な物理メモリ容量は?
プロセッサがサポートするメモリ容量といった場合、物理アドレス空間と論理アドレス空間の2種類があり、時として混乱の元となっている(*1 )。物理アドレス空間とは、物理的なメモリに付けられているアドレスを指す。例えばシステムに4Gbytesのメモリを付けた場合、物理アドレス空間は0〜232 となる。一方、論理アドレス空間とはプロセッサのマイクロアーキテクチャによって決まるアドレスで、プロセッサによってプログラムに割り当てられるメモリ空間のアドレスのことである。例えば32bitプロセッサなら0〜232 、64bitプロセッサなら0〜264 となる。一般に「論理アドレス空間 ≧ 物理アドレス空間」の関係にある。
プロセッサは、アプリケーションに割り当てたメモリ空間(論理アドレス空間)の一部だけに物理メモリ(物理アドレス空間)を割り当てて、物理メモリ容量を大幅に超える論理アドレス空間を作り出したり、複数の論理アドレス空間をアプリケーションに割り当てたりする。
64bitプロセッサは、理論的には264 =16Ebytes(エクサ・バイト)もの物理アドレス空間をサポート可能だ。しかし実際には、プロセッサのモデルにより、チップから出力されているアドレス信号線の数は異なっており、インテルのサーバ向けプロセッサであるIntel Xeon 5000番台では38bitで256Gbytesまで、AMDのサーバ向けプロセッサであるAMD Opteronでは40bitで1Tbytes(1024Gbytes)までに制限されている。
論理アドレス空間 (64bitのロング・モード時)
物理アドレス空間
Quad-Core AMD Opteron
48bit(256Tbytes)
48bit(256Tbytes)
AMD Opteron/Phrnom/Athlon
48bit(256Tbytes)
40bit(1Tbytes)
Itanium
64bit(16Ebytes)
50bit(1Pbytes)
Intel Xeon 7000番台
48bit(256Tbytes)
40bit(1Tbytes)
Intel Xeon 5000番台
48bit(256Tbytes)
38bit(256Gbytes)
Intel Core 2 Duo/Quad
48bit(256Tbytes)
36bit(64Gbytes)
主なプロセッサがサポートする論理アドレス空間と物理アドレス空間サイズ
64bitプロセッサならば論理アドレス空間も物理アドレス空間も264 になると思われそうだが、実際には、ハードウェアの複雑化などを避けるため、現実的な実装上の制限が設けられている。ただしこれらの制限は、将来のプロセッサではより緩和されることになるだろう。
さらにこれは、プロセッサがアクセス可能な最大サイズであり、システムに搭載される物理メモリ容量は、チップセットやマザーボード上のメモリ・ソケット数などによっても制限される。システムの最大搭載メモリ容量は、多くの場合、サーバやクライアントPCのカタログのメモリの項目に記載されているので、それを確認するのが確実である。極端な話、ハードウェア的に4Gbytesしか物理メモリを搭載できなければ、たとえ64bitプロセッサを搭載しても、32bitシステムと変わらない物理メモリしか利用できないわけだ。
Intelのサーバ向け64bitプロセッサ「Intel Xeon」
AMDのサーバ向け64bitプロセッサ「AMD Opteron」
その上、システムに搭載した4Gbytesを超えた物理メモリを利用するには、OSの対応が必要になる。各OSがサポートする物理アドレス空間は、下表のようになっている。例えば、128Gbytesを搭載したシステムでもWindows Vista Home Basic Editionを利用すると、32bit版では4Gbytes、64bit版でも8Gbytesを超えたメモリは利用できない。
OS
32bit版 物理アドレス空間
64bit版 物理アドレス空間
Windows XP Professional
4Gbytes
128Gbytes
Windows Vista Home Basic
4Gbytes
8Gbytes
Windows Vista Home Premium
4Gbytes
16Gbytes
Windows Vista Business
4Gbytes
128Gbytes
Windows Vista Enterprise
4Gbytes
128Gbytes
Windows Vista Ultimate
4Gbytes
128Gbytes
Windows Server 2003, Standard
4Gbytes
32Gbytes
Windows Server 2003, Enterprise
32Gbytes
1Tbytes
Windows Server 2003, Datacenter
64Gbytes
1Tbytes
Windows Server 2008 Standard
4Gbytes
32Gbytes
Windows Server 2008 Enterprise
64Gbytes
2Tbytes
Windows Server 2008 Datacenter
64Gbytes
2Tbytes
各Windows OSがサポートする物理アドレス空間サイズ
*1 アドレス空間:
システムに接続されている物理的なメモリに付けられているアドレスのことを「物理アドレス空間」という。これはプロセッサから見た、実際のメモリのアドレスのことを指す。
これに対し、プロセス(ソフトウェアの実行単位)ごとに論理的に付けられているアドレスのことを「論理アドレス空間」という。これはアプリケーションから見た、論理的なメモリのアドレスのことを指す。仮想記憶システムの場合は特に「仮想アドレス空間」ともいう。
論理アドレス空間(ユーザー・アドレス空間)はプロセスごとに独立しており、32bit版Windows OSでは最大2Gbytes(/3Gオプションを使うと3Gbytes)、64bit版Windows OSでは最大8Tbytesである。アドレス空間としては広いが、実際に使っているのはワーキングセットの部分だけである(その部分にのみ、物理的なメモリがマッピングされている)。
更新履歴
【2008/07/18】 表「主なプロセッサがサポートする論理アドレス空間と物理アドレス空間サイズ」 において、Quad-Core
AMD Opteronの記述などを追加しました。Quad-Core
AMD Opteronでは、物理アドレス空間が48bitに拡張されていたためです。
TechTargetジャパン
Windows Server Insider フォーラム 新着記事
キャリアアップ
**先週の人気講座ランキング**
〜 Android編 〜