コンピューターの記憶装置は階層化されている。
なんでそんな面倒なことになっているのか? 万能の記憶装置がないからだ。高速な読み書きと、大量の記憶、調達の安価さ、この三つのお題目を全部満足させる製品がない。
最も重要な記憶装置は主記憶装置(メインメモリー)だ。コンピューターの中枢であるCPU(中央演算装置)の速度についていけなければ、せっかくの高速演算も大量計算もその良さを引き出せなくなる。そこでメインメモリーは容量や価格を犠牲にして、高速性にこだわって作られる。
その周辺を固めるのが補助記憶装置だ。これはメインメモリーが切り捨てた大容量を補完するために使われる。でかいデータをメインメモリーだけに保存することはできないので、補助記憶装置に移すのだ。これはお金に糸目をつけずにメインメモリーを購入する帝国プレイが可能な富裕層であっても、必ず使うことになる。メインメモリーは電源供給を絶つと記憶した情報が消えてしまうので、補助記憶装置が使えなければ電源も落とせないことになる。
補助記憶装置は用途に応じて百花繚乱だ。
なるべくメインメモリーの速度に追従して、例えばアプリケーションの運用や、動画の記録・再生をサクサクと行いたい用途にはハードディスクやSSDが使われる。
情報を持ち運んだり、コンピューターと切り離した環境で安定して長期保存したいんだという向きには、CDやDVD、ブルーレイディスク、USBメモリー、SDカードなどがある。読み込み、書き込みに時間がかかるがコスパを考えれば磁気テープもまだ現役だ。
このように適材適所が試みられているのだが、CPUとメインメモリー、メインメモリーと補助記憶装置の間の速度差は依然として大きい。CPUは記憶すべき情報をメインメモリーに保存する間、待たされるし、メインメモリーと補助記憶装置の関係もそうだ。
メインメモリーが情報を記憶し終わるまでただCPUを遊ばせておくのはもったいない。そこで、メインメモリーより更にちょっとしか記憶できないが、メインメモリーより高速に読み書きできる記憶装置を用意する。これをキャッシュメモリー(適用される場所によって、呼び方はさまざま)と呼ぶ。たとえばCPUが情報を保存したいとき、キャッシュメモリーに対して行う。キャッシュメモリーは速く応答してくれるので記憶が終わるとCPUはすぐに次の仕事にとりかかる。
もちろん、キャッシュメモリーの容量は小さくすぐにあふれてしまうので、CPUが別の仕事をしている間に覚えた情報をメインメモリーに転送する。こうすると、CPUの速度やメインメモリーの速度が変わらなくても、間にたってくれるキャッシュメモリーがあることで全体としての仕事量を増やすことができる。遊び時間が少なくなり、効率的に動けるのだ。
そんなに小っちゃいメモリーなのに、満足な仲立ちができるのか? できるのである。情報の読み書きには参照の局所性(いま使った情報はまたすぐ使う、いま使った情報の近くの情報を次に使うといった特性)があるので、例えばあらかじめ「次に使いそうな情報」をメインメモリーからキャッシュメモリーに読み出しておくことなどができる。
この仕掛けはCPUとメインメモリーの間だけでなく、メインメモリーと補助記憶装置の間、パソコンとプリンターの間など、速度差のある箇所で大量に使われている。速い方の機械は、キャッシュメモリーに情報を送ることで、遅い機械の応答を待つことなく、次の仕事に取りかかれるのだ。
【著者略歴】
岡嶋 裕史(おかじま ゆうし) 中央大学国際情報学部教授/政策文化総合研究所所長。富士総合研究所、関東学院大学情報科学センター所長を経て現職。著書多数。近著に「思考からの逃走」「プログラミング/システム」(日本経済新聞出版)、「インターネットというリアル」(ミネルヴァ書房)、「メタバースとは何か」「Web3とは何か」(光文社新書)など。