128ビットCPUが登場するのはいつ頃になるでしょうか?
まず、128ビットCPUの定義をはっきりさせます。128ビットCPUとは、以下の2条件を満たすCPUです。
- 汎用レジスタのサイズが128ビットであること。
- アドレス空間のサイズ(ポインタ長)が128ビットであること。
ネット上に「Play Station2用のEmotion Engineは128ビットCPU」という記述が散見されますが、これは完全に大嘘・誤りです。Emotion EngineはMIPS IIIベースであり、アドレス空間は32ビットのままだからです。たしかに汎用レジスタやベクトル演算用レジスタでは128ビット長のデータを直接扱えるようになっていますが、これだけでは128ビットCPUの条件を満たしません。
1.の条件を満たすCPUであれば、Emotion Engine以外にも既に多数存在します。例えばx64系CPU(IntelのCoreシリーズ、Xeonシリーズなど)でも汎用レジスタではないもの、SIMD命令用のレジスタは128ビット化されていますし、クアルコムのSoCであるSnapdragonシリーズのCPUコアで使われているARM v8-Aアーキテクチャでは、128ビット長のレジスタが使えるようになっています。ちなみに、現行のx64系CPUであれば、AVX命令用のレジスタでは256ビット長もしくはAVX-512なら512ビット長のデータも扱えるようになっています。
ですので、128bit CPUがいつ登場するのかを考えるには、2.の128bitのアドレス空間を持つCPUが登場する時期を考えればよいことになります。すなわち、現在主流となっている64bit CPUのアドレス空間の上限に到達してしまって、必然的に128bitのアドレス空間が求められるようになる時期がいつ頃になるのかを考えればよいわけです。
CPUのアドレス空間のサイズについて、x86系/x64系CPUと論理アドレスのサイズ(ソフトウェアから見えるアドレス空間のサイズ)の変遷を見てみます。
CPU | Release年 | CPUのbit数(=汎用レジスタのサイズ) | 論理アドレスのサイズ |
---|---|---|---|
4004 | 1971 | 4bit CPU | 5KB(Program 1KB+Data 4KB) |
8080 | 1974 | 8bit CPU | 64KB(16bit長) |
8086 | 1978 | 16bit CPU | 1MB(20bit長, セグメントレジスタ16bit+データセグメント16bitから20bit長のアドレスを生成) |
286 | 1982 | 16bit CPU | 16MB(24bit長, 16bitプロテクトモードのみ) |
386 | 1985 | 32bit CPU | 4GB(32bit長) |
Opteron 240 | 2003 | 64bit CPU 初めてのAMD64アーキテクチャのCPU | 16EB(Exabyte,64bit長) |
Xeon 3.60GHz | 2004 | 64bit CPU 初めてのEM64T(現行名称 Intel 64/IA-32e)アーキテクチャのCPU | 16EB(Exabyte,64bit長) |
なお、現行のx64(AMD64/EM64T)系CPUでは、論理アドレス空間は64bitであるものの、物理アドレス空間は、AMD64では52bit(4PB(Petabyte))、Intel 64では48bit(256TB(Terabyte))もしくは57bit(128PB, 5Level EPTを有効化している場合のみ)に制限されています。これは、64bitの物理アドレス空間をサポートしても使われることがない(使い切れない)からと考えられます。
次に、論理アドレス空間のサイズを比較します。
CPUのbit数 | 論理アドレス空間のサイズ |
---|---|
8/16bit CPU | 64KB |
32bit CPU | 4GB (64KBの約6.5万倍) |
64bit CPU | 16EB (Exabyte, 約172億GB, 4GBの約43億倍) |
128bit CPU | 約280兆YB (Yottabyte, 16EBの約1800京倍) |
64bit CPUの論理アドレス空間の上限である16EBはGB(Gigabyte)に換算すると、約172億GBとなります。2017年現在、パソコンやスマホなどに搭載されているメインメモリの容量が4GB程度ですから、その43億倍となります。
メインメモリが現在の43億倍に増えることなど想像できないし、起こりえないように思われます。でも今でこそ4GBのメインメモリなど珍しくないものの、1981年発売のNEC PC-8801ではメインメモリがたったの64KBしかありませんでした。64KBと4GBとを比較すると、4GB÷64KB≒約6.5万倍となります。もしも過去36年間のこの増加スピードを維持したままで、今後もメインメモリが増えつづけると仮定すれば、72年程度で64bit CPUのアドレス空間の上限である16EBに到達することになります。128bit CPUのアドレス空間の上限である約280兆YBに到達するのは、そこからさらに145年程度という計算になります。どちらも、遠い遠い将来ですね。
本当に今後もメインメモリのアドレス空間が43億倍もしくはそれ以上に増えることがあるのでしょうか? おおいにあり得ると考えています。ハードウェア(特に半導体)およびソフトウェア技術は、今後も進化するはずだからです。
まず、現在のコンピューターはメインフレームにしても、サーバー、パソコンにしても、フォンノイマン型コンピューターです。フォンノイマン型コンピューターとは、プログラム(コード)とデータをメインメモリ上に置いてプログラムを実行していくタイプのコンピューターのことですが、技術革新で非ノイマン型コンピュータが主流になり、現在では想像できないほどに大容量のメインメモリを必要とするようになるかもしれません。
また現在のコンピューターでは、メインメモリ(1次記憶,CPUから直接アドレスしてアクセスできる空間)と外部メモリ(2次記憶)とを分けて考えていますが、かつてのように1次記憶(半導体メモリ)と2次記憶(ハードディスクなどの磁気ディスク)が物理的に異なる装置であった時とは異なり、現在では、1次記憶も2次記憶も半導体メモリを使うのが主流になりつつあります。
もちろん半導体メモリといっても、1次記憶に使われる半導体メモリはRAM、2次記憶に使われる半導体メモリはフラッシュメモリ、という違いはありますが、今後の技術革新で、RAMとフラッシュメモリの両方の特徴を兼ね備える半導体メモリが登場するかもしれません。実際に登場した場合、わざわざ1次記憶と2次記憶とを分けて考える必要がなくなりますので、メインメモリ(1次記憶)上にプログラム(コード)とデータをすべて保存したままで、さらにプログラムを実行する、といったことが可能になるかもしれません。
そうしたコンピューターが主流になって、さらにメインメモリの大容量化が進み、ついには64bit CPUのアドレス空間の上限である16EBに到達してしまってアドレス空間が不足する、といったシナリオを予測しています。このように2次記憶に相当するものを1次記憶に取り込んだ場合、過去の実績を見ても2次記憶の増加スピードは1次記憶の増加スピードを超えていますので、結果としてメインメモリ(1次記憶)の増加スピードが過去36年間の増加スピードを超えることも期待できます。
現にビッグデータ等大容量データをコンピューターで分析・活用することが行われていますので、1次記憶と2次記憶を一体化できれば、ソフトウェア開発も楽になり、プログラムの実行速度の面でも有利になるはずです。
過去36年間の増加スピードでメインメモリが増加を続けるなら約72年程度、ハードウェア・ソフトウェア両方の技術革新に伴いメインメモリの増加スピードが加速することを期待して50年程度で64bit CPUのアドレス空間の上限に到達し、ついに128bitの論理アドレス空間をサポートする128bit CPUが登場するのではと予測しますが、さてどうなるでしょうか?