過去20年間でL1キャッシュのサイズがあまり大きくならないのはなぜですか?


35

インテルのi486のは、 L1キャッシュの8キロバイトを持っています。インテルNehalemのは 32キロバイトL1命令キャッシュとコア当たり32キロバイトのL1データキャッシュを有します。

L1キャッシュの量は、クロックレートが増加した速度でほとんど増加していません。

何故なの?


リンゴとオレンジを比較しています。クロックレートは増加しましたが、キャッシュを増やす必要性とは相関がありません。あなたがより速く何かをすることができるからといって、より大きなバケツから利益を得るという意味ではありません。
ケルタリ

過剰なキャッシュと管理オーバーヘッドにより、システムの速度が低下する可能性があります。彼らはスイートスポットを見つけて、そこに残るでしょう。
Fiascoラボ

回答:


17

30KのWikipediaテキストは、大きすぎるキャッシュが最適でない理由の説明ほど有用ではありません。キャッシュが大きくなりすぎると、キャッシュ内のアイテムを見つけるまでの待ち時間(キャッシュミスの要因)が、メインメモリ内のアイテムを検索する待ち時間に近づき始めます。CPU設計者が目指す割合はわかりませんが、80-20のガイドラインに似ていると思います。80%の確率でキャッシュ内の最も一般的なデータを検索し、残りの20それを見つけるためにメインメモリに行かなければならない時間の割合。(またはCPU設計者が意図した比率は何でもかまいません。)

編集:80%/ 20%に近いとは思わないので、Xと1-Xを置き換えます。:)


6
「キャッシュが大きくなりすぎると、キャッシュ内のアイテムを見つけるための待ち時間(キャッシュミスの要因)が、メインメモリ内のアイテムを検索する待ち時間に近づき始めます。」これ本気か?たとえば、インストールされているRAMの量を2倍にしても、レイテンシは確実に増加しませんが、これがキャッシュに当てはまるのはなぜですか?また、これが問題である場合、新しいCPUでL2キャッシュが大きくなるのはなぜですか?私はこれの専門家ではありません、本当に知りたいです:)
sYnfo 2009年

2
ソフトウェアでのキャッシュに関する大きな長い説明を用意し、キャッシュがいつ成長してダンプ/再構築する必要があるかを測定しましたが、私はハードウェア設計者ではないことを認めるのが最善であると判断しました。:)どちらの場合でも、答えは減益の法則によって要約できると思います。すなわち、常により良いとは限りません。
JMD

3
低レベルでハードウェアをいじっていたが、実際にはデザイナーではないという長い歴史から、レイテンシは、サイズではなく、キャッシュの結合方法に関係しているように見えると思います。私の推測では、キャッシュに追加される余分なトランジスタは、全体的なパフォーマンスに対して他の場所でより効果的であることが証明されています。
ブライアン・ノブラウフ

1
@JMD私はそれでもその説明に興味があります;)コメントはおそらくこれに最適な場所ではありませんが、本当です。@ブライアンそれで、私がそれを正しく理解したら、彼らはL1キャッシュに入れるトランジスタを少なくし、同時にL2にもっと多く入れることを決めました。気にしないでください、私はちょうど好奇心が強いです:)
sYnfo 2009年

10

1つの要因は、待ち時間を短縮するために、TLB変換が完了する前にL1フェッチが開始されることです。十分に小さいキャッシュと十分に高い方法を使用すると、キャッシュのインデックスビットは仮想アドレスと物理アドレスで同じになります。これにより、物理的にタグ付けされた仮想インデックス付きキャッシュを使用して、メモリの一貫性を維持するコストがおそらく削減されます。


1
最も興味深い答え:)
GameDeveloper 14年

1
これが理由だと思いますが、数字を教えてください。x86アーキテクチャのページサイズは4096バイトです。キャッシュは、ページの変換が完了する前にキャッシュラインのエントリ(64バイト)を検索するキャッシュバケットを選択します。バケット内のエントリが多すぎるかどうかを判断する必要があるため、各バケットには8つのエントリしかありません。その結果、過去10年間、すべての高価なx86 cpusのL1データキャッシュには正確に32768バイト(512キャッシュライン)があります。
b_jonas

これを増やすのは非常に難しいので、CPUは中間レベルのキャッシュを追加するため、L2キャッシュとL3キャッシュが別々になりました。また、CPUはコードまたはデータにアクセスしているかどうかを知っているため、L1コードキャッシュとL1データキャッシュは分離されています。
b_jonas

8

キャッシュサイズは多くの要因の影響を受けます。

  1. 電気信号の速度(光の速度ではない場合、同じ大きさでなければなりません):

    • 1マイクロ秒で300メートル。
    • 1ナノ秒で30センチ。
  2. 経済的コスト(異なるキャッシュレベルの回路は異なる場合があり、特定のキャッシュサイズは価値がない場合があります)

    • キャッシュサイズを2倍にしてもパフォーマンスが2倍になることはありません(物理がそのサイズを機能させる場合でも)、サイズが2倍になるとパフォーマンスが2倍以上になります。
    • ウィキペディアでは、たとえば1MBを超えるキャッシュを作成する価値がないことを示すチャートを見つけることができます(実際にはより大きなキャッシュが存在しますが、それらはマルチプロセッサコアであることに留意する必要があります)。
    • L1キャッシュの場合、サイズとして64 Kbを便利にする他のグラフ(ベンダーは表示しません)が必要です。

L1キャッシュサイズが64kb後に変更されなかった場合、それはもはや価値がなかったためです。また、キャッシュについてより大きな「文化」があり、多くのプログラマーが「キャッシュフレンドリー」コードを記述し、かつ/またはprefetech命令を使用してレイテンシーを削減していることにも注意してください。

(数メガバイトの)配列内のランダムな場所にアクセスする簡単なプログラムを一度作成してみました:ランダム読み取りごとにページ全体がRAMからキャッシュに移動されたため、そのプログラムはほとんどフリーズしました。プログラムはすべての帯域幅を使い果たし、OSのリソースはほとんど残っていませんでした。


6

キャッシュが大きくなればなるほど、アクセスが遅くなると述べるだけで簡単に要約できると思います。キャッシュはRAMへの低速バス通信を減らすように設計されているため、キャッシュを大きくしても効果はありません。

プロセッサの速度は急速に増加しているため、同じサイズのキャッシュは、それに対応するために、より高速に実行する必要があります。したがって、キャッシュは(速度の点では)大幅に改善される可能性がありますが、ストレージの点では改善されません。

(私はソフトウェアの専門家ですので、これがひどく間違っていないことを願っています)


3

L1キャッシュから:

レベル1キャッシュ、またはプライマリキャッシュはCPU上にあり、32バイトのブロックで編成された命令とデータの一時的な保存に使用されます。一次キャッシュは、ストレージの最も高速な形式です。プロセッサの実行ユニットへのゼロ待機状態(遅延) インターフェイスを備えたチップに組み込まれているため、サイズが制限されます

SRAMはビットごとに2つのトランジスタを使用し、回路に電力が供給されている限り、外部支援なしでデータを保持できます。これは、データの内容を保持するために毎秒何度も更新する必要があるダイナミックRAM(DRAM)とは対照的です。

1997年の初めに発売されたIntelのP55 MMXプロセッサは、レベル1キャッシュのサイズが32 KBに増加したことで注目に値しました。その年の後半に発売されたAMD K6およびCyrix M2チップは、64KBのレベル1キャッシュを提供することにより、さらに資金を増やしました。64Kbは標準のL1キャッシュサイズのままですが、さまざまなマルチコアプロセッサが異なる方法で使用する場合があります。

編集:この答えは2009年からのものであり、CPUは過去10年間で大きく進化したことに注意してください。この投稿にたどり着いた場合、ここですべての答えを真剣に受け止めないでください。


一般的なSRAMセルは6つのMOSFETで構成されています。SRAMの各ビットは、2つの交差結合インバータを形成する4つのトランジスタ(M1、M2、M3、M4)に保存されます。ソース 2番目のソース
-lukecampbell

これは状況の単なる説明であり、理由については何も説明しません。
エオニル

@Eonil-私たちが望むなら、「なぜ」答えを提供できませんでした。ただし、パフォーマンスに対する利益の減少は、実行可能な合理的な説明です。質問が10年近く前に書かれたとき、パフォーマンスヒットを含めずにサイズを大きくすると、はるかに高価になりました。この回答は、少なくとも意図された質問に答えようとしました。
ラムハウンド

-4

実際、L1キャッシュサイズは、最新のコンピューターの速度の最大のボトルネックです。哀れなほど小さいL1キャッシュサイズは、価格のスイートスポットかもしれませんが、パフォーマンスではありません。L1キャッシュは、RAMアクセスの400倍低速とは異なり、GHzの周波数でアクセスでき、プロセッサの動作と同じです。現在の2次元設計に実装するのは高価で困難ですが、技術的に実行可能であり、最初に成功した企業は、コンピューターを何百倍も高速で動作させ、多くの主要なイノベーションを生み出すでしょう現在、高価でプログラムが困難なASIC / FPGA構成を介してのみアクセス可能です。これらの問題のいくつかは、現在数十年にわたるプロプライエタリ/ IPの問題と企業の貪欲に関係しています。エンジニアの小柄で効果のない幹部だけが内部の仕組みにアクセスでき、ほとんどの場合、費用対効果の高い難読化された保護主義者のナンセンスを絞り出すための行進命令が与えられます。過度に民営化された研究は、常にそのような技術的停滞または抑制をもたらします(航空宇宙および自動車で大手メーカーが見たように、すぐに医薬品になる予定です)。(企業の上司や株主ではなく)発明者や一般の人々に利益をもたらすオープンソースでより賢明な特許と企業秘密の規制は、ここで大いに役立つでしょう。はるかに大きなL1キャッシュを作成することは、開発者にとって非常に簡単なはずであり、これは数十年前に開発されるべきでした。もしあれば、コンピューターとそれらを使用する多くの科学分野でさらに前進するでしょう。そして、費用対効果の高い難読化された保護主義者のナンセンスを絞る行進命令を主に与えられている人。過度に民営化された研究は、常にそのような技術的停滞または抑制をもたらします(航空宇宙および自動車で大手メーカーが見たように、すぐに医薬品になる予定です)。(企業の上司や株主ではなく)発明者や一般の人々に利益をもたらすオープンソースでより賢明な特許と企業秘密の規制は、ここで大いに役立つでしょう。はるかに大きなL1キャッシュを作成することは、開発者にとって非常に簡単なはずであり、これは数十年前に開発されるべきでした。もしあれば、コンピューターとそれらを使用する多くの科学分野でさらに前進するでしょう。そして、費用対効果の高い難読化された保護主義者のナンセンスを絞る行進命令を主に与えられている人。過度に民営化された研究は、常にそのような技術的停滞または抑制をもたらします(航空宇宙および自動車で大手メーカーが見たように、すぐに医薬品になる予定です)。(企業の上司や株主ではなく)発明者や一般の人々に利益をもたらすオープンソースでより賢明な特許と企業秘密の規制は、ここで大いに役立つでしょう。はるかに大きなL1キャッシュを作成することは、開発者にとって非常に簡単なはずであり、これは数十年前に開発されるべきでした。もしあれば、コンピューターとそれらを使用する多くの科学分野でさらに前進するでしょう。過度に民営化された研究は、常にそのような技術的停滞または抑制をもたらします(航空宇宙および自動車で大手メーカーが見たように、すぐに医薬品になる予定です)。(企業の上司や株主ではなく)発明者や一般の人々に利益をもたらすオープンソースでより賢明な特許と企業秘密の規制は、ここで大いに役立つでしょう。はるかに大きなL1キャッシュを作成することは、開発者にとって非常に簡単なはずであり、これは数十年前に開発されるべきでした。もしあれば、コンピューターとそれらを使用する多くの科学分野で、私たちはさらに先を行くでしょう。過度に民営化された研究は、常にそのような技術的停滞または抑制をもたらします(航空宇宙および自動車で大手メーカーが見たように、すぐに医薬品になる予定です)。(企業の上司や株主ではなく)発明者や一般の人々に利益をもたらすオープンソースでより賢明な特許と企業秘密の規制は、ここで大いに役立つでしょう。はるかに大きなL1キャッシュを作成することは、開発者にとって非常に簡単なはずであり、これは数十年前に開発されるべきでした。もしあれば、コンピューターとそれらを使用する多くの科学分野で、私たちはさらに先を行くでしょう。はるかに大きなL1キャッシュを作成することは、開発者にとって非常に簡単なはずであり、これは数十年前に開発されるべきでした。もしあれば、コンピューターとそれらを使用する多くの科学分野で、私たちはさらに先を行くでしょう。はるかに大きなL1キャッシュを作成することは、開発者にとって非常に簡単なはずであり、これは数十年前に開発されるべきでした。もしあれば、コンピューターとそれらを使用する多くの科学分野で、私たちはさらに先を行くでしょう。

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