データキャッシュ【data cache】
概要

CPUは演算のたびに必要なデータをメインメモリ(主記憶装置/RAM)から読み出すが、メインメモリのアクセス速度はCPUの演算速度に比べて低い。そのため、必要なデータをその都度メインメモリから取得していると、読み出しを待つ時間が積み重なり、CPU本来の処理能力を発揮できなくなる。
そこでCPUは、近い将来に再び使用すると見込まれるデータをチップ内または近傍に設けられたデータキャッシュに保持しておき、次回のアクセスでは高速なキャッシュから読み出す方式を採る。目的のデータがキャッシュ内に存在する状態を「キャッシュヒット」、存在せずメインメモリへ取得しに行く状態を「キャッシュミス」と呼び、ヒットする割合が高いほどCPU全体の処理効率は高まる。
CPU内部のキャッシュメモリは、プログラムの命令そのものを保持する「命令キャッシュ」(instruction cache)と、命令の処理対象となるデータを保持するデータキャッシュに分かれて配置されることが多い。両者を分離することで、命令の読み込みとデータの読み書きが互いに干渉せず並行して進められるため、処理の流れが滞りにくくなる。
近年のCPUでは、コアに近い順にL1、L2、L3といった複数の階層に分けてキャッシュメモリが配置されている。CPUに最も近いL1キャッシュは容量が小さい分アクセス速度が最も高く、その中にデータキャッシュと命令キャッシュが別々に設けられる構成が一般的である。L2やL3になるにつれて容量は大きくなる一方、アクセス速度はメインメモリに近づいていく(遅くなる)。
CPUがキャッシュ上のデータを書き換えた場合、その内容をメインメモリへどう反映するかについても複数の方式がある。書き込みと同時にメインメモリも更新するライトスルー方式や、変更内容を一旦キャッシュにのみ反映し、後からまとめてメインメモリへ書き戻すライトバック方式などがあり、データの整合性を保ちながら限られたキャッシュ容量を効率よく利用できるよう制御されている。