なぜCPUのキャッシュメモリを階層構造にする?

最終更新日 2019年05月20日

CPU のキャッシュメモリーを階層構造にすると効率よくデータにアクセスできるのか

UNIXサーバ キャッシュメモリとは:用語解説 - 富士通 には、以下のとおり書かれています。(この記事の公開年月日は不明)
CPUが効率よくデータアクセスをするために、キャッシュメモリは階層構造になっています。
CPUからのアクセス距離が短い順に、1次キャッシュメモリ、2次キャッシュメモリがあり、それぞれにアクセス頻度に応じたデータや命令を格納しています。
アクセス頻度が高いデータや命令をより近くのキャッシュメモリに置き、あまりアクセスしないものはメインメモリに置くことで、効率よくデータにアクセスすることができます。
同記事に掲載されている図を、やや簡易に表を利用して書くと以下のとおりです。

メモリー 容量 演算器からの距離
1次キャッシュメモリー 小容量 近い
2次キャッシュメモリー 中容量 中間
メインメモリー 大容量 遠い

演算器とは、CPU 内部にある演算を行うところです。1次キャッシュメモリーと2次キャッシュメモリーも CPU 内部にあります。

メインメモリーも含めてキャッシュメモリーを階層構造にすると、CPU は効率よくデータアクセスできるそうです。

演算器に近いほど容量が小さく演算器に遠いほど容量が大きくなっており、なぜ容量に差を設けるのか理由は書かれていませんが、データアクセスの効率を上げるために重要と考えられます。

CPU のキャッシュメモリーを階層構造にすると合理的なのか

PCのメモリ階層の変革を展望するMicrosoftとIntel 後藤弘茂のWeekly海外ニュース には、以下のとおり書かれています。(この記事の公開年月日は2007年9月4日)
 CPUサイドを見ると、次のステップでは、ハイエンドPC向けCPUでL3キャッシュを載せる方向へと向かっている。キャッシュを大容量化するとアクセスレイテンシが増えるため、キャッシュ階層を深める必要が生じるからだ。L2を大容量にしてレイテンシを伸ばすよりも、アクセスが高速で中容量のL2キャッシュと、アクセスは中速だがより大容量のL3キャッシュの組み合わせが合理的な解となる。
CPU のキャッシュメモリーを2段階構造から3段階構造にすることについて書かれていますが、キャッシュメモリーの段階を増やし、上の方にあるキャッシュメモリーほど容量を小さくしてアクセス速度を高速にしておくと、データアクセスの効率が上がるようです。

キャッシュメモリーが1段階のみ(L1 キャッシュのみ)だった頃に、L2 キャッシュを載せてキャッシュメモリーを階層構造にするのも同様の理由だったと考えられます。

L1 キャッシュを大容量化するとアクセスレイテンシーが増えるので、アクセスが高速で小容量の L1 キャッシュと、L1 キャッシュと比べるとアクセスが低速で容量が大きい L2 キャッシュの組み合わせが合理的な解だったと考えられます。

CPU のキャッシュメモリーを階層構造にし、必要に応じてキャッシュを使い分けると有利なのか

なぜCPUにはL1・L2・L3というように複数のキャッシュレベルがあるのか? - GIGAZINE には、以下のとおり書かれています。(この記事の公開年月日は2016年9月12日)
「CPUのキャッシュは、L1が32KB、L2が256KB、L3が2MBという風に多層に分かれているが、なぜ、32KB+256KB+2MBのL1キャッシュではダメなのか?」という素朴な疑問に対して、ファビアン・ギーセン氏(ryg)が「1960年代の古いオフィスでの働き方」を例に挙げて明解に回答しています。

(略)

前述の質問に対するショートバージョンの答えは、「それぞれのキャッシュには役割があるから」。大前提として、キャッシュは容量が大きいほどデータ転送速度が遅く、記憶密度が高く、省電力という性質を持つため、必要性に応じて異なる種類のキャッシュを使い分けるのが有利だから、というのが回答です。
同記事のさらなる説明では、ファビアン・ギーセン氏による「1960年代の古いオフィスでの働き方」を例に挙げた回答をまとめて掲載しています。

ここでは、「1960年代の古いオフィスでの働き方」を例に挙げた回答とは内容を変え、簡潔に書きます。

2010年代のオフィスでも紙ベースの資料等を使って机で作業をする人は多いと思いますが、机を L1 キャッシュ、キャビネットを L2 キャッシュ、資料保管庫を L3 キャッシュに例えます。

どのやり方が作業効率が最も良いのかどうかは人によって違いますが、すぐに使う可能性が高い資料は机に置き、すぐに使う可能性が低い資料はキャビネットに置き、すぐに使う可能性がさらに低い資料は資料保管庫に置いておくことで作業効率が上がると思います。

CPU のキャッシュメモリーでも同じようにデータの利用頻度に応じて L1 キャッシュ、L2 キャッシュ、L3 キャッシュ の中で適切なところにデータを置くことで処理効率が上がります。


キャンペーン情報
マウスコンピューター
期間限定キャンペーン icon
期間限定で大幅値引き!最大40,000円OFF!!(一部モデルのみ)
(7月31日迄)
DELL
・夏のBLACK FRIDAY 第2弾
今なら即納モデルがクーポンで最大17%OFF!
(7月22日迄)
ドスパラ
・大決算セール
特価パソコンをはじめ、お買得なパソコンパーツ、周辺機器を多数ご用意
(8月1日迄)
パソコン工房
・夏のボーナスセール 第2弾!
BTOパソコンやPCパーツ・周辺機器などがお得な価格
(8月1日迄)