キャッシュ メモリがマイクロプロセッサのパフォーマンスに与える影響。 キャッシュ メモリがコンピュータのパフォーマンスに与える影響

90 年代後半以降のすべてのプロセッサには、内部キャッシュ メモリ (または単にキャッシュ) が搭載されています。 キャッシュは、プロセッサによって直接処理された命令とデータが転送される高速メモリです。

最新のプロセッサには、第 1 レベル (L1) と第 2 レベル (L2) の 2 つのレベルのキャッシュ メモリが内蔵されています。 プロセッサは、L1 キャッシュの内容を使用するとわずかに高速になりますが、L2 キャッシュは通常わずかに大きくなります。 キャッシュ メモリは待機状態なしでアクセスされます。つまり、 レベル 1 キャッシュ (オンチップ キャッシュ) はプロセッサ速度で動作します。

これは、プロセッサが必要とするデータがキャッシュ内にある場合、処理の遅延が発生しないことを意味します。 そうしないと、プロセッサはメイン メモリからデータをフェッチする必要があり、システム パフォーマンスが大幅に低下します。

両方のレベルのキャッシュメモリの動作原理を定性的に理解するために、日常の状況を例として考えてみましょう。

あなたは毎日同じ時間にランチを食べにカフェに来て、いつも同じテーブルに座ります。 必ず標準の 3 コースセットを注文してください。

ウェイターがキッチンに走り、コックがトレイにそれらを置き、注文を持ってきます。 それで、たとえば、3日目に、ウェイターは、再びキッチンに走らなくても済むように、トレイに出来立ての温かいランチを乗せて、約束の時間にあなたを迎えます。

注文を待つ必要がなく、時間を大幅に節約できます。 料理が入ったトレイは第 1 レベルのキャッシュです。 しかし、4日目になると突然、デザートなどの別の料理を追加したくなります。

指定された時間には注文を載せたトレイがすでにあなたを待っていましたが、ウェイターはデザートを求めてキッチンに走らなければなりませんでした。

そして5番目には、再び3つのアイテムのメニューが表示されます。 6番目に、再びデザートですが、前のものとは異なります。 そして、ウェイターは、あなたがどのデザートを注文したいのか分からず(そして、あなたが何かを注文するかどうかさえ分からず)、次のステップに進むことにしました。テーブルの隣に、数種類のデザートが入ったキャビネットを置きます。

そして、あなたが欲求を表明すれば、すべてが手元にあり、キッチンに走る必要はありません。 デザート キャビネットは 2 番目のレベルのキャッシュです。

プロセッサのパフォーマンスは、L1 キャッシュ (16 ~ 128 KB) と L2 (64 KB ~ 512 KB、Pentium III Heop および AMD Opteron では最大 4 MB) のサイズに大きく依存します。

Intel Pentium III プロセッサとそれをベースにした Celeron プロセッサの L1 キャッシュ サイズは 32 KB です。 Intel Pentium 4、およびそれをベースにした Celeron および Cheop バージョンの容量はわずか 20 KB です。 AMD Duron、Athlon (XP/MP を含む)、Opteron プロセッサ、および VIA SZ には、128 KB の L1 キャッシュが含まれています。

最新のデュアルコア プロセッサには、コアごとに個別に 1 レベル キャッシュがあるため、キャッシュの説明に 128x2 という数字が表示されることがあります。 これは、各プロセッサ コアに 128 KB の L1 キャッシュがあることを意味します。

L1 キャッシュのサイズは、最も一般的なタスク (オフィス アプリケーション、ゲーム、ほとんどのサーバー アプリケーションなど) で高いパフォーマンスを得るために重要です。 その有効性は、スレッド コンピューティング (ビデオ処理など) で特に強力です。

これが、Pentium 4 がほとんどの一般的なアプリケーションに対して比較的非効率的である理由の 1 つです (ただし、これはその高いクロック速度によって補われています)。 L1 キャッシュは常に内部プロセッサ周波数で動作 (プロセッサ コアと情報を交換) します。

対照的に、異なるプロセッサ モデルの L2 キャッシュは異なる周波数 (したがって、パフォーマンス) で動作します。 Intel Pentium II 以降、多くのプロセッサはプロセッサの内部周波数の半分で動作する L2 キャッシュを使用していました。

このソリューションは、旧式の Intel Pentium III プロセッサ (最大 550 MHz) および旧式の AMD Athlon (一部のプロセッサでは、内部 L2 キャッシュがプロセッサ コア周波数の 3 分の 1 で動作する) で使用されていました。 L2 キャッシュ サイズもプロセッサによって異なります。

古いおよび一部の新しい Intel Pentium III プロセッサでは、L2 キャッシュ サイズは 512 KB ですが、他の Pentium III プロセッサでは 256 KB です。 Pentium III ベースの Intel Celeron プロセッサは 128 KB および 256 KB の L2 キャッシュを搭載していましたが、Pentium 4 ベースのプロセッサは 128 KB のみで利用できました。 Intel Pentium 4 の Xeon バージョンのさまざまなバージョンには、最大 4 MB の L2 キャッシュがあります。

新しい Pentium 4 プロセッサ (周波数が 2000 MHz の一部のシリーズと、すべて高周波数用) には 512 KB の L2 キャッシュがあり、残りの Pentium 4 プロセッサには 256 KB があります。 Xeop プロセッサ (Pentium 4 ベース) には、256 KB または 512 KB の L2 キャッシュがあります。

さらに、第 3 レベルの L3 キャッシュも備えています。 統合された L3 キャッシュは高速システム バスと組み合わされて、システム メモリとの高速データ交換チャネルを形成します。

原則として、サーバー ソリューション用のプロセッサまたは「デスクトップ」プロセッサの特殊モデルのみが L3 キャッシュ メモリを備えています。 たとえば、Xeon DP、Itanium 2、Xeon MP などのプロセッサ ラインには L3 キャッシュ メモリが搭載されています。

AMD Duron プロセッサには、128 KB の L1 キャッシュと 64 KB の L2 キャッシュがあります。 Athlon プロセッサ (最も古いものを除く)、Athlon MP、およびほとんどの Athlon XP バリアントには 128 KB の L1 キャッシュと 256 KB の L2 キャッシュがあり、最新の Athlon XP (2500+、2800+、3000+ 以降) には 512 KB の L2 キャッシュがあります。キャッシュ。 AMD Opteron には 1 MB の L2 キャッシュが含まれています。

Intel Pentium D、Intel Pentium M、Intel Core 2 Duo プロセッサの最新モデルには、6 MB の L2 キャッシュ、および Core 2 Quad - 12 MB の L2 キャッシュが搭載されています。

この本の執筆時点での最新の Intel Core i7 プロセッサには、4 つのコアごとに 64 KB の L1 キャッシュ メモリと、各コアごとに 256 KB の L2 メモリが搭載されています。 プロセッサには、1 次および 2 レベルのキャッシュに加えて、すべてのコアに共通の 8 MB に等しい 3 レベルのキャッシュもあります。

同じモデルでも異なる L2 キャッシュ サイズを持つプロセッサ (Intel Xeon MP - L3 の場合) については、販売時にこのサイズを示す必要があります (もちろん、プロセッサの価格はそれに依存します)。 プロセッサーが「ボックス入り」パッケージ (同梱納品) で販売される場合、通常、キャッシュ メモリーのサイズがパッケージに表示されます。

通常のユーザー タスク (ゲームを含む) では、L2 キャッシュのサイズよりも速度の方が重要です。 逆に、サーバータスクの場合は、ボリュームがより重要です。 最も生産性の高いサーバー、特に大量の RAM (数ギガバイト) を搭載したサーバーには、L2 キャッシュの最大サイズと最大速度が必要です。

Pentium III プロセッサの Cheop バージョンは、これらのパラメータにおいて依然として優れています。 (プロセッサ自体とメモリ バスのクロック周波数が高いため、Xeon MP プロセッサは依然として Pentium III Xeon よりもサーバー タスクの生産性が高いことが判明しています。) 上記から、次の結論が得られます。キャッシュ メモリは、プロセッサ間の相互作用を改善します。高速なプロセッサと低速な RAM を搭載し、データ処理中に発生する待ち時間を最小限に抑えることもできます。 これには、プロセッサ チップ上にある L2 キャッシュが決定的な役割を果たします。

キャッシュは、要求される可能性が最も高い情報を含む高速アクセスの中間バッファです。 キャッシュ内のデータへのアクセスは、動作メモリ (RAM) から元のデータを取得するよりも高速であり、外部メモリ (ハード ドライブまたはソリッド ステート ドライブ) よりも高速であるため、平均アクセス時間が短縮され、コンピュータ システムの全体的なパフォーマンスが向上します。

多くの中央処理装置 (CPU) モデルには、レジスタよりも遅いランダム アクセス メモリ (RAM) へのアクセスを最小限に抑えるために独自のキャッシュがあります。 RAM クロック速度が CPU クロック速度よりも大幅に低い場合、キャッシュ メモリはパフォーマンスに大きな利点をもたらします。 キャッシュ メモリのクロック速度は、通常、CPU 速度とそれほど遅くありません。

キャッシュレベル

CPU キャッシュはいくつかのレベルに分割されています。 現在の汎用プロセッサでは、レベルの数は最大 3 まであります。レベル N+1 キャッシュは通常、レベル N キャッシュよりもサイズが大きく、アクセス速度とデータ転送が遅くなります。

最も高速なメモリは、第 1 レベルのキャッシュ、つまり L1 キャッシュです。 実際、それは同じチップ上に配置され、機能ブロックの一部であるため、プロセッサの不可欠な部分です。 最新のプロセッサでは、L1 キャッシュは通常、命令キャッシュとデータ キャッシュ (ハーバード アーキテクチャ) の 2 つのキャッシュに分割されています。 L1 キャッシュのないほとんどのプロセッサは機能できません。 L1 キャッシュはプロセッサ周波数で動作し、一般にクロック サイクルごとにアクセスできます。 多くの場合、複数の読み取り/書き込み操作を同時に実行できます。 アクセス遅延は通常 2 ~ 4 コア クロック サイクルです。 通常、ボリュームは小さく、384 KB 以下です。

2 番目に速いのは L2 キャッシュです。これは通常、L1 と同様にチップ上に配置される 2 番目のレベルのキャッシュです。 古いプロセッサでは、マザーボード上のチップのセット。 L2 キャッシュ ボリュームは 128 KB から 1?12 MB まで。 最新のマルチコア プロセッサでは、同じチップ上にある 2 次キャッシュは別個のメモリです。合計キャッシュ サイズは nM MB、各コアには nM/nC MB があり、nC はプロセッサ コアの数です。 通常、コア チップ上にある L2 キャッシュのレイテンシは 8 ~ 20 コア クロック サイクルです。

3 番目のレベルのキャッシュは最も高速ではありませんが、サイズは非常に大きくなり、24 MB を超える場合があります。 L3 キャッシュは以前のキャッシュよりも遅くなりますが、それでも RAM よりは大幅に高速です。 マルチプロセッサ システムでは一般的に使用されており、異なる L2 からのデータを同期することを目的としています。

場合によっては 4 次キャッシュも存在しますが、通常は別のチップにあります。 レベル 4 キャッシュの使用は、高性能サーバーとメインフレームに対してのみ正当化されます。

異なるキャッシュ (1 つのプロセッサと複数のプロセッサの両方) 間の同期の問題は、キャッシュ コヒーレンスによって解決されます。 異なるレベルのキャッシュ間、つまりキャッシュ アーキテクチャ間で情報を交換するには、包括的、排他的、非排他的という 3 つのオプションがあります。

L2 キャッシュを搭載した最初のプロセッサは 1995 年の Pentium Pro でした。 256 KB または 512 KB のオンチップ L2 キャッシュを備えており、キャッシュがマザーボード上に配置されていた従来の Pentium プロセッサよりも大きな利点がありました。 Pentium II の登場により、専用キャッシュ メモリがスロット 1 モジュールのプロセッサの隣に「定着」しました。 ただし、キャッシュ メモリをプロセッサ チップ上に移動したのは、Socket 370 用の第 2 世代 Pentium III のみです。 これは現在も続いていますが、キャッシュの量が少ないプロセッサもあれば、キャッシュの量が多いプロセッサもあります。 大規模なキャッシュを備えたモデルにお金を費やす価値はありますか? 以前は、キャッシュ メモリを追加してもパフォーマンスに顕著な影響を与えることは必ずしもありませんでした。

キャッシュ サイズの異なる 2 つのプロセッサ間で測定可能な違いを見つけることは常に可能ですが、コストを節約するためにより小さいキャッシュを備えたプロセッサを購入することも完全に可能でした。 ただし、Core 2 Duo より前のプロセッサでは、3 つの異なるキャッシュ オプションを利用できませんでした。

Pentium 4 の第 1 世代 (Willamette、180 nm) には 256 KB のキャッシュが搭載されていましたが、より成功した第 2 世代 (Northwood、130 nm) では、すでに 512 KB のキャッシュが搭載されていました。 当時、より小さいキャッシュを備えた安価な Celeron プロセッサが同じコンピューティング コアで製造されていました。 Celeron は、ハイエンド モデルと低価格モデルの同じ技術ベースを持つ製品の第 1 世代に属し、利用可能なキャッシュ サイズと FSB/コア周波数のみが異なります。 その後、市場セグメントをさらに差別化するために機能の違いが追加されました。

90 nm Prescott コアのリリースにより、L2 キャッシュは 1 MB に増加し、このプロセッサは 2 MB 65 nm Cedar Mill が導入されるまでインテルのデスクトップ プロセッサ シリーズの主力となりました。 Intel は、これらのコアのうち 2 つを使用して、第 2 世代の Pentium D 900 プロセッサを作成しました。 ただし、クロック速度の高速化とキャッシュ サイズの拡大は、当時でもあまり意味がありませんでした。 現在、状況は変わりました。Core 2 Duo (Conroe、65 nm) のパフォーマンスの向上と消費電力の低下は、主にキャッシュ サイズによるものです。

AMDはキャッシュサイズの増加について非常に消極的でした。 おそらく、これはチップ面積 (トランジスタの予算) によるものです。65 nm プロセッサの数では市場の需要を満たすことができず、収益性の低い 90 nm モデルの場合、この問題はさらに深刻になります。 一方、インテルには、すべての主流プロセッサを 65 nm プロセス技術を使用して生産するという利点があり、L2 キャッシュの容量は今後も増加し続けるでしょう。 たとえば、45nm Penryn コアの次世代 Core 2 には、最大 6 MB の L2 キャッシュが搭載されます。 これはマーケティング活動とみなされるのでしょうか、それとも L2 容量の増加により実際にパフォーマンスが向上するのでしょうか? 見てみましょう。

大規模な L2 キャッシュ: マーケティングまたは生産性の向上?

プロセッサ キャッシュは非常に特殊な役割を果たします。頻繁に使用されるデータをバッファリングすることでメモリ アクセスの数を減らします。 現在、モデルに応じて、RAM 容量は 512 MB ~ 4 GB、キャッシュ容量は 256 KB ~ 8 MB です。 ただし、256 KB または 512 KB の小さなキャッシュ サイズでも、今日では当然のことと考えられている高いパフォーマンスを提供するには十分です。

キャッシュ階層を編成するにはさまざまな方法があります。 最新のコンピュータのほとんどは、小規模な 1 次キャッシュ (L1、最大 128 KB) を備えたプロセッサを備えています。このキャッシュは通常、データ キャッシュと命令キャッシュに分割されています。 通常、より大きな L2 キャッシュはデータ ストレージに使用され、2 つの Core 2 Duo プロセッサ コア間で共有されますが、Athlon 64 X2 または Pentium D にはコアごとに個別のキャッシュがあります。 L2 キャッシュは排他的または包括的であり、L1 キャッシュの内容のコピーを保存できるかどうかを意味します。 AMDは間もなく、AMD Phenomプロセッサの4つのコアで共有される第3のキャッシュレベルを備えたプロセッサを導入する予定です。 同じことが、Intel が現在の Core 2 に代わって 2008 年に導入する Nehalem アーキテクチャにも予想されています。

L1 キャッシュは常にプロセッサの一部でしたが、多くの 486DX および Pentium コンピュータの場合と同様、L2 キャッシュは当初マザーボードにインストールされました。 一次キャッシュには、単純なスタティック メモリ チップ (SRAM、スタティック RAM) が使用されました。 これらはすぐに、キャッシュをオンチップにインストールできるようになるまで、Pentium プロセッサ上のパイプライン バースト キャッシュに置き換えられました。 150 ~ 200 MHz の Pentium Pro は、256 KB の L2 キャッシュをオンチップに搭載した最初のプロセッサとなり、デスクトップ PC およびワークステーションの最大セラミック パッケージ サイズの記録を破りました。 500 MHz ~ 1.13 GHz の周波数で動作する Pentium III for Socket 370 は、256 KB のオンチップ L2 キャッシュを備えた最初のプロセッサであり、キャッシュが CPU 速度で実行されるため、レイテンシの利点が得られました。

内蔵の L2 キャッシュにより、ほぼすべてのアプリケーションのパフォーマンスが大幅に向上しました。 パフォーマンスの向上は非常に大幅であることが判明したため、統合 L2 キャッシュの登場が x86 プロセッサにとって最も重要なパフォーマンス要素と言えるほどです。 L2 キャッシュを無効にすると、デュアルコア プロセッサの 2 番目のコアを無効にするよりもパフォーマンスが低下します。

ただし、キャッシュ メモリはパフォーマンスだけに影響を与えません。 メーカーは拒絶反応とクロック速度に基づいてプロセッサを柔軟に選択できるため、ローエンド、メインストリーム、ハイエンドのセグメントに応じてプロセッサの異なるモデルを作成できる強力なツールとなっています。 クリスタルに欠陥がない場合、L2 キャッシュ全体をオンにすることができ、周波数は高くなります。 必要なクロック周波数が達成できない場合、クリスタルはハイエンド ラインのエントリー レベル モデル、たとえば 4 MB のキャッシュと低周波数を備えた Core 2 Duo 6000 になる可能性があります。 L2 キャッシュに欠陥が存在する場合、メーカーはその一部を無効にして、キャッシュ サイズが小さいエントリーレベルのモデル (たとえば、2 MB の L2 キャッシュを備えた Core 2 Duo E4000、またはPentium デュアル コアと 1 MB のキャッシュのみ。 これはすべて真実ですが、問題は、キャッシュ サイズの違いがパフォーマンスにどの程度影響するかということです。



コンテンツ

キャッシュメモリ- システム メモリ コントローラと の間のバッファである超高速 RAM のアレイ。 このバッファには、現在処理中のデータ ブロックが格納されるため、低速なシステム メモリへのプロセッサ呼び出しの数が大幅に減少します。 これにより、プロセッサの全体的なパフォーマンスが大幅に向上します。

1 レベル、2 レベル、および 3 レベルのキャッシュ メモリがあります (マーク L1、L2そして L3).

レベル 1 キャッシュ (L1)- 最速ですが、他のものよりもボリュームが小さくなります。 プロセッサーコアはそれと直接連携して動作します。 レベル 1 キャッシュ メモリのレイテンシ (アクセス時間) は最も低くなります。
レベル 2 キャッシュ (L2)– このメモリの容量は、1次キャッシュよりもはるかに大きくなります。
レベル 3 キャッシュ (L3)– 大容量で L2 より遅いキャッシュ メモリ。

クラシック バージョンには、第 1 レベルと第 2 レベルの 2 つのキャッシュ メモリがありました。 第 3 レベルは、第 2 レベルのキャッシュとは構成が異なります。 データが処理されていない場合、またはプロセッサが緊急のデータを処理する必要がある場合、2 次キャッシュを解放するために、データは 3 次キャッシュに移動されます。 ただし、L3 キャッシュは大きく、L2 よりも遅くなります (L2 と L3 間のバスは L1 と L2 間のバスより狭い) が、それでもシステム メモリよりははるかに高速です。

すべてのデータは最初に中央プロセッサによる処理のために 2 次キャッシュに転送され、データは部分的にデコードされてコアに渡されます。

2次キャッシュではデータから命令チェーンが構築され、1次キャッシュではプロセッサやレジスタなどの機能を考慮した内部プロセッサ命令が「ミラー」で構築されます。 中央プロセッサの内部命令の数はそれほど多くないため、1 次キャッシュのサイズはそれほど重要ではありません (最新のプロセッサでは、1 次 L1 キャッシュ メモリは 64 KB、コアごとに 128 KB にすることができます)。 レベル 1 キャッシュとは異なり、レベル 2 キャッシュはプロセッサにとって非常に重要であるため、最大のレベル 2 キャッシュを備えたプロセッサが高いパフォーマンスを示します。

プロセッサのメモリ キャッシュ構造の構成には違いがあります。 たとえば、AMD プロセッサはキャッシュ メモリ コア間で明確に分割されており、それに応じて 512x2 ( Athlon 5200以下)または 1024x2( Athlon 5200以上)。 そしてプロセッサーについては インテル Core2Duoキャッシュは厳密に分割されていないため、各コアが必要な量の共有キャッシュ メモリを使用でき、マルチコアをサポートしていないシステムに適しています。 すべてのコアが使用される場合、キャッシュ メモリは各コアの負荷に応じて各コアに動的に分割されます。

すべてのユーザーは、データの処理を担当するプロセッサや、データの保存を担当するランダム アクセス メモリ (RAM または RAM) などのコンピュータ要素をよく知っています。 しかし、プロセッサ キャッシュ メモリ (キャッシュ CPU)、つまりプロセッサ自体の RAM (いわゆるウルトラ RAM) もあることは、おそらく誰もが知っているわけではありません。

コンピュータ設計者がプロセッサに専用メモリを使用するようになった理由は何ですか? パソコンのRAM容量が足りませんか?

実際、長い間、パーソナル コンピュータにはキャッシュ メモリがありませんでした。 しかし、ご存知のとおり、プロセッサはパーソナル コンピュータ上で最も高速なデバイスであり、その速度は CPU の新世代ごとに向上しています。 現在、その速度は 1 秒あたり数十億回の操作で測定されます。 同時に、標準 RAM は進化の過程でパフォーマンスが大幅に向上していません。

一般的に、スタティック メモリとダイナミック メモリという 2 つの主要なメモリ チップ テクノロジがあります。 設計の詳細には立ち入らずに、静的メモリは動的メモリとは異なり、再生成を必要としないことだけを述べておきます。 さらに、スタティック メモリでは 1 ビットの情報に 4 ~ 8 個のトランジスタが使用されますが、ダイナミック メモリでは 1 ~ 2 個のトランジスタが使用されます。 したがって、動的メモリは静的メモリよりもはるかに安価ですが、同時に非常に遅くなります。 現在、RAM チップはダイナミック メモリに基づいて製造されています。

プロセッサと RAM の速度の比率のおおよその変化:

したがって、プロセッサが常に RAM から情報を取得すると、低速の動的メモリを待つ必要があり、プロセッサは常にアイドル状態になります。 同じケースで、スタティック メモリを RAM として使用すると、コンピュータのコストが数倍に増加します。

だからこそ、合理的な妥協案が開発されたのです。 RAM の大部分はダイナミックなままですが、プロセッサにはスタティック メモリ チップをベースとした独自の高速キャッシュ メモリが搭載されています。 そのボリュームは比較的小さく、たとえば、2 次キャッシュのサイズはわずか数メガバイトです。 ただし、最初の IBM PC コンピューターの RAM 全体は 1 MB 未満であったことを覚えておく価値があります。

さらに、キャッシュ テクノロジの導入の妥当性は、RAM に配置されているアプリケーションごとにプロセッサへの負荷が異なり、その結果、他のアプリケーションに比べて優先処理が必要なデータが大量に存在するという事実にも影響されます。

キャッシュ履歴

厳密に言うと、キャッシュ メモリがパーソナル コンピュータに移行する前に、すでに数十年にわたってスーパーコンピュータで成功的に使用されていました。

i80386 プロセッサをベースとした PC に、わずか 16 KB のキャッシュ メモリが初めて登場しました。 現在、最新のプロセッサは、第 1 (最小サイズの最速キャッシュ - 通常 128 KB) から第 3 (最大サイズの最も遅いキャッシュ - 最大数十 MB) まで、さまざまなレベルのキャッシュを使用しています。

当初、プロセッサの外部キャッシュは別のチップ上にありました。 しかし、時間が経つと、キャッシュとプロセッサの間にあるバスがボトルネックになり、データ交換が遅くなります。 最新のマイクロプロセッサでは、キャッシュ メモリの第 1 レベルと第 2 レベルの両方がプロセッサ コア自体に配置されています。

長い間、プロセッサーには 2 つのキャッシュ レベルしかありませんでしたが、Intel Itanium CPU は、すべてのプロセッサー コアに共通の第 3 レベルのキャッシュを初めて搭載しました。 4 レベルのキャッシュを備えたプロセッサの開発もあります。

キャッシュのアーキテクチャと原則

現在、キャッシュ メモリの構成には主に 2 つのタイプが知られています。これらは、サイバネティクス分野における最初の理論的発展であるプリンストン アーキテクチャとハーバード アーキテクチャに由来しています。 プリンストン アーキテクチャはデータとコマンドを保存するための単一のメモリ空間を意味しますが、ハーバード アーキテクチャは別個のメモリ空間を意味します。 ほとんどの x86 パーソナル コンピュータ プロセッサは、別のタイプのキャッシュ メモリを使用します。 さらに、最新のプロセッサには 3 番目のタイプのキャッシュ メモリも登場しています。これは、オペレーティング システムの仮想メモリ アドレスから物理メモリ アドレスへの変換を高速化するために設計された、いわゆる連想変換バッファです。

キャッシュ メモリとプロセッサ間の相互作用の簡略図は次のように説明できます。 まず、プロセッサは、プロセッサが必要とする情報が最も高速な 1 レベル キャッシュに存在するかどうかをチェックし、次に 2 レベル キャッシュなどに存在するかどうかをチェックします。 必要な情報がどのキャッシュ レベルにも見つからない場合、それをエラーまたはキャッシュ ミスと呼びます。 キャッシュに情報がまったくない場合、プロセッサは RAM または外部メモリ (ハードドライブ) から情報を取得する必要があります。

プロセッサがメモリ内の情報を検索する順序:

これがプロセッサが情報を検索する方法です

キャッシュ メモリの動作と、RAM だけでなくプロセッサのコンピューティング ユニットとの相互作用を制御するために、特別なコントローラがあります。

プロセッサコア、キャッシュ、RAMの相互作用を組織化するスキーム:

キャッシュ コントローラーは、プロセッサ、RAM、キャッシュ メモリ間の重要なリンクです。

データ キャッシュは、多くのテクノロジと数学的アルゴリズムを使用する複雑なプロセスであることに注意してください。 キャッシュで使用される基本概念には、キャッシュ書き込み方法とキャッシュ アソシエイティビティ アーキテクチャがあります。

キャッシュ書き込みメソッド

キャッシュ メモリに情報を書き込むには、主に 2 つの方法があります。

  1. ライトバック方式 - データは最初にキャッシュに書き込まれ、次に特定の条件が発生したときに RAM に書き込まれます。
  2. ライトスルー方式 - データは RAM とキャッシュに同時に書き込まれます。

キャッシュアソシエティビティアーキテクチャ

キャッシュ連想アーキテクチャは、RAM からのデータをキャッシュにマップする方法を定義します。 キャッシュアソシエティビティアーキテクチャの主なオプションは次のとおりです。

  1. ダイレクトマップキャッシュ - キャッシュの特定のセクションが RAM の特定のセクションを担当します
  2. 完全連想キャッシュ - キャッシュの任意の部分を RAM の任意の部分に関連付けることができます。
  3. 混合キャッシュ (セットアソシアティブ)

通常、キャッシュ レベルが異なれば、異なるキャッシュ アソシアティビティ アーキテクチャを使用できます。 ダイレクトマップされた RAM キャッシュは最も高速なキャッシュ オプションであるため、このアーキテクチャは通常、大規模なキャッシュに使用されます。 さらに、フル アソシアティブ キャッシュではキャッシュ エラー (ミス) が少なくなります。

結論

この記事では、キャッシュ メモリの概念、キャッシュ メモリ アーキテクチャ、およびキャッシュ方法について紹介し、それが現代のコンピュータのパフォーマンスにどのような影響を与えるかを学びました。 キャッシュ メモリの存在により、プロセッサの動作が大幅に最適化され、アイドル時間が短縮され、その結果、システム全体のパフォーマンスが向上します。