「キャッシュ」と「レジスタ」は、どちらもCPU(プロセッサ)の内部にある高速な記憶装置です。
名前が似ているうえに役割も近いため、混同されがちな2つの用語ですが、目的も使われ方もまったく異なります。
この記事では、キャッシュとレジスタの違いを、コンピュータのメモリ階層構造とあわせてわかりやすく解説します。
メモリ階層構造とは?「速さ」と「容量」のトレードオフ

キャッシュとレジスタを理解するには、まず「メモリ階層構造(Memory Hierarchy)」を知っておく必要があります。
コンピュータの記憶装置は、CPUに近いほど速く・容量が小さく、遠いほど遅く・容量が大きいという構造になっています。
| 階層 | 種類 | 速度 | 容量 |
|---|---|---|---|
| 1位(最速) | レジスタ | CPUと同速 | 数十〜数百バイト |
| 2位 | L1キャッシュ | 数ナノ秒以下 | 数十KB程度 |
| 3位 | L2キャッシュ | 数ナノ秒〜 | 数百KB〜数MB程度 |
| 4位 | L3キャッシュ | 十数ナノ秒〜 | 数MB〜数十MB程度 |
| 5位 | メインメモリ(RAM) | 数十〜百ナノ秒 | 数GB〜数十GB |
| 6位(最遅) | ストレージ(SSD/HDD) | マイクロ秒〜ミリ秒 | 数百GB〜数TB |
この構造の中で、レジスタとキャッシュはどちらもCPU内部に位置しています。
どちらも処理を高速化するための装置ですが、担う役割がはっきりと異なります。
ストレージの種類や仕組みについてはこちらで詳しく解説しています。
レジスタとは?「計算の手元」にある超高速の記憶素子
レジスタ(Register)とは、CPUが今まさに演算処理しているデータを直接格納する記憶素子です。
CPUの演算回路(ALU:算術論理演算装置)と直結しており、すべての計算処理はレジスタを通じて行われます。
たとえば「5 + 3 = 8」という計算をする場合、CPUは以下の順番で処理します。
- 「5」をレジスタAに格納する
- 「3」をレジスタBに格納する
- 演算回路が2つのレジスタの値を加算する
- 結果「8」をレジスタCに格納する
レジスタはCPUと完全に一体化しているため、アクセス速度はCPUの動作周波数と同じです。
現代の一般的なCPU(クロック周波数3〜5GHz程度)では、1サイクルあたり0.2〜0.3ナノ秒という桁外れの速度でアクセスできます。
レジスタの主な種類
CPUには用途ごとに複数のレジスタが搭載されています。主なものは以下のとおりです。
- 汎用レジスタ(General Purpose Register):演算や一時データ格納に広く使われる
- プログラムカウンタ(PC):次に実行する命令のアドレスを保持する
- 命令レジスタ(IR):現在実行中の命令を保持する
- メモリアドレスレジスタ(MAR):アクセスするメモリのアドレスを保持する
- アキュムレータ(AC):演算結果を一時的に格納する
レジスタの特徴まとめ
- CPUと同速(最速)のアクセス速度
- 1つあたり64ビット(8バイト)程度のデータしか格納できない
- CPUあたり数個〜数十個しか存在しない
- プログラムの命令(アセンブリ言語など)から直接指定できる
キャッシュとは?「よく使うデータの控え室」
キャッシュメモリ(Cache Memory)とは、メインメモリ(RAM)へのアクセス回数を減らすために、頻繁に使われるデータを一時的に保管する記憶装置です。
CPUの処理速度に比べて、メインメモリへのアクセスには時間がかかります。
そのギャップを埋めるバッファとして、キャッシュメモリが存在しています。
たとえば、CPUが同じデータを繰り返し参照する場合、2回目以降はメインメモリまで取りに行かず、キャッシュから取り出せるため、大幅な速度向上につながります。
この「キャッシュにデータが存在する状態」をキャッシュヒット、存在しない状態をキャッシュミスと呼びます。
L1・L2・L3の3階層
キャッシュメモリはCPUとメインメモリの間に、3つの階層で構成されています。
- L1キャッシュ(一次キャッシュ):最速・最小。CPUコアごとに専用で持つ。容量は数十KB程度
- L2キャッシュ(二次キャッシュ):L1より大きく低速。コア専用か共有かはCPUによる。数百KB〜数MB程度
- L3キャッシュ(三次キャッシュ):最大・低速。全コアで共有。数MB〜数十MB程度
CPUがデータを必要とする際は「L1→L2→L3→メインメモリ」の順に検索していきます。
キャッシュの特徴まとめ
- レジスタより低速だが、メインメモリよりはるかに高速
- 容量は数KB〜数MB程度(レジスタより圧倒的に大きい)
- プログラムからは直接制御できない(キャッシュコントローラが自動管理する)
- よく使われるデータを先読みして保持する
キャッシュとレジスタの違いを比較

2つの違いを表にまとめます。
| 項目 | レジスタ | キャッシュメモリ |
|---|---|---|
| 目的 | 演算処理の直接実行 | メインメモリへのアクセス削減 |
| 速度 | 最速(CPUと同速) | レジスタより低速(L1〜L3の順) |
| 容量 | 数十〜数百バイト | 数KB〜数十MB |
| 個数・構成 | 数個〜数十個 | L1・L2・L3の3階層 |
| 管理 | プログラム(命令)が直接指定 | キャッシュコントローラが自動管理 |
| 使われる半導体 | SRAM | SRAM |
| CPUとの関係 | CPU演算回路の一部 | CPUとメインメモリの中間バッファ |
最も大きな違いは「役割」です。
レジスタは「今この瞬間に計算するデータを置く場所」であり、キャッシュは「近いうちに使いそうなデータを事前に持ってくる場所」です。
どちらも同じSRAMという高速な半導体を使っていますが、用途がまったく異なります。
なぜレジスタがあるのにキャッシュも必要なのか?
「レジスタが最速なら、レジスタだけあれば十分では?」と思うかもしれません。
しかし、レジスタには2つの大きな制約があります。
1つ目は容量の限界です。
レジスタ1つが保持できるデータは64ビット(8バイト)程度に過ぎず、数が数個〜数十個しかないため、実際のプログラムが扱う大量のデータを格納できません。
2つ目は設計上の制約です。
CPUの物理的な演算回路の構造上、大量のレジスタを追加することは困難です。
また、ISA(命令セットアーキテクチャ)で定義されたレジスタの数は、ソフトウェアとの互換性を維持するために簡単には変えられません。
一方でキャッシュは、これらの制約なしに「よく使うデータをより多く、より速く手元に置く」という役割を担っています。
レジスタとキャッシュはお互いを補い合う関係にあるのです。
まとめ
キャッシュとレジスタは、どちらもCPU内の高速記憶装置ですが、役割が異なります。
- レジスタ:CPUが今まさに計算しているデータを置く場所。最速だが容量は極めて小さく、プログラムから直接指定して使う
- キャッシュ:よく使うデータをメインメモリから事前に取り込んでおく場所。L1〜L3の階層構造で自動的に管理される
「レジスタが計算台の手元、キャッシュが計算台の引き出し、メインメモリが別室の書棚」とイメージすると理解しやすくなります。
コンピュータのメモリ全体の仕組みに興味がある方は、Androidのメモリ使用量を確認する方法もあわせてご覧ください。
参考情報源:


コメント