- CPU キャッシュ メモリはプロセッサに統合された超高速メモリであり、頻繁に使用されるデータと命令を保存して RAM へのアクセスを削減します。
- これはレベル L1、L2、L3 (場合によっては L4) に編成されており、低いレベルは高速ですが容量が少なく、高いレベルは大容量ですが低速です。
- より大きく、適切に設計されたキャッシュは、レイテンシを減らし、FPS の安定性を高めることで、特にゲームにおいて、要求の厳しいワークロードでのパフォーマンスを大幅に向上させることができます。
- キャッシュは重要ですが、その影響はアーキテクチャ、CPU 周波数、RAM 速度によって異なるため、メガバイト数だけでなくパッケージ全体を考慮することが重要です。
多くの人はプロセッサのコア数、周波数、ブランドに注目しがちですが、実際のパフォーマンスに大きな違いをもたらす重要な要素、つまりCPUキャッシュを見落としています。チップ内部に隠されたこの小さなメモリブロックは、プロセッサがデータの到着を待つ必要がなくなったことで、コンピューティングの歴史における最大の進歩の一つとなりました。
同じクロック速度のプロセッサでも、なぜ性能が異なるのか疑問に思ったことはありませんか?その答えは、キャッシュメモリのサイズ、階層構造、速度といった細部にあります。キャッシュメモリとは何か、どのように動作するのか、そしてゲーム、コンテンツ制作、日常的な使用といったタスクにどのような影響を与えるのかを理解することで、仕様をより的確に解釈し、最適なCPUを選ぶことができるようになります。
プロセッサ キャッシュ メモリとは何でしょうか?
CPUキャッシュは、プロセッサ内部に物理的に統合された高速メモリであり、CPUが短時間間隔で繰り返し必要とするデータや命令を格納するように設計されています。マザーボード上の別個のモジュールに搭載されるRAMとは異なり、キャッシュは演算コアに直接接続されているため、ほぼ瞬時にアクセスできます。
キャッシュは、プロセッサが最も頻繁に使用するデータをRAMやディスクから常に取得する代わりに、すぐに利用できる状態に保持する一種の「作業台」と考えることができます。この近接性と驚異的な速度により、CPUの待ち時間が大幅に短縮されます。
現代のPCは数テラバイトのハードディスクドライブやSSD、8~64GB(サーバーではそれ以上)のRAMを搭載できるのに対し、キャッシュはメガバイト、あるいはキロバイト単位で計測される。この小さな容量は問題ではない。キャッシュの目的はすべてのデータを保存することではなく、プロセッサがすぐに必要になる可能性が高いと判断したデータのみを保存することだからだ。
初期のプロセッサでは、キャッシュメモリの一部がチップ外のマザーボード上に配置されていたため、レイテンシが増加していました。最新の設計では、L1、L2、L3キャッシュがプロセッサパッケージ内に統合されているため、物理的な距離が短縮され、アクセス時間が短縮され、パフォーマンスが大幅に向上しています。
キャッシュレベル: L1、L2、L3、そして珍しいL4
現代のプロセッサのキャッシュメモリは単一のブロックではなく、速度と容量が異なる複数の階層構造になっています。一般的には、L1、L2、L3キャッシュがあり、特定の設計では、特に統合グラフィックスや高度に特殊化された構成に関連して、さらにL4キャッシュが搭載されています。
基本的な考え方は常に同じです。レイヤーレベルが低いほど(L1)、コアに近くなり、処理速度は速くなりますが、ストレージ容量は少なくなります。レベルが上がるにつれて(L2、L3、L4)、容量は増えますが、速度は低下し、アクセス遅延が増加します。
一般的なデスクトッププロセッサでは、コアあたり数百キロバイトのL1キャッシュから、数メガバイトのL2キャッシュ、そして数十(あるいは数百)の共有L3キャッシュまで、幅広い容量が実現可能です。ハイエンドのプラットフォームやサーバーでは、数十メガバイトのL2キャッシュと数百メガバイトのL3キャッシュといった、驚異的な容量に達することもあります。
この階層構造は、CPUが可能な限り高速なレベルでほとんどのデータを見つけ出し、メインメモリへのアクセスを最小限に抑え、プロセッサのクロックサイクルを最大限に活用できるように綿密に設計されています。
L1キャッシュ:最前線
L1(レベル1)キャッシュは、カーネルの実行ユニットに最も近いレベルであり、システム全体で最も高速なメモリです。容量は非常に小さいですが、レイテンシはナノ秒の数分の1であり、カーネルへのデータ供給を中断なく行うために不可欠です。
L1キャッシュは通常、データキャッシュと命令キャッシュという2つの独立したセクションに分かれています。これにより、プロセッサは実行すべき処理(命令)と、その処理を実行するためのデータを同時に読み込むことができ、両者が同じメモリ空間を競合することなく処理を進めることができます。
最新のアーキテクチャのほとんどでは、各コアがそれぞれ独立したL1キャッシュを持っています。異なるコアのL1キャッシュ間には直接的な連携はありませんが、各コアは自身の領域のみにアクセスするため、これは問題になりません。例えば、8コアプロセッサが512KBのL1キャッシュを公称している場合、実際にはコアあたり64KBのキャッシュがあり、データと命令に分割されています。
この構造のおかげで、CPUがL1キャッシュ内の情報を正常に検索できた場合、アクセス速度が非常に速いため、パフォーマンスへの影響はほとんど感じられません。したがって、L1キャッシュを削減すると、特定のワークロードにおいて、通常はパフォーマンスが大幅に低下します。
L2キャッシュ: 2番目のステップ
L2(レベル2)キャッシュは、第二の防御線として機能します。L1キャッシュよりも速度は遅いものの、その分容量が大幅に大きくなります。L1キャッシュに収まらなくなったものの、進行中のタスクにとって依然として重要なデータは、通常ここに格納されます。
CPUの設計によっては、L2キャッシュは各コア専用となる場合もあれば、クラスタ内の複数のコア間で共有される場合もある。一部のプロセッサでは、コアがブロックにグループ化され、共通のL2キャッシュが割り当てられる。一方、他のプロセッサでは、各コアが独自のL2キャッシュを持ち、コヒーレンス管理が簡素化される。
かつては、L2レベルが利用可能な最後のキャッシュレベルであり、現行プロセッサでは実質的にL3として機能するアーキテクチャが存在しました。現在、IntelとAMDはどちらも共有L3キャッシュを備えた構成を採用していますが、L2とL3の分配方法は、高性能コア、高効率コア、または独立したチップレットであるかどうかによって大きく異なります。
具体的に言うと、基本的なプロセッサではコアあたり数百キロバイトのL2キャッシュですが、高性能なプロセッサやサーバーではコアあたり数メガバイトのL2キャッシュが搭載されており、これはデータ集約型のアプリケーションのパフォーマンスに明らかに影響を与えます。
L3またはLLCキャッシュ: 最後の共有レベル
L3(レベル3)キャッシュは、LLC(ラストレベルキャッシュ)とも呼ばれ、CPUのメインパッケージに組み込まれたキャッシュ階層の最終レベルです。プロセッサチップ内で最大規模ですが、最も低速なキャッシュメモリであり、通常はすべてのコア、または少なくとも多数のコアグループで共有されます。
通常、各コアと密接に関連付けられているL1とL2とは異なり、L3はデータと命令の両方を格納できる大きな統合空間として設計されており、すべてのコアがローカルレベルで探しているものが見つからない場合にアクセスできます。
この共通性により、メーカーは3Dスタッキングによるサイズ拡大など、非常に興味深い技術を実現できます。AMDの3D V-Cacheテクノロジーはその一例で、CPUの一部にキャッシュチップレットを追加することで、メインチップの表面積を大幅に増やすことなく、利用可能なL3キャッシュの量を増やすことができます。
L3キャッシュの容量はモデルによって大きく異なり、シンプルなプロセッサでは数メガバイト程度ですが、サーバーCPUや、データベース、仮想化、高性能ゲームといった非常に負荷の高いワークロード向けに設計された3Dスタッキング搭載モデルでは、数十メガバイト、あるいは数百メガバイトにも達します。
L4キャッシュ:エキゾチックレベル
現代のデスクトッププロセッサでは一般的ではありませんが、L4キャッシュは存在し、特に高性能な統合GPUを搭載した一部の特定のモデルでは追加サポートとして採用されています。このような場合、L4キャッシュは通常eDRAMなどのメモリで実装され、CPUのすぐ近くの独立したパッケージに配置されます。
典型的な例として、IntelのCore i5 5775Cが挙げられます。これは、従来の小型L3キャッシュと、統合グラフィックスのメモリアクセスを高速化するL4キャッシュとして使用される128MBのeDRAMを組み合わせたものでした。このL4キャッシュは、GPUとRAM間の高帯域幅バッファとして機能し、グラフィックスプロセッサのシステムメモリへの直接的な依存度を低減しました。
L4キャッシュはデスクトップPCでは広く普及していませんが、CPUとGPUの統合アーキテクチャが進化するにつれて、特にPC上でのAIコンピューティングの台頭に伴い、再び重要性を増す可能性があります。
CPUキャッシュメモリの実際の動作
キャッシュは、プログラマがCPUに特定のアドレスを指定できるような小型RAMのように機能するものではないことを理解することが重要です。実際には、キャッシュ管理は自動的かつソフトウェアからは見えない形で行われます。どのデータをコピーするか、どのように整理するか、いつ破棄するかは、CPUハードウェアが決定するのです。
プログラムを実行すると、まず命令とデータがストレージ(SSDまたはHDD)に転送され、次にRAMにロードされます。そこから、CPUが使用しているアドレスに最も近いメモリ断片がキャッシュにコピーされます。このコピーは、必要な正確なアドレスに限定されるのではなく、周囲のメモリブロックにも及び、隣接するデータもすぐに役立つ可能性があることを想定しています。
CPUは、データが存在するかどうかを確認するためにRAMに直接問い合わせるのではなく、逆の順序で処理を行います。アクセスするたびに、まずL1キャッシュ、次にL2キャッシュ、そしてL3キャッシュをチェックし、すべてのレベルで失敗した場合にのみRAMにアクセスします。キャッシュ内にデータが見つかることを「ヒット」、RAM(あるいはストレージ)にアクセスしなければならないことを「ミス」と呼びます。
内部アルゴリズムは、再利用される可能性の高い情報をキャッシュし、もはや必要とされないと予想される情報を削除する役割を担っています。これらは、アクセスパターン、コア間の整合性、メモリの物理構造などを考慮に入れた、かなり複雑なメカニズムです。
重要なのは、CPUがデータ取得のために1ナノ秒余計に待機するたびに、クロックサイクルが失われるということだ。現代のCPUは1秒間に数十億サイクルを処理することを考えると、キャッシュミスによる遅延が積み重なると、全体的なパフォーマンスが大幅に低下することになる。
キャッシュの使用順序とレイテンシ
プロセッサがデータや命令を必要とする場合、常に同じ経路をたどります。まず、最も高速なL1キャッシュを探し、そこになければL2キャッシュへ、そこにもなければL3キャッシュへと進みます。これらのすべてのレベルで失敗した場合にのみ、アクセス時間が数桁遅いRAMにアクセスします。
最新のプロセッサでは、L1キャッシュのレイテンシは1ナノ秒未満、L2キャッシュは数ナノ秒、L3キャッシュは2桁の値となる。一方、RAMのレイテンシは、モジュールの速度(MT/s)とタイミング(CL)によって、数十倍にもなる可能性がある。
例えば、最新世代のRyzenプロセッサは、約512KBのL1キャッシュ(レイテンシ約0,7ナノ秒)、8MBのL2キャッシュ(レイテンシ約2~3ナノ秒)、32MBのL3キャッシュ(平均アクセス時間10ナノ秒強)を備えている可能性があります。DDR5 RAMは、高周波数でデュアルチャネル構成で動作させた場合でも、数十ナノ秒程度のレイテンシで動作します。
キャッシュが大きいほど、シリコンチップ上で占めるスペースが大きくなり、レイテンシも高くなる傾向があります。そのため、メーカーはサイズ、速度、消費電力、コストのバランスを取る必要があります。3Dスタッキングなどの技術は、メインチップの表面積に大きな影響を与えることなくL3キャッシュ容量を増やすことができますが、最大周波数のわずかな低下やオーバークロックの制限など、常に何らかのトレードオフが存在します。
L1またはL2キャッシュへのアクセスが成功した場合、CPUは待機サイクルをほとんど消費しませんが、検索範囲がRAMに及ぶと、パフォーマンスへの影響は急激に増大します。そのため、キャッシュ容量が縮小されたり、設計が不十分なプロセッサは、同じ周波数やコア数であっても、パフォーマンスが低下することがよくあります。
キャッシュ、RAM、ストレージの関係
PCは主に3種類のメモリを使用します。ストレージ(HDD/SSD)、RAM、そしてCPUキャッシュです。大容量ストレージは最も容量が大きく、速度は最も遅く、オペレーティングシステム、プログラム、ファイルなどが格納されます。RAMはより高速で、アプリケーションの一般的な作業領域として機能します。
一方、CPUキャッシュは最小サイズながら、圧倒的に高速です。その機能は、RAMと実行コア間のバッファとして働き、CPUがメインメモリに頻繁にアクセスする必要をなくすことです。キャッシュレベルが上がるごとにデータがコアに近づき、実効レイテンシが低減されます。
RAMの速度とレイテンシを改善することで、CPUがメインメモリにアクセスする際に受けるパフォーマンス低下を軽減できるため、キャッシュミスを部分的に緩和できます。しかし、多くの場合、パフォーマンス向上の鍵は、より優れたアーキテクチャと、もちろん適切なレベルでの容量増加によってキャッシュヒット率を高めることにあります。
したがって、RAMは依然として非常に重要であるものの(特に非常に高い負荷や極端なマルチタスク処理時)、キャッシュは、コア数と周波数が類似したCPU設計間で真の差を生み出す重要な要素となっている。
キャッシュとスクラッチパッド RAM
プロセッサ内部にはキャッシュメモリだけでなく、スクラッチパッドRAMと呼ばれるものも含まれるアーキテクチャが存在する場合があります。両者の概念は根本的に異なるため、混同しないことが重要です。
これまで見てきたように、キャッシュは、現在実行中のデータに最も近いRAM内のデータの自動的かつ一時的なコピーとして機能します。プログラマーが直接管理するのではなく、ハードウェアが独自の内部ポリシーに従って、キャッシュに格納されるデータと出力されるデータを決定します。
一方、スクラッチパッドRAMは、コアまたは演算ブロック内部のローカルRAMのように動作するメモリであり、ソフトウェアによって明示的に管理される必要があります。つまり、プログラムは、その領域に保存したいデータを手動でコピーし、超ローカルRAMであるかのように、データの消去や置き換えのタイミングも決定します。
したがって、主な違いは、キャッシュは完全に透過的でCPUによって自己管理されるのに対し、スクラッチパッドはコードによる直接的な介入を必要とする点です。両者は一部の特殊なチップでは共存していますが、PC、ノートパソコン、モバイルデバイスなどで使用される汎用プロセッサではキャッシュが標準となっています。
キャッシュメモリは実際のパフォーマンスにどのように影響しますか?
ここで当然の疑問が生じます。2つのプロセッサが同じコア数とほぼ同じ周波数を持っている場合、キャッシュは実際にどれほどパフォーマンスに影響を与えるのでしょうか?答えは、ワークロードの種類に大きく依存しますが、特定のタスクでは非常に大きな差が生じる可能性があります。
非常に分かりやすい例として、AMD Ryzen 7 5800Xとその3D版である5800X3Dが挙げられます。両者は同じ基本アーキテクチャとコア数を共有していますが、3DモデルではL3キャッシュが大幅に増加し、32MBから合計96MBにまで増量されています。
これを実現するために、ベース周波数とターボ周波数をわずかに下げ、従来のオーバークロックオプションを排除する必要がありました。これは、理論的には若干の性能低下を招く可能性のある、ささやかな犠牲です。しかし、ゲームやキャッシュに敏感な特定の負荷をテストしたところ、スタック型L3キャッシュ搭載モデルの方が圧倒的に優れた性能を発揮しました。
多くのゲームテストにおいて、5800X3Dはオリジナルの5800Xと比較して平均FPSで2桁の優位性を示しており、最も興味深いのは、ゲームエンジンが最も負荷を受け、カクつきや滑らかさの低下が見られる1%最小値も明らかに改善している点です。
しかし、レンダリングや一部の編集作業など、負荷の高いコンテンツ作成タスクでは、L3キャッシュを増やしてもほとんど改善が見られず、低周波数がボトルネックとなる場合はパフォーマンスが悪化する可能性さえあります。このような場合、ボトルネックはキャッシュではなく、処理能力やメモリ帯域幅といった他の要素です。
キャッシュメモリとゲームパフォーマンス
現代のビデオゲーム、特に負荷の高いゲームは、CPUが常に処理しなければならない膨大な量のデータを扱います。ゲームロジック、物理演算、AI、GPUへの描画呼び出しの準備などです。このような状況において、大容量で適切に活用されたL3キャッシュは、大きな違いを生み出す可能性があります。
CPUはゲーム世界の状況に関するデータや命令をより多く保存できるため、RAMへのアクセス回数を減らすことができます。これは、プロセッサがボトルネックとなっているゲームタイトルにおいて平均FPSの向上につながるだけでなく、何よりも安定性の向上、つまり急激なフレームレート低下の減少と応答時間の安定性の向上につながります。
AMDのいわゆる3D V-Cacheテクノロジーは、この問題を前面に押し出しました。Ryzen 7 7800X3Dや7950X3Dといったモデルは、膨大な量のL3キャッシュ(96MB、128MBなど)を搭載しており、この追加キャッシュ容量のおかげで、家庭用ゲーム機のパフォーマンスにおいて最先端に位置づけられることに成功しました。
例えば、7800X3Dでは、合計1MBのL1キャッシュ、16MBのL2キャッシュ、そして有名な96MBのL3キャッシュが搭載されています。キャッシュの仕組みを理解すれば、それが単なる宣伝文句ではないことが分かります。ゲームの有用な「状態」をCPU自体に多く保存できるため、成功の可能性が高まり、メモリへのアクセス回数が削減されるのです。
しかし、キャッシュだけでは劇的な効果は得られません。ベースとなるプロセッサの性能が非常に低い場合、キャッシュを追加したからといって突然高性能になるわけではありません。ゲームに最適な組み合わせは、高いIPC(命令/サイクル)、十分なクロック速度、十分なキャッシュ容量、そして低遅延の高速RAMです。
AMDの3Dキャッシュに対するIntelの立場
3D V-Cacheを搭載したRyzenプロセッサがゲーム分野で成功を収めていることを考えると、Intelも全く同じ戦略を採用すると考えるのが自然だろう。しかし、同社は少なくとも現時点では、AMDのX3Dモデルと全く同じソリューションを開発する予定はないことを明らかにしている。
インテルは、巨大なL3キャッシュが最も効果を発揮するニッチな分野、つまりハードコアゲーミングだけをターゲットにするのではなく、生産性、クリエイティブ作業、ゲーム、AIなど、幅広いシナリオにおいて全体的なパフォーマンスのバランスを維持することに重点を置いている。
だからといって、キャッシュを軽視しているわけではない。同社は次世代製品でL1、L2、L3キャッシュを段階的に増やす計画だが、AMDのようにL3キャッシュを大幅に増やすだけに頼るわけではない。キャッシュの改善は確かに行われるが、それは分散的に行われ、アーキテクチャの変更、ハイブリッドコア、統合AI、その他の機能と連動する。
とはいえ、特にハイエンドの携帯ゲーム機やデスクトップゲーム機においては、競争圧力は顕著であり、AMDのX3Dモデルがベンチマークとなっている。次世代CPUにおいて、この「キャッシュ競争」がどのように展開していくのか、注目に値するだろう。
CPUキャッシュと他のシステムキャッシュ
通常、CPUのキャッシュについて考える際に「キャッシュメモリ」という言葉を使いますが、この用語は、頻繁なアクセスを高速化するために設計されたあらゆる一時的なデータストレージをより広義に指します。PCには、プロセッサに内蔵されているキャッシュ以外にも、いくつかの種類のキャッシュが搭載されています。
一方、最新のグラフィックカードには独自の内部キャッシュ(GPUキャッシュ)が搭載されており、VRAMに常に依存することなく、テクスチャ、シェーダー、バッファ、その他のグラフィックデータを管理できます。ハードドライブやSSDにもディスクキャッシュが搭載されており、モデルに応じて高速メモリ(DRAMまたはSLC)を使用して読み書きをバッファリングします。
ソフトウェアレベルでは、ブラウザ、オペレーティングシステム、およびさまざまなアプリケーションが独自のキャッシュを使用します。ブラウザは一時ファイル、画像、Cookieをディスクに保存して、再度ダウンロードする必要がないようにし、多くのアプリケーションは頻繁に使用されるデータを保存して、起動と応答を高速化します。
携帯電話やタブレットでも同じことが起こります。プロセッサには内部L1/L2/L3キャッシュがあり、統合GPUには独自のキャッシュシステムがある場合があり、アプリは内部ストレージに一時データを書き込んでユーザーエクスペリエンスを向上させます。ただし、ストレージ容量を使いすぎると、クリーンアップが必要になります。
重要なのは、これらのソフトウェアキャッシュやデバイスキャッシュをCPUキャッシュと混同しないことです。これらは共通の理念に基づいているものの、場所や速度は異なります。CPUキャッシュは、純粋な演算性能において、依然として圧倒的に高速かつ最も重要な役割を果たします。
モバイル デバイス上でキャッシュはどのような役割を果たしますか? また、キャッシュを削除するとデータに影響しますか?
携帯電話やアプリケーションで「キャッシュをクリアする」と言う場合、通常はプロセッサのL1/L2/L3キャッシュ(これはハードウェアであり、簡単に削除することはできません)のことではなく、アプリがデバイスのメモリに保存する一時的なストレージのことを指します。
アプリのキャッシュをクリアすると、一時ファイル、ダウンロードした画像、セッションデータなどが削除されますが、写真、動画、個人用ドキュメントは削除されません。これらはアプリのキャッシュではなく、内部ストレージまたはメモリカードに保存されています。
したがって、アプリやAndroid/iOSシステムのキャッシュをクリアしても、写真や重要なファイルが削除されることはありません。ただし、アプリによっては、次回起動時に特定のコンテンツの読み込みに少し時間がかかる場合があります。これは、データの再生成または再ダウンロードが必要になるためです。
モバイルデバイスでも、PCと同様に、特に内蔵メモリが少ない機種では、容量の大きいアプリのキャッシュを定期的にクリアすることは、ストレージ容量を解放し、システムの動作が遅くなるのを防ぐための良い方法です。
一方、プロセッサの内部キャッシュはユーザーにとって完全に透過的であり、手動で「クリーンアップ」する必要はありません。通常のデバイス動作中は、ミリ秒単位で自動的に管理されます。
つまり、モバイル端末で「キャッシュをクリア」オプションが表示された場合、アクセスしているのは一時的なアプリケーションデータであり、この記事で説明してきたCPUキャッシュではないことを覚えておいてください。
結局のところ、プロセッサのキャッシュメモリは目に見えないものの、ゲームのスムーズさからプログラムの起動速度まで、あらゆるものに影響を与えるコンポーネントの一つです。キャッシュメモリがどのようにレベル(L1、L2、L3、場合によってはL4)に構成されているか、RAMやストレージとどのように相互作用するか、そして容量の増加が特定のシナリオでパフォーマンスを劇的に向上させる理由を理解することで、CPUの仕様を新たな視点で読み解き、ゲーム、仕事、コンテンツ制作、あるいは日常生活でより応答性の高いシステムを楽しむなど、CPUが本当に自分の用途に適しているかどうかを判断できるようになります。