キャッシュメモリとは
キャッシュメモリとは、CPU(中央処理装置)と主記憶装置(メインメモリ)の間に配置される、小容量ながらも非常に高速なメモリのことです。CPUの処理速度は極めて速いのに対し、メインメモリの読み書き速度はCPUと比べると遅ため、CPUがメインメモリからデータを読み込むのを待つ「待ち時間」が発生してしまいます。この速度の格差を埋めるために、CPUが頻繁に利用するデータや命令を一時的にキャッシュメモリにコピーしておきます。CPUが次に必要なデータをキャッシュメモリから見つけられれば、メインメモリにアクセスするよりもはるかに高速に処理を進めることができます。
具体例
勉強机で作業している場面に例えると、メインメモリは「本棚」で、キャッシュメモリは「手の届く机の上の引き出し」です。必要な本(データ)をいちいち本棚(メインメモリ)まで取りに行くのは大変ですが、よく使う参考書をあらかじめ机の引き出し(キャッシュメモリ)に入れておけば、必要なときにすぐに取り出して読むことができます。コンピュータ内部でのデータの流れは以下のようになります。
[ CPU ] <--- 高速アクセス ---> [ キャッシュメモリ ]
|
+-------- 遅いアクセス -------> [ 主記憶装置 (メインメモリ) ]
もう少し詳しく
キャッシュメモリは、CPUと主記憶装置の間に存在する圧倒的な「速度の壁」を緩和するためのバッファ(緩衝材)として機能します。近年、CPUの処理速度は飛躍的に向上していますが、主記憶装置であるDRAMのアクセス速度の向上はそれに追いついていません。このままでは、CPUがいくら計算を速く行えても、メモリからのデータ到着を待つ間アイドル状態(無駄な空き時間)になってしまいます。これを防ぐために、SRAMという極めて高速に動作する半導体を材料にして作られたキャッシュメモリが活躍します。
キャッシュメモリが有効に機能する背景には、プログラムの実行における「局所性の原理(Principle of Locality)」という経験則があります。局所性の原理には大きく二つの側面があります。
- 時間的局所性:一度アクセスされたデータや命令は、近い将来に再びアクセスされる可能性が非常に高いという性質です。例えば、プログラムのループ処理(繰り返し処理)などがこれに該当します。
- 空間的局所性:あるデータにアクセスがあった場合、そのデータに隣接する前後のアドレスにあるデータも、近い将来にアクセスされる可能性が高いという性質です。例えば、配列データに順番にアクセスする処理などがこれに該当します。
キャッシュメモリのコントローラは、この局所性の原理を利用して、CPUが要求したデータだけでなく、その周辺のデータもひとまとめにしてブロック単位で主記憶装置からキャッシュメモリにコピーしておきます。これにより、CPUが次にデータを要求した際に、それがすでにキャッシュメモリ上に存在している確率(ヒット率)を飛躍的に高めることができるのです。
現代のコンピュータでは、キャッシュメモリは複数の階層に分かれて実装されているのが一般的です。CPUのコア内部に直接組み込まれた最も高速な「L1(レベル1)キャッシュ」、その外側にある少し大容量の「L2キャッシュ」、さらに複数のCPUコアで共有される「L3キャッシュ」といった具合です。CPUはまずL1キャッシュを検索し、見つからなければL2、L3、そして最終的に主記憶装置へとアクセスしに行きます。
試験でのポイント
情報処理技術者試験において、キャッシュメモリは頻出の最重要キーワードの一つです。最もよく問われるのは「キャッシュメモリの目的」です。「CPUと主記憶装置との間のアクセス速度の差(ギャップ)を埋め、処理効率を向上させる」という役割を正しく選べるようにしておきましょう。補助記憶装置(HDDなど)との速度差を埋めるディスクキャッシュと混同させようとする問題もあるため、配置場所が「CPUと主記憶装置の間」であることを強く意識してください。
また、計算問題として「実効アクセス時間(平均アクセス時間)」を求める問題が定番です。キャッシュメモリに必要なデータが存在する確率を「ヒット率」、存在しない確率(1 - ヒット率)を「ミス率」として計算します。
実効アクセス時間 = (キャッシュメモリのアクセス時間 × ヒット率) + (主記憶のアクセス時間 × ミス率)
という計算式を用いて、システム全体の平均的な速度を求める計算問題は、必ず解けるように練習しておく必要があります。
使用されているメモリの種類についても問われます。「主記憶装置にはDRAMが、キャッシュメモリにはSRAMが用いられる」という組み合わせも、非常によく出題されるポイントです。
関連する用語
キャッシュメモリの仕組みを理解する上で、キャッシュにデータが存在する確率を示すヒット率や、キャッシュメモリの物理的な素材として使われるSRAM、そしてCPUと速度差のある主記憶装置(メインメモリ)といった用語が密接に関連しています。