一般的に、「ハードウェア」にはその処理速度に差があります。速度の関係は、はざっくりとした感じで、CPU > 主記憶装置(メインメモリ)> 補助記憶装置(ハードディスクドライブやCD)となります。これでは、いくらCPUの処理速度があがっても記憶装置の速度(≒ 遅さ)がボトルネック(速度などの低下を招いている工程・箇所のこと)となりおもしろくありません。
そこで登場するのが「キャッシュメモリ」です。
「キャッシュメモリ」は、小容量であはあるが、高速なメモリです。以下が「主記憶装置」に保存されたデータの一部を「キャッシュメモリ」に保存して「CPU」と受け渡しする様子を示す概念図です。
ちなみに、現時点での各装置の速度の例をあげるとすれば、
CPU: 1ns(ナノ秒)
キャッシュメモリ:4ns
主記憶装置:80ns
程度になります。
以上で、「CPU」の処理速度に「記憶装置」がついていけるようになる訳ですが、「キャッシュメモリ」はその性能のため比較的高価です。ですので、先述したように主記憶装置に対して小さな容量のものが使われています。
という訳で、実際には「CPU」が欲しいデータが「キャッシュメモリ」内に保存されておらず、「主記憶装置」にそのデータを取りに行く必要があるケースがあり得ます。
以下の例で、系全体としての速度がどうなるのかを考えてみましょう。
先の例を用いて、「CPU」から「キャッシュメモリ」へは 4ns でアクセスできるとします。また、キャッシュメモリ内に目的とするデータが存在する確率(ヒット率)を50%とします。一方で「CPU」から「主記憶装置」へのアクセス速度は 80ns です。
さて、この系の処理速度はどうのように評価されるでしょうか?
答えは、ヒット率を「重み」として捉えて、
4ns x 0.5 + 80ns x (1 ー 0.5) = 42ns となります。
これは、「主記憶装置」のみの場合は 80ns x 1 となりますから、38ns 速くなっていると評価できますね。