コンピューターのどこにL1、L2、L3キャッシュがありますか?


32

コンピューターのどこにL1、L2、L3キャッシュがありますか?

キャッシュを使用して、メインメモリではなくキャッシュからデータと命令を選択することでパフォーマンスを向上させています。

以下は私の質問です

  1. L1キャッシュはどこにありますか?。CPUチップ上にありますか?
  2. L2キャッシュは正確にどこにありますか?

  3. L3キャッシュはどこにありますか?マザーボードにありますか?

最新のSMPプロセッサは3レベルのキャッシュを使用するので、キャッシュレベルの階層とそのアーキテクチャを理解したいと思います。


1
正確な階層は、プロセッサごとに異なります。自分のマシン上のキャッシュ階層を見つけるために、あなたはSysInternalのCoreInfo.exeユーティリティ(使用することができますtechnet.microsoft.com/en-us/sysinternals/cc835722.aspx

2
また、キャッシュが大きくなると(L3> L2> 1)、キャッシュ自体がコア自体からより遠くに位置します(たとえば、L1よりもL3へのアクセス遅延が大きくなります)。

回答:


48

これから始めましょう:

最新のSMPプロセッサは3レベルのキャッシュを使用するので、キャッシュレベルの階層とそのアーキテクチャを理解したいと思います。

キャッシュを理解するには、いくつかのことを知る必要があります。

CPUにはレジスタがあります。その値は直接使用できます。何も速くありません。

ただし、無限レジスタをチップに追加することはできません。これらのことはスペースを占有します。チップを大きくすると、より高価になります。その理由の1つは、より大きなチップ(より多くのシリコン)が必要なだけでなく、問題のあるチップの数が増えるためです。

(画像500 CMとの架空のウエハ2。私は、それから、各チップ50cmの10個のチップをカット2サイズで。そのうちの一つが壊れている。私はそれを破棄し、私はそれを9つの作業のチップを残しています。今、同じウェハとIカットを取りますそこから100チップ、それぞれ10倍小さい。壊れたチップの1つ。壊れたチップを捨てて、99個の動作中のチップが残っている。それは、私がそうしなかった損失のほんの一部である。より高い価格を求める必要があるチップ。追加のシリコンの価格以上のもの)

これが、小さくて手頃な価格のチップが必要な理由の1つです。

ただし、キャッシュがCPUに近いほど、より速くアクセスできます。

これも簡単に説明できます。電気信号は光速の近くを伝わります。それは高速ですが、それでも有限の速度です。最新のCPUはGHzクロックで動作します。それも速いです。4 GHzのCPUを使用する場合、電気信号はクロックティックごとに約7.5cm移動できます。それは7.5cmの直線です。(チップはストレート接続以外のものです)。実際には、チップが要求されたデータを提示したり、信号が戻ったりする時間が許されないため、7.5 cmを大幅に下回る必要があります。

要するに、キャッシュはできるだけ物理的に近いものにします。これは大きなチップを意味します。

これら2つのバランスを取る必要があります(パフォーマンスとコスト)。

L1、L2、およびL3キャッシュはコンピューターのどこにありますか?

PCスタイルのハードウェアのみを想定しています(メインフレームは、パフォーマンスとコストのバランスを含め、まったく異なります)。

IBM XT
オリジナルの4.77Mhz:キャッシュなし。CPUはメモリに直接アクセスします。メモリからの読み取りは次のパターンに従います。

  • CPUは、読み取りたいアドレスをメモリバスに配置し、読み取りフラグをアサートします。
  • メモリはデータをデータバスに置きます。
  • CPUは、データをデータバスからその内部レジスタにコピーします。

80286 (1982)
まだキャッシュがありません。低速バージョン(6Mhz)の場合、メモリアクセスは大きな問題ではありませんでしたが、高速モデルは最大20Mhzで実行され、メモリにアクセスするときに遅延が必要になることがよくありました。

次に、次のようなシナリオを取得します。

  • CPUは、読み取りたいアドレスをメモリバスに配置し、読み取りフラグをアサートします。
  • メモリがデータバスにデータを配置し始めます。CPUは待機します。
  • メモリはデータの取得を終了し、データバス上で安定しています。
  • CPUは、データをデータバスからその内部レジスタにコピーします。

これは、メモリの待機に費やされる余分なステップです。簡単に12ステップにすることができる最新のシステムでは、cacheがあります。

80386:(1985)
CPUは高速になります。クロックごと、およびより高いクロック速度での実行の両方。
RAMは高速になりますが、CPUほど高速ではありません。
その結果、より多くの待機状態が必要になります。一部のマザーボードは、マザーボードにキャッシュ(1 キャッシュ)を追加することでこれを回避します。

メモリからの読み取りは、データが既にキャッシュにあるかどうかのチェックから始まります。それがはるかに高速なキャッシュから読み取られる場合。80286で説明した手順と同じでない場合

80486:(1989)
これは、CPUにキャッシュを持つこの世代の最初のCPUです。
これは8KBの統合キャッシュであり、データと命令に使用されます。

この頃、マザーボードに256KBの高速静的メモリを2 キャッシュとして置くことが一般的になりました。したがって、CPUの1 キャッシュ、マザーボードの2 キャッシュ。

CPUロケーションと2次キャッシュがマークされた486マザーボード

80586 (1993)
586またはPentium-1は、スプリットレベル1キャッシュを使用します。データと命令用にそれぞれ8 KB。キャッシュは分割され、データと命令のキャッシュを特定の用途に合わせて個別に調整できるようになりました。CPUの近くにまだ小さいが非常に高速な1 キャッシュがあり、マザーボード上に2 キャッシュが大きいが低速です。(より大きな物理的距離で)。

同じペンティアム1エリアで、IntelはPentium Pro( '80686')を生産しました。モデルに応じて、このチップのボードキャッシュは256Kb、512KB、または1MBでした。また、はるかに高価であり、次の図で簡単に説明できます。

ペンティアムプロCPU、256 KBキャッシュモデルの画像

チップ内の半分のスペースがキャッシュによって使用されることに注意してください。これは256KBモデル用です。より多くのキャッシュが技術的に可能であり、一部のモデルは512KBおよび1MBキャッシュで作成されました。これらの市場価格は高かった。

また、このチップには2つのダイが含まれています。1つは実際のCPUと1 キャッシュ、もう1つは256KBの2 キャッシュを備えています。

ペンティアム-2

ペンティウム2は、ペンティウムプロコアです。経済的な理由から、2 キャッシュはCPUにありません。その代わりに、CPUとして販売されているものは、CPU(および1 キャッシュ)と2 キャッシュ用の個別のチップを備えたPCB です。

技術が進歩し、より小さなコンポーネントでチップを作成し始めると、実際のCPUダイに2 キャッシュを戻すことが経済的に可能になります。しかし、まだ分裂があります。非常に高速な1 キャッシュがCPUに寄り添っていました。CPUコアごとに1つの1 キャッシュと、コアの隣に、より大きくはあるが速度の低い2 キャッシュがあります。

ペンティアム2 'CPU'の写真(カバーの有無にかかわらず)

Pentium-3
Pentium-4
これは、pentium-3またはpentium-4では変わりません。

この頃、私たちはCPUをクロックできる速さの実用的な限界に達しました。8086または80286は冷却する必要がありませんでした。3.0GHzで動作するpentium-4は非常に多くの熱を発生し、非常に多くの電力を使用するため、1つの高速なCPUではなく2つの別個のCPUをマザーボードに配置する方が実用的です。

(2つの2.0 GHz CPUは、単一の同一の3.0 GHz CPUよりも少ない電力を使用しますが、より多くの作業を実行できます)。

これは3つの方法で解決できます。

  1. CPUをより効率的にし、同じ速度でより多くの作業を行うようにします。
  2. 複数のCPUを使用する
  3. 同じ「チップ」で複数のCPUを使用します。

1)進行中のプロセスです。それは新しいものではなく、止まらないでしょう。

2)早期に行われた(たとえば、デュアルPentium-1マザーボードとNXチップセットを使用)。これまでは、より高速なPCを構築するための唯一のオプションでした。

3)複数の「CPUコア」が単一のチップに組み込まれているCPUが必要です。(その後、混乱を増やすために、そのCPUをデュアルコアCPUと呼びました。マーケティングありがとうございました:))

最近では、混乱を避けるためにCPUを「コア」と呼んでいます。

これで、基本的に同じチップ上の2つのペンティアム4コアであるペンティアムD(デュオ)のようなチップを入手できます。

初期のペンティアム-D(2 P4コア)

古いpentium-Proの写真を覚えていますか?巨大なキャッシュサイズですか?この写真の2つの大きな領域を
ご覧ください。

2つ目のキャッシュを両方のCPUコアで共有できることがわかりました。速度はわずかに低下しますが、512KiB共有の2 キャッシュは、サイズが半分の2つの独立した2 キャッシュを追加するよりも高速であることがよくあります。

これはあなたの質問にとって重要です。

つまり、あるCPUコアから何かを読み取り、後で同じキャッシュを共有する別のコアから読み取ろうとすると、キャッシュヒットが発生します。メモリにアクセスする必要はありません。

プログラムはCPU間で移行するため、負荷、コアの数、スケジューラに応じて、同じデータを使用するプログラムを同じCPU(L1以下でのキャッシュヒット)または同じCPUで固定することにより、パフォーマンスを向上させることができます。 L2キャッシュを共有します(したがって、L1でミスを取得しますが、L2キャッシュの読み取りでヒットします)。

したがって、後のモデルでは、レベル2の共有キャッシュが表示されます。

開いているCore2 CPUの画像

最新のCPU向けにプログラミングしている場合、2つのオプションがあります。

  1. 邪魔しないで。OSは物事をスケジュールできる必要があります。スケジューラーはコンピューターのパフォーマンスに大きな影響を与え、人々はこれを最適化するために多くの努力を費やしました。奇妙なことをしたり、PCの特定のモデルを最適化したりしない限り、デフォルトのスケジューラーを使用したほうがよいでしょう。
  2. パフォーマンスのすべての最後のビットが必要であり、より高速なハードウェアがオプションではない場合、同じコアまたは共有キャッシュにアクセスするコア上の同じデータにアクセスするトレッドを残すようにしてください。


L3キャッシュについてはまだ言及していませんが、違いはありません。L3キャッシュも同じように機能します。L2より大きく、L2より遅​​い。そして、多くの場合、コア間で共有されます。存在する場合はL2キャッシュよりもはるかに大きく(それ以外の場合は意味がありません)、多くの場合すべてのコアで共有されます。

modernCPUwithL3.png


なんて素晴らしい記事でしょう!
lukas.pukenis 16

「しかし、512MBの共有2次キャッシュは」512KBだと思います。
lukas.pukenis 16

そのような素晴らしい答え!男を共有してくれてありがとう
samsamara

14

そのキャッシュはプロセッサの内部です。一部はコア間で共有され、一部は個別であり、実装に依存します。しかし、それらはすべてチップ上にあります。いくつかの詳細:インテルインテル®Core™i7プロセッサー、ここで撮影:

  • 各コアの32 KBの命令と32 KBのデータの一次キャッシュ(L1)
  • 各コアの256 KBの共有命令/データ2次キャッシュ(L2)
  • すべてのコア間で共有される8 MBの共有命令/データ最終レベルキャッシュ(L3)

プロセッサチップの写真(申し訳ありませんが、正確なモデルはわかりません)。キャッシュがチップ上のかなりの領域を占めることがわかります。

代替テキスト


1
チップごとにシリコンダイを意味する場合、キャッシュの最後のレベルはチップ外である可能性があります。例えば、IBMのzEC12(en.wikipedia.org/wiki/IBM_zEC12_ (microprocessor )は、6つのプロセッサーチップとL4キャッシュを備えた2つの共有キャッシュチップを備えたマルチチップモジュールを使用します。IntelのCrystal Wellは、L4オフチップキャッシュも提供しています(eDRAMを使用)。
ポールA.クレイトン14

5

キャッシュは、ほとんどの場合、最速のアクセスのためにオンチップです。以下は、L3キャッシュが強調表示されたクアッドコアIntel CPUダイを示す素晴らしい図です。CPUダイのこのような画像を見ると、通常、大きな均一な領域は、キャッシュとして使用されるオンチップメモリ​​のバンクです。

ネハレム・ダイ(http://www.legitreviews.com/article/824/1/)


5

最近では、キャッシュはすべてCPUダイ上にあります。以前はマザーボードやCPUドーターボードに配置されていたことがありましたが、オフチップキャッシュを使用する現在のプロセッサはないと思います。


1
最近の部分の+1 。昔は違いました。(たとえば、Cyrix / Pentium-1時代のマザーボードのL2キャッシュ)
ヘネス

0

L3についてはわかりませんが、L1 / L2は常にCPU上にあります。階層的には、基本的に、L1は通常命令キャッシュであり、L2とL3はデータキャッシュです。


L1は共有キャッシュ(命令およびデータキャッシュ)にすることができます。L1データとL1命令キャッシュを備えたCPUもあります。また、L2キャッシュは常に CPU上にあるとは限りません(L1でさえCPU上にある必要はありませんが、その場合は1台のコンピューターしか覚えていません)。
ヘネス

0

L1はCPUチップにあり、L2はプロセッサとメインメモリの間にありますが、あるシステムではL2はCPUチップにあり、あるシステムではL2はマザーボード自体にあり、L3は常にあることを知っておく必要がありますメインボードチップ上にあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.