Solaris 64 ビット 開発ガイド

4G バイト境界を超える

図 1–1 に、大容量の物理メモリーを持つコンピュータ上で実行されるアプリケーションの、典型的なパフォーマンスと問題サイズ (対象とする処理の大きさ) の関係を示します。非常に小さな問題サイズの場合には、プログラム全体がデータキャッシュ (D$) または外部キャッシュ (E$) 中に収まりますが、プログラムのデータ領域が大きくなってくると、32 ビットアプリケーションが利用できる 4G バイト仮想アドレス空間全体をプログラムが占有するようになります。

図 1–1 典型的なパフォーマンスと問題サイズ曲線

問題サイズの増加によるパフォーマンスの低下を示す折れ線グラフを表示しています。

32 ビット仮想アドレスの限界を超えても、アプリケーションはより大きな問題サイズを取り扱うことができます。一般的には 32 ビット仮想アドレスの限界を超えると、一次メモリーと二次メモリー (たとえばディスク) に、アプリケーションデータセットを分割します。ただし、ディスクドライブにデータを転送するのは、メモリーどうしの転送に比べて非常に長く時間がかかります。

今日では、多くのサーバーが 4 G バイト以上の物理メモリーを取り扱うことができます。高性能のデスクトップコンピュータも同様の傾向にあります。32 ビットプログラムは 1 度に 4 G バイト以上を直接アドレス指定することはできません。64 ビットアプリケーションでは、64 ビット仮想アドレス空間を使用して 18 エクサバイト (1 エクサバイトは約 10 の 18 乗バイト) まで直接アドレス指定することができます。こうして、サイズが大きな問題を一次メモリー内で直接取り扱うことができます。アプリケーションがマルチスレッド化されていてスケーラブルな場合は、プロセッサを追加してアプリケーションのスピードをさらに上げることができます。そのようなアプリケーションのパフォーマンスは、コンピュータ上の物理メモリーの量によってのみ制限されます。

以下のように、広範囲の種類のアプリケーションにとって、大きな問題を物理メモリー内で直接取り扱うことができるというのは、64 ビットマシンの主要な性能上の特長です。