キャッシュメモリ
キャッシュメモリは、CPUと主記憶(メインメモリ)の間に位置し、処理速度を最大限に引き出すための高速・小容量な記憶領域である。コンピュータの処理速度はCPU内部での計算速度に依存するが、メインメモリからデータを取得する際に生じるアクセス遅延がボトルネックとなり、システム全体の性能向上を妨げる。この課題を解決するために、キャッシュメモリはCPUに近接し、高速アクセスが可能な半導体メモリ技術を用いて実装される。キャッシュを有効活用することで、頻繁に用いられるデータや命令を素早く取り出し、CPU稼働効率を飛躍的に高めることができる。
キャッシュメモリの役割
キャッシュメモリは、CPUが繰り返しアクセスするデータや命令を一時的に蓄え、メインメモリに頻繁にアクセスする必要を減らす働きを担う。これにより、CPUは高価な待機時間を短縮でき、実行速度が向上する。プログラム実行時には、局所性の原理(空間的局所性と時間的局所性)により、特定のメモリアドレス周辺が短時間に集中的に利用されやすい。キャッシュメモリは、この性質を利用してよく参照されるデータを優先的に保持することで、メインメモリアクセス待ちを最小化する。
L1キャッシュ
L1キャッシュ(レベル1キャッシュ)は、プロセッサコア内に配置される最も高速で小容量のキャッシュメモリである。データキャッシュ(L1D)と命令キャッシュ(L1I)に分けられることが多い。プロセッサが頻繁にアクセスするデータや命令を格納するため、処理速度の向上に大きく寄与する。
L2キャッシュ
L2キャッシュ(レベル2キャッシュ)は、L1キャッシュよりも容量が大きく、プロセッサコアに直接接続される。アクセス速度はL1キャッシュより遅いが、L1キャッシュを補完する役割を果たし、プロセッサの処理効率を向上させる。
L3キャッシュ
L3キャッシュ(レベル3キャッシュ)は、プロセッサ全体で共有されるキャッシュメモリで、通常は複数のコア間で共用される。容量が大きく、L1やL2キャッシュのミスをカバーする役割を持つ。メモリアクセスの頻度を削減し、全体的なシステム性能を向上させる。
L4キャッシュ
L4キャッシュ(レベル4キャッシュ)は、メインメモリとプロセッサの間に配置されるキャッシュメモリで、大容量かつ低速な特性を持つ。一部の高性能プロセッサやサーバ向けチップで採用されており、システム全体のキャッシュヒット率を向上させる。
ソフトウェアキャッシュ
ソフトウェアキャッシュは、ハードウェアに依存せず、ソフトウェア側で実装されるキャッシュ機構である。データベース管理システムやウェブサーバなどで使用され、アクセス頻度の高いデータを高速に取得するために利用される。
キャッシュ階層構造
多くのシステムでは、複数段階のキャッシュ階層(L1、L2、L3など)を設ける。L1はCPUコア内に組み込まれる極めて高速・小容量のキャッシュで、レイテンシが非常に低い。一方、L2やL3はやや大容量だがL1より低速な領域となる。これら複数階層で異なるサイズ・速度特性を組み合わせることで、コスト、速度、容量のバランスをとり、全体的なシステム性能を最適化するアプローチが定着している。
キャッシュのマッピング方式
キャッシュメモリは、メインメモリ上のアドレスブロックをどのようにキャッシュラインへ割り当てるかというマッピング方式を備えている。代表的な方式には、直接マップ方式、セットアソシアティブ方式、フルアソシアティブ方式がある。直接マップは単純で実装が容易だが衝突が起きやすい。一方、セットアソシアティブ方式は衝突を緩和し、ミス率を低下させる。一方、フルアソシアティブ方式は最も柔軟性が高いが、実装コストと複雑性が増す。
キャッシュミスとミス削減策
キャッシュミスは、CPUが要求したデータがキャッシュ上に存在せずメインメモリから取り寄せる必要がある状態を指す。ミスにはコンパルソリミス、コンフリクトミス、キャパシティミスなどの分類があり、これらを低減するための戦略が研究されている。プリフェッチ機能は先読みでデータをロードし、コンフリクトミスを減らすためにセットアソシアティブ度を高める手法などが代表的なアプローチである。
ライトポリシーとライトバック
ライトポリシーは、キャッシュ上のデータをメインメモリへ反映させるタイミングを規定する。ライトスルー方式は書き込み時に即座にメインメモリへ反映するため整合性は保ちやすいが、メインメモリアクセスが増える。一方、ライトバック方式はキャッシュ内のみ更新し、キャッシュラインが追い出される際にまとめてメインメモリへ書き戻すため、アクセス回数が減り効率的になる。
省電力とキャッシュ設計
キャッシュメモリは消費電力面でも影響が大きい。大容量キャッシュは性能面で有利だが、その分動作電力も増加する。近年は省電力化が重視され、省エネ設計や電源ゲーティング技術、動的にキャッシュ容量を有効活用する工夫が行われている。こうした設計最適化によって、スマートフォンや組み込み機器など、バッテリ駆動環境でも高性能を維持可能となる。