キャッシュメモリで思い出したけど、コンピュータサイエンスを学んで疑問に思ったのが、メモリ階層はなぜ必要なのかということ。CPUキャッシュ、メインメモリ、SSD、HDDのように色々なメモリがあってシステムが複雑になってしまっている。速度とコストが絶対にトレードオフになる物理法則もなさそうなのに、どうして大きくて速いメモリを作ることができないのか?
実際、速度とコストは必ずしもトレードオフではなく、遅くて高いメモリもある。歴史的にはフェライトコアを使ったコアメモリが主記憶だった時代もあるし、もっと昔には水銀遅延管や、ブラウン管を使ったメモリもあった。速度を横軸、コストを縦軸に、いろんなメモリのテクノロジをプロットしてみると、下のようなグラフになるはずだ。
ここでテクノロジNに着目してみる。この技術は製品化されることはない。なぜならテクノロジEのほうが速度とコストの両面で優れているから、Nを作るならEを作ったほうがいいからだ。図で言うと、その点の右上に別の点があるテクノロジは製品化する意味がないということになる。
このような製品化する意味がある点だけを繋いだ線を「パレートフロンティア」という。パレートフロンティア上にあるテクノロジだけがマーケットに出てくることになる。
例えばコアメモリは、かつてはフロンティア上にあったけど、DRAMの実用化によってフロンティア上ではなくなり、実用製品としては消滅してしまった。
仮にもしぶっちぎりでよいテクノロジが存在すれば(グラフ上の他のすべての点より右上にあるような)、そのメモリだけからなる単純なシステムを作ることができる。しかしそういうメモリは少なくとも今は発明されていないので、フロンティア上には複数の点がある。それに、もしそういうメモリが発明されたとしても、その後にそれを速度か価格のどちらの面で上回るものが発明されれば、またフロンティア上には複数の点がある状態に戻る。
このようにフロンティア上には1つではなく複数のテクノロジがありがちであり、それを複数使ったシステムを作るとメモリ階層ができてしまうというわけであった。
460