L1キャッシュがL2キャッシュより速いのはなぜですか?


14

特定のCPUキャッシュメモリが他のCPUキャッシュメモリよりも高速である理由を理解しようとしています。キャッシュメモリをメインメモリなどと比較すると、メモリの種類(SRAMとDRAM)に違いがあり、アクセス速度に影響を与える可能性のあるローカリティの問題(オンチップとメモリバスを横断する必要がある)があります。しかし、L1とL2は一般に同じチップ上、または少なくとも同じダイ上にあり、同じタイプのメモリだと思います。それでは、なぜL1の方が速いのでしょうか?


9
そのように構築されているからです。
イグナシオバスケス-アブラムス14年

同じ種類のRAMを作成する方法は複数あります。いくつかの方法は、他の方法で構築されたRAMよりも高速なRAMをもたらします。
イグナシオバスケス-エイブラムス14年

より速くあなたのHDDと同じ理由あなたのDDR RAM ...
hassan789

1
関連:キャッシュサイズに関する私の答えとSOの質問では、マルチレベルキャッシュを使用する場合の速度と電力消費のトレードオフの理由についても説明しています。基本的に、キャッシュを超高速にすると、より多くの並列処理を行うために電力とダイ領域が消費され、最終レベルのキャッシュに必要な大きなサイズ/結合性との互換性がなくなります。
ピーター・コーデス

回答:


24

いいえ、同じ製造プロセスを使用する同じチップ上にあるにもかかわらず、同じタイプのRAMではありません。

すべてのキャッシュの中で、L1キャッシュは、適切な「ヒット」レートを提供するために必要な容量と比較して、可能な限り速いアクセス時間(最小の待ち時間)を持っている必要があります。したがって、より大きなトランジスタとより広い金属トラックを使用して構築され、速度とスペースと電力を犠牲にします。高レベルのキャッシュは容量が大きい必要がありますが、より遅くする余裕があるため、より密に詰め込まれたより小さなトランジスタを使用します。


3
これは私が探しているものです、ありがとう。違いについてさらに読むことができる良い情報源を知っていますか?
ConditionRacer 14年

いいえ、オフハンドではありません。これらのスペース/電力/時間のトレードオフの詳細、およびキャッシュ容量とアーキテクチャに関する選択は、製造元のプロセスの所有権の詳細と非常に密接に結びついているため、(もしあれば)ほとんど公開されていません。私は一般的な言葉でのみ話すことができます。
デイブツイード

10
また、L1は小さいため、信号の伝播にかかるクロックサイクルが少なくなります。多くの場合、L1のサイズは、1(または2)クロックでアクセス可能な最大メモリとして決定されます。
ブライアンドラモンド14年

6
ブライアンドラモンドのポイントに加えて、L1は通常、データタグの並列アクセスも使用します。L2は通常、最初にタグにアクセスし(ヒットした場合にどちらの方法を決定する)、次にデータにアクセスします。(通常、L2アクセスは、L1ミスが確認されたに開始されるため、有効レイテンシが増加します。)
ポールA.クレイトン14年

@BrianDrummond-ワイヤ負荷とゲートの深さの両方の点で小さい(コメントから明らかではないと思う)。
ショーンフーリハネ

5

L1は通常、デコードされた命令のストレージとして使用され、L2はシングルコアの一般的なキャッシュです。キャッシュが低いほどサイズは小さくなり、通常は高速になります。PCプロセッサの大まかな目安として:

L1キャッシュ:2-3クロックサイクルアクセス

L2キャッシュ:〜10クロックサイクルアクセス

L3キャッシュ:〜20-30クロックサイクルアクセス

L1キャッシュの設計では、キャッシュレイテンシを可能な限り低く抑えながら、ヒット率(キャッシュに目的の命令アドレスまたはデータアドレスが存在する確率)を最大化する必要があります。Intelは、3サイクルのレイテンシを持つL1キャッシュを使用します。L2キャッシュは1つ以上のL1キャッシュ間で共有され、多くの場合、はるかに大きくなります。L1キャッシュはヒット率を最大化するように設計されていますが、L2キャッシュはミスペナルティ(L1ミスの発生時に発生する遅延)を最小化するように設計されています。L3キャッシュを持つチップの場合、目的はチップの設計に固有です。Intelの場合、L3キャッシュは2002年に4ウェイマルチプロセッサシステム(Pentium 4 Xeon MPプロセッサ)で初めて登場しました。この意味で、L3キャッシュはマルチスレッド環境での遅延を大幅に削減し、FSBの負荷を軽減しました。当時の、

引用は、ソースと、ここで「Pinheddの」応答から。


1
L1は一般的にデータにも使用されますが、L2が共有されている間にL1データとL1命令が分離されていることがよくあります:Programmers.stackexchange.com/questions/44731/…)。
ガイサートン14年

1
プロセッサでは、L1レベルで個別の命令キャッシュとデータキャッシュを使用するのが一般的です。確かに、最新のx86およびSPARCチップにも当てはまります。また、一部のL1命令キャッシュは、デコードされた命令を保存しません。Pentium 4はデコードされた命令を保存していましたが、Intelは通常のIキャッシュに戻り、最近デコードされた命令キャッシュをチップに追加しました。
クレイグS.アンダーソン14年

3

速度がサイズに反比例する理由はいくつかあります。最初に思い浮かぶのは、導体の物理的支配です。信号の伝播は、光の速度からの何らかの要因に制限されます。操作は、メモリタイル内で最も長い距離を往復するために電気信号を受け取る限り時間がかかります。別の関連する理由は、クロックドメインの分離です。各CPUは独自のクロックジェネレーターで動作するため、CPUはマルチGHzクロックで動作できます。レベル1キャッシュは、システムで最速のCPUクロックで実行され、同期されます。一方、レベル2キャッシュは多くのCPUに対応する必要があり、異なる(遅い)クロックドメインで実行されています。L2クロックの速度が遅い(タイルが大きい)だけでなく、クロックドメインの境界を越えると、別の遅延が追加されます。それからもちろん、ファンアウトの問題があります(すでに言及されています)。


1

固有のパフォーマンス特性とは別に、ローカリティには役割もあります(L1はCPUに近い)。すべてのプログラマーがメモリについて知っておくべきことによると:

オンダイL2キャッシュでは、アクセス時間の大部分(おそらく大部分)がワイヤ遅延によって引き起こされることに注意するのは興味深いことです。これは物理的な制限であり、キャッシュサイズが大きくなると悪化します。これらの数値を改善できるのは、プロセスの縮小(たとえば、Meromの60nmからIntelのPenrynの45nmに縮小する)だけです。


これは主にキャッシュが大きい場合に当てはまると思います-これはすべての種類のプロセッサに当てはまるわけではありません(ただし、ワイヤの遅延は重要です)。
ショーンフーリハネ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.