※当ページはアフィリエイトプログラムによる収益を得ています。

CPUのキャッシュメモリとは

キャッシュメモリとはCPUとメインメモリの仲立ちをする役割のメモリです。CPUが演算をするときには当然データが必要になりますよね。そのデータをCPUが取り出すときに最初に問い合わせるのがキャッシュメモリです。

キャッシュメモリはメインメモリよりも高速です。CPUがよく使うデータをキャッシュメモリに予め格納してくことで、CPUがデータを受け取る時間を短縮することができます。

スムーズな演算をサポートしているのがキャッシュメモリなのです。

普通のメモリじゃダメなの?

メモリと言えばメインメモリのことを指すことが多いですよね。しかし、CPUが必要とするデータを格納する場所としてはメモリよりも安くて大容量のハードディスクがあります。

ハードディスクから直接取り出せばいいのになぜわざわざ高価なメインメモリを搭載するのか?それはもちろんハードディスクは転送速度が遅いからです。

CPUの演算能力は非常に高く、次から次へとデータを要求してきます。その要求に素早くこたえるためにハードディスクのデータから作業に必要なデータを高速なメインメモリに格納しておくことで、CPUを待たせる時間を少なくして、作業速度をアップするわけです。

しかし、最近のCPUは、メモリでも転送が間に合わないくらい高性能になってしまったのです。そこで、超高速なキャッシュメモリを搭載し、メインメモリのデータからよくCPUが使用するデータを格納しておくことで、さらに作業速度をアップするようになったのです。

よく使うデータって?どうやって判断するの?

  1. CPUがデータを必要としたときには、まずキャシュメモリにデータがないかを問い合わせます。
  2. キャッシュメモリがデータを持っていなかった場合、メインメモリに問い合わせてデータを取得します。
  3. メインメモリからデータを取得したCPUはキャッシュメモリに今回使用したデータを格納します。
  4. 次に同じデータが必要になった際には、CPUは高速なキャッシュメモリからデータを取得することができ、高速に処理できます。
  5. キャッシュメモリに格納したけど、しばらく使用しなかったデータはキャッシュメモリから消去されます。

これを繰り返すことで、頻繁に使用されるデータだけがキャッシュメモリに残ることになり、効率よくCPUがデータを利用することができるようになるのです。

CPUキャッシュメモリには3種類ある

現在のCPUに搭載されているキャッシュメモリは3種類あります。下のような一般的なCPUスペック表にもキャッシュの容量が記載されています。

CPU Ryzen 7 1700
プロセス 14nm
コア数 8
スレッド数 16
ベースクロック 3.0 Ghz
ブーストクロック 3.7 Ghz
L2 Cache 4.0 MB
L3 Cache 16 MB
TDP 65W

L2キャッシュが4.0MB、L3キャッシュが16MB搭載されていることがわかります。ちなみにL1キャッシュの記載がない場合が多いのは、L1キャッシュは非常に容量が少なく、また、CPUの世代が変わっても容量の増加などが行われることがほとんどないためです。L2キャッシュやL3キャッシュはCPUの世代が新しくなるに従って着実に容量がアップしています。

なぜ3種類もあるの?

ではなぜキャッシュメモリには3種類もあるのでしょうか?1つの大きなキャッシュがあればいいのでは?という疑問がわく方もおられると思います。答えはそれぞれのキャシュには別の役割があるためです。

オフィスで働いている人を想像してみてください。

基本的に仕事は自分のデスクでしますよね。そして頻繁に使う資料はデスクの上に置いておきます。このデスクにあたるのがL1キャッシュです。

そして、それなり必要になる資料はデスクの近くのキャビネットに保管しておきます。このキャビネットがL2キャッシュです。キャビネット(L2キャッシュ)に目当ての資料があった時は、デスク(L1キャッシュ)に資料を持ち込んで作業します。

ではキャビネットにも必要な資料がないときはどうでしょうか?地下の巨大な資料室(L3キャッシュ)に問い合わせて資料を持ってきてもらうことになります。

実際にはもっと複雑な仕組みになっていますが、イメージ的にはこのような感じです。この辺りの違いについては「CPUキャッシュのL1、L2の違いとは」を参考にしてください。

どうして大きなL1キャッシュ1つじゃダメなの?

1つの大きなL1キャッシュにするということは、何百メートルもある巨大な机で作業するようなものです。これでは頻繁に使う資料を利用する際にも何百メートルも歩き回る羽目になります。

また、L1キャッシュはコアごとに分離しており、他のコアと共有しないようになっています。使用頻度の高いデータはすぐ手元にあり、他のコアに勝手に持っていかれない事が重要です。そのために、キャッシュメモリは役割によって分けられていうわけです。