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

:

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

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

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

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

(画像は500cm2の想像上のウェーハ。 私はそれから10個のチップをカットし、各チップのサイズは50cm2です。 そのうちの一つが壊れています。 私はそれを破棄し、私はそれを9作業チップを残しています。 今、同じウェハを取ると、私はそれから100チップをカットし、それぞれ10倍の小さなものにしました。 壊れた場合はそのうちの一つ。 私は壊れたチップを捨て、私は99の作業チップを残しています。 それは私がそうでなければ持っていたであろう損失のほんの一部です。 より大きなチップを補うために、私はより高い価格を求める必要があります。 余分なシリコンの価格だけではありません)

これは、私たちが小さくて手頃な価格のチップを望む理由の一つです。

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

これも簡単に説明でき、電気信号は光速に近い速度で移動します。 それは速いですが、まだ有限の速度です。 GHzのクロックで現代のCPUの作業。 それも速いです。 私が4GHzのCPUを使用すると、電気信号は時計の目盛りごとに約7.5cm移動することができます。 それは直線の7.5cmである。 (チップはストレート接続以外のものです)。 それはチップが要求されたデータを提示するために、信号が戻って移動するための任意の時間を許可していないので、実際には、それらの7.5cmよりも

結論として、キャッシュは物理的にできるだけ近くにしたいと考えています。 大きい破片を意味するかどれが。

これら二つはバランスをとる必要があります(性能対コスト)。

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

Pcスタイルのハードウェアのみを想定しています(メインフレームはパフォーマンス対 コストバランス);

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

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

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

次のようなシナリオが得られます:

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

これは、メモリを待つのに費やされる余分なステップです。 簡単に我々はキャッシュを持っている理由である12ステップ、することができ、近代的なシステムで。

80386: (1985)
Cpuはより速くなります。 クロックごとに、そしてより高いクロック速度で実行することによ
RAMは高速になりますが、Cpuほど高速ではありません。
その結果、より多くの待機状態が必要になります。いくつかのマザーボードは、マザーボード上のキャッシュ(それは第1レベルのキャッシュになります)を追加することによって、これを回避します。

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

80486: (1989)
これは、CPU上にいくつかのキャッシュを持っているこの世代の最初のCPUです。
これは8KBの統一キャッシュであり、データと命令に使用されることを意味します。

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

486 CPUの位置と2番目のレベルのキャッシュがマークされたマザーボード

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

同じpentium1エリアでIntelはPentium Pro(’80686’)を生産しました。 モデルによっては、このチップには256kb、512KB、または1MBのキャッシュが搭載されていました。 それはまた、はるかに高価であり、次の図で説明するのは簡単です。

pentium Pro CPUの画像、256KBキャッシュモデル

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

また、このチップには二つのダイが含まれていることに注意してください。 実際のCPUと1番目のキャッシュを持つものと、256KBの2番目のキャッシュを持つ第二のダイ。

Pentium-2

pentium2はpentium proコアです。 経済的な理由から、2番目のキャッシュはCPUにありません。 代わりに、cpu(および第1キャッシュ)と第2キャッシュのための別々のチップを備えたCPU us A PCBを販売しています。

技術が進歩し、より小さな部品でチップを作成するようになると、2番目のキャッシュを実際のCPUダイに戻すことが財政的に可能になります。 しかし、まだ分割があります。 非常に高速な第1キャッシュは、CPUに寄り添った。 CPUコアごとに1つの第1キャッシュと、コアの隣に大きくても高速ではない第2キャッシュを備えています。

pentium2

Pentium-3
Pentium-4
これはpentium-3またはpentium-4では変更されません。

この頃、Cpuをどれだけ速くクロックできるかという実用的な限界に達しています。 8086または80286は冷却を必要としませんでした。 3.0GHzで動作するpentium-4は非常に多くの熱を生成し、その多くの電力を使用するため、1つの高速CPUではなく、2つの別々のCPUをマザーボードに配置する方が実用的になります。

(2つの2.0GHz CPUは、単一の同一の3.0GHz CPUよりも消費電力が少なくなりますが、より多くの作業を行うことができます)。

これは三つの方法で解決することができます:

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

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

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

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

これらの日、私たちは混乱を避けるためにCPUを”コア”と呼んでいます。

これで、pentium-D(duo)のようなチップが得られます。

初期のpentium-D(2つのP4コア)

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

その2番目のキャッシュを両方のCPUコア間で共有できることが判明しました。 速度はわずかに低下しますが、512kibの共有2番目のキャッシュは、サイズの半分の独立した2番目のレベルのキャッシュを追加するよりも高速で

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

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

プログラムはCPU間で移行するため、負荷、コア数、スケジューラに応じて、同じデータを使用するプログラムを同じCPU(L1以下のキャッシュヒット)またはL2キャ

したがって、それ以降のモデルでは、共有レベル2キャッシュが表示されます。Open Core2CPUのイメージ

現代のCpu用にプログラミングしている場合は、2つのオプションがあります:

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

私はまだL3cacheについて言及していないことを認識していますが、違いはありません。 L3キャッシュは同じように動作します。 L2よりも大きく、L2よりも遅い。 そして、それはしばしばコア間で共有されます。 それが存在する場合は、L2キャッシュよりもはるかに大きく(それ以外の場合は意味がありません)、すべてのコアと共有されることがよくあります。

png

コメントを残す

メールアドレスが公開されることはありません。