PCやサーバには既に普及している64bitプロセッサ。その背景は? メリット/デメリットは? 互換性は? 急いで移行する必要があるの? Q&A形式で整理して解説する。
■記事内目次
一部の小型ノートPCを除き、現在販売されているほとんどのクライアントPC/サーバは64bitプロセッサを搭載している。しかしユーザーの多くは、これまでの32bitプロセッサとまったく同じ、32bit版のWindows XP/VistaやWindows Server 2003/2008を利用しており、64bitプロセッサを利用していることを意識していないのではないだろうか。これにはさまざまな理由があるが、1つは64bitプロセッサに対する理解があまり進んでいないからだろう。本稿では、主にコンピュータユーザーを対象に64bitプロセッサの基本をできるだけコンパクトにまとめる。
A: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年ほど前のメモリモジュール当たりの容量は512MBだったが、いまでは1GBが主流であり、さらに2GBのモジュールも十分に安価になってきた。チップ1個当たりのメモリ容量が増えれば、コンピュータに搭載可能な物理メモリ容量も増加する。例えば、2GBのメモリモジュールを2枚差せば、32bitプロセッサがアクセスできる最大の4GBのメモリをシステムに搭載できる(例外は後述するが、さらに物理的に大容量メモリを搭載可能になったとしても、32bitプロセッサでは4GBを超えるメモリへはアクセスできない)。
A:プロセッサがサポートするメモリ容量といった場合、物理アドレス空間と論理アドレス空間の2種類があり、時として混乱の元となっている*1。物理アドレス空間とは、物理的なメモリに付けられているアドレスを指す。例えばシステムに4GBのメモリを付けた場合、物理アドレス空間は0〜232となる。一方、論理アドレス空間とはプロセッサのマイクロアーキテクチャによって決まるアドレスで、プロセッサによってプログラムに割り当てられるメモリ空間のアドレスのことである。例えば32bitプロセッサなら0〜232、64bitプロセッサなら0〜264となる。一般に「論理アドレス空間 ≧ 物理アドレス空間」の関係にある。
*1 アドレス空間:
システムに接続されている物理的なメモリに付けられているアドレスのことを「物理アドレス空間」という。これはプロセッサから見た、実際のメモリのアドレスのことを指す。
これに対し、プロセス(ソフトウェアの実行単位)ごとに論理的に付けられているアドレスのことを「論理アドレス空間」という。これはアプリケーションから見た、論理的なメモリのアドレスのことを指す。仮想記憶システムの場合は特に「仮想アドレス空間」ともいう。
論理アドレス空間(ユーザーアドレス空間)はプロセスごとに独立しており、32bit版Windows OSでは最大2GB(/3Gオプションを使うと3GB)、64bit版Windows OSでは最大8TBである。アドレス空間としては広いが、実際に使っているのはワーキングセットの部分だけである(その部分にのみ、物理的なメモリがマッピングされている)。
プロセッサは、アプリケーションに割り当てたメモリ空間(論理アドレス空間)の一部だけに物理メモリ(物理アドレス空間)を割り当てて、物理メモリ容量を大幅に超える論理アドレス空間を作り出したり、複数の論理アドレス空間をアプリケーションに割り当てたりする。
64bitプロセッサは、理論的には264=16EB(エクサバイト)もの物理アドレス空間をサポート可能だ。しかし実際には、プロセッサのモデルにより、チップから出力されているアドレス信号線の数は異なっており、インテルのサーバ向けプロセッサであるIntel Xeon 5000番台では38bitで256GBまで、AMDのサーバ向けプロセッサであるAMD Opteronでは40bitで1TB(1024GB)までに制限されている。
論理アドレス空間 (64bitのロングモード時) |
物理アドレス空間 | |
---|---|---|
Quad-Core AMD Opteron | 48bit(256TB) | 48bit(256TB) |
AMD Opteron/Phrnom/Athlon | 48bit(256TB) | 40bit(1TB) |
Itanium | 64bit(16EB) | 50bit(1PB) |
Intel Xeon 7000番台 | 48bit(256TB) | 40bit(1TB) |
Intel Xeon 5000番台 | 48bit(256TB) | 38bit(256GB) |
Intel Core 2 Duo/Quad | 48bit(256TB) | 36bit(64GB) |
主なプロセッサがサポートする論理アドレス空間と物理アドレス空間サイズ 64bitプロセッサならば論理アドレス空間も物理アドレス空間も264になると思われそうだが、実際には、ハードウェアの複雑化などを避けるため、現実的な実装上の制限が設けられている。ただしこれらの制限は、将来のプロセッサではより緩和されることになるだろう。 |
さらにこれは、プロセッサがアクセス可能な最大サイズであり、システムに搭載される物理メモリ容量は、チップセットやマザーボード上のメモリソケット数などによっても制限される。システムの最大搭載メモリ容量は、多くの場合、サーバやクライアントPCのカタログのメモリの項目に記載されているので、それを確認するのが確実である。極端な話、ハードウェア的に4GBしか物理メモリを搭載できなければ、たとえ64bitプロセッサを搭載しても、32bitシステムと変わらない物理メモリしか利用できないわけだ。
その上、システムに搭載した4GBを超えた物理メモリを利用するには、OSの対応が必要になる。各OSがサポートする物理アドレス空間は、下表のようになっている。例えば、128GBを搭載したシステムでもWindows Vista Home Basic Editionを利用すると、32bit版では4GB、64bit版でも8GBを超えたメモリは利用できない。
OS | 32bit版 物理アドレス空間 | 64bit版 物理アドレス空間 |
---|---|---|
Windows XP Professional | 4GB | 128GB |
Windows Vista Home Basic | 4GB | 8GB |
Windows Vista Home Premium | 4GB | 16GB |
Windows Vista Business | 4GB | 128GB |
Windows Vista Enterprise | 4GB | 128GB |
Windows Vista Ultimate | 4GB | 128GB |
Windows Server 2003, Standard | 4GB | 32GB |
Windows Server 2003, Enterprise | 32GB | 1TB |
Windows Server 2003, Datacenter | 64GB | 1TB |
Windows Server 2008 Standard | 4GB | 32GB |
Windows Server 2008 Enterprise | 64GB | 2TB |
Windows Server 2008 Datacenter | 64GB | 2TB |
各Windows OSがサポートする物理アドレス空間サイズ |
Copyright© Digital Advantage Corp. All Rights Reserved.