キャッシュとは何ですか?

キャッシュとは何ですか? また、なぜ CPU、GPU、その他の種類のプロセッサーにキャッシュが搭載されているのでしょうか? 知っておくべきことはすべてここにあります。

クイックリンク

  • キャッシュ: 少量の高速メモリ
  • キャッシュレベルとメモリ階層
  • キャッシュは必要ですが、それだけではパフォーマンスは向上しません

キャッシュはコアほど話題になりませんが、 ラム (ランダムアクセスメモリ)、または VRAM、特に最近、以前に聞いたことがあるかもしれません。 AMD はゲームのパフォーマンスを誇らしげに宣伝しています。 3D Vキャッシュを備えたRyzen CPU これはキャッシュを使用した結果であり、第 13 世代 Raptor Lake CPU での Intel の最大の改善点の 1 つは、より多くのキャッシュを追加したことです。

しかし、キャッシュをメガバイト単位で測定した場合、どのようにしてパフォーマンスを向上させることができるのでしょうか? 最近では、最も安価な RAM キットでも 16 GB が搭載されていますが、わずか数メガバイトのキャッシュを追加するだけで、パフォーマンスにこれほど大きな違いが生じるのでしょうか? そうですね、キャッシュは通常の種類のメモリではありません。

キャッシュ: 少量の高速メモリ

出典: AMD

キャッシュは実際にはプロセッサにおいてごく最近開発されたもので、その起源は 1990 年代にまで遡り、RAM のために発明されました。 RAM は、プロセッサ (CPU や GPU など) が頻繁に必要とする大量のデータを保存するコンピュータの重要なコンポーネントです。 長い間、RAM パフォーマンスの向上は CPU パフォーマンスの向上と歩調を合わせて行われてきましたが、1990 年代になると、 RAM が最新の CPU に追いつかないことは明らかです。 RAMは大容量だが転送速度が遅すぎる 遅い。

ここでキャッシュが登場します。 物理的にも容量的にも RAM ほど大きくありませんが、プロセッサ自体の内部にあり、非常に高速かつ非常に低い遅延でデータを転送できます。 プロセッサが実際に必要とするデータをキャッシュに保存している限り、同じデータを RAM に要求するほうが何倍も時間がかかるため、時間を節約できます。 これは RAM の問題に対する優れた解決策であり、CPU 設計者がより高速な CPU を作り続けられるようになり、 RAM 設計者は、それほど心配することなく、より大容量の RAM を作り続けることができます。 パフォーマンス。 現在、キャッシュはほぼすべての種類のプロセッサに搭載されています。

しかし、なぜキャッシュがこんなに小さいのか疑問に思われるかもしれません。 まあ、それは主にスペースとお金に関係しています。 32MB のキャッシュでもプロセッサー上でかなりのスペースを占有する可能性があり、最新のチップの総面積は約 600mm2 に制限されているため、賢明に使用する必要があります。 つまり、より多くの領域をキャッシュ専用にするとかなりのコストがかかる可能性があり、 その状況は改善されるどころかむしろ悪化している. 最新の製造プロセスでは、キャッシュ密度の向上がますます小さくなっており、TSMC は 3nm プロセスの最初の反復でキャッシュのサイズをまったく削減できませんでした。

キャッシュレベルとメモリ階層

出典: カルロス・カルヴァーリョ

キャッシュの発明は、コンピューター内のすべてのデータ ストレージ デバイスに新しいレイヤーが存在することを意味しました。 これらの層はメモリ階層と呼ばれるものを形成します。これは上の画像で見ることができ、その詳細は次のとおりです。 一般的なシステムでは、どのメモリが CPU 内のどこに配置されるか (ただし、他の種類のプロセッサは非常に似ています) 似ている)。 現在、最新のメモリ階層には、キャッシュ、RAM、永続ストレージ デバイスだけでなく、キャッシュ自体内のメモリ階層も含まれています。

ほとんどのプロセッサには、さまざまな目的に応じてさまざまなレベルのキャッシュがあります。 キャッシュの最初の最小レベルは L1 で、すぐに必要なデータを処理するための個別のコアが与えられます。 L1 キャッシュはキロバイト単位で測定されることが多く、最新の Ryzen 7000 CPU にはコアあたり 64 KB の L1 キャッシュがあります。 さらに、最新の L1 キャッシュは、L1I (命令用) と L1D (データ用) にさらに分割されることがよくあります。

次は L2 です。これは、個々のコアではなくコアのグループを対象としています。 当然のことながら、L2 キャッシュは L1 キャッシュよりも大きく、多くの場合は 1 桁ほど大きくなりますが、はるかに大きく、より多くのコアを処理する必要があるため、速度が遅くなり、レイテンシが高くなります。 一部のプロセッサ、特に GPU や低速の CPU は、L2 キャッシュまでしか動作しません。

次のステップは L3 です。これは通常、チップ上のすべてのコアによって使用されます。 そのサイズは、プロセッサーに応じて、L2 キャッシュの数倍から 1 桁以上まで異なります。 これは、L2 キャッシュよりもさらに遅いものの、それでも RAM よりも優れていることを意味します。 さらに、L3 キャッシュは、L1 および L2 キャッシュから追い出されたデータが保存される「犠牲キャッシュ」としても機能することがよくあります。 不要な場合は、L3 キャッシュからさらに削除される可能性があります。 現在、チップレット テクノロジの理由から、AMD にとって L3 キャッシュは特に重要です。 Ryzen 3D V-Cache チップには 64MB の L3 キャッシュが含まれており、RX 7000 メモリ キャッシュ ダイ (または MCD) にはそれぞれ 16MB の L3 キャッシュが含まれています。

ほとんどのプロセッサで見られる最高レベルのキャッシュは L4 で、多くの場合、事実上 RAM となるほど大きくなります。 実際、L4 キャッシュを使用する最新の CPU は Intel の Sapphire Rapids Xeon チップで、最上位モデルの L4 キャッシュとして HBM2 を使用します。 一方、AMD は L4 キャッシュを一度も使用したことがなく、代わりに CPU と V キャッシュ チップレットを追加することで L3 キャッシュを大容量に拡大することに満足しています。 L4 キャッシュは、CPU と統合 GPU の間でデータを共有できるオンダイ ソリューションであるため、通常、統合 GPU に大きなメリットをもたらします。

一部のチップセット (主にモバイル チップセット) には、システム レベル キャッシュ (SLC) という別のタイプのキャッシュがあります。 このキャッシュは、GPU、NPU、CPU などのチップセット全体で使用されます。 キャッシュはメイン メモリへのリクエストの必要性を置き換えることができるため、SLC は SoC 全体に利益をもたらします。

キャッシュは必要ですが、それだけではパフォーマンスは向上しません

最近のキャッシュの革新に関する誇大宣伝にもかかわらず、それはパフォーマンスを向上させる特効薬ではありません。 結局のところ、キャッシュには処理能力がありません。 データを保存するだけです。それだけです。 どのプロセッサもキャッシュを増やすことで確実にメリットが得られますが、多くの場合、必要な量以上のキャッシュを追加するにはコストがかかりすぎます。 ワークロードによっては、キャッシュを追加してもパフォーマンスが向上しない可能性があります。これは、プロセッサに多大な負荷をかけないようにするさらなる動機となります。

そうは言っても、特定の状況では、大量のキャッシュを追加できることが望ましい場合があります。 大量のキャッシュを備えた CPU は、たとえばゲームでのパフォーマンスが向上する傾向があります。 3D V キャッシュを備えた AMD の Ryzen CPU は、V キャッシュのないチップよりも周波数が低いにもかかわらず、ゲームではかなり高速です。 インテルの第 13 世代 CPU は第 12 世代チップよりも大幅に高速ですが、唯一の大きな改善点はサイズが拡大されたことです。 キャッシュ。

最終的には、プロセッサができるだけ頻繁に RAM をバイパスし、パフォーマンスをできるだけ制限しないようにするために、キャッシュが存在します。 CPU 設計者は、キャッシュ容量とサイズ、ひいてはコストのバランスをとる必要がありますが、新しい製造プロセスが世代を重ねるごとに、その難しさが増しています。 キャッシュが発明されてから数十年が経ち、プロセッサにキャッシュを追加する新しい方法が導入されていますが、プロセッサのこの重要なコンポーネントの目的が変わるとは考えにくいです。