このページの本文へ

前へ 1 2 3 4 次へ

基礎から覚える 最新OSのアーキテクチャー 第6回

メモリー不足を根本的に解決する64bit OSの仕組み

2011年10月20日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

メモリー問題の解決は64bit Windowsで

 結局メモリー不足の最終的な解決は、64bit版Windowsで実現された。64bit Windowsでは、論理的なアドレス空間は4GBどころか、64bitつまり16EB(エクサバイト、約1600万TB)まで広がった。しかし、実際にはそこまでのメモリーは使用せず、仮想アドレスは256TB(48bit)まで、物理アドレス空間は48~52bit程度になっている。

 というのも、64bitを完全に操作できるようにするには、ハードウェアが複雑になってしまうためだ。メモリーデバイスの進化を考えると、今すぐに16EBもの物理メモリーを実装すること自体が困難だし、OSもアプリケーションもそこまで巨大な仮想メモリー空間を必要としていない。

 ハードウェア側からの事情で言えば、物理アドレスと仮想アドレスともに64bitをフルに使おうとすると、そのための回路が大きくなってしまう。仮想記憶では変換テーブルをCPU内にキャッシュしたり、メモリー上のテーブルの位置を示す必要があることから、アドレスのビット数が32から64へと2倍になると、数倍以上に必要なトランジスターが増えてしまう。回路によってはビット数の2乗でトランジスターが増える部分もあり、大きな面積を占めることになる。そういうわけで、64bit Windowsのメモリー空間は形式上64bitだが、仮想・物理アドレスともに、64bitよりも小さい値が使われている。

 ソフトウェア側から見ても、64bitアドレスを記憶するにはアドレスひとつに8byteが必要なので、大量のアドレスをOSが扱うと、それだけでカーネル用のメモリーが大量に必要になってしまう。ところが、扱うアドレスが実際には1TBまでならば、5byteしか使わない。カーネル側は性能向上のため、プログラムの一部が仮想記憶でスワップされないようにするため、アドレス格納のデータが増えることは、アプリケーション側に割り当てられる物理メモリーが減ってしまうことにもなる。

 現状では64bit Windowsといえども、完全に64bitアドレスを扱うわけではない。将来の利用に問題がない範囲で、一部を省略することで負担を軽くしているのである。

 物理メモリーが増えることは、アプリケーションにとって直接のメリットになるが、それ以外にも64bit版のメリットはある。ひとつは、メモリーマップドI/O領域による影響がなくなるため、アプリケーションに割り当てることができるメモリー空間を大きくできる点だ。特に64bit環境で32bitアプリケーションを動かしたときの影響は大きい、4GBのメモリー空間をそのままアプリケーションに割り当てることができるので、プログラムが同じままでも、作業領域として使えるメモリーが格段に増えることになるわけだ。

 おそらくWindowsは当面の間、「システムは64bit、アプリケーションは32bit」という環境が続くと思われる。64bit Windowsで32bit版のアプリケーションを動作させると、メモリーに余裕ができるだけでなく、64bit Windows自体がより多くのメモリーを管理できるため、システム全体として動作効率が高まり、結果的にアプリケーション自体の実行効率も高くなりやすいからだ。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン