31

これが間違った場所である場合は申し訳ありませんが、検索したところ、常に別の答えが見つかりました。私の質問は:

どちらが速いですか?キャッシュまたは CPU レジスタ?

私によると、レジスタはデータを直接ロードして実行するものであり、キャッシュはCPUの近くまたは内部の単なるストレージ場所です。

私を混乱させるソースは次のとおりです。

キャッシュの場合は 2 | レジスタ用 1

http://in.answers.yahoo.com/question/index?qid=20110503030537AAzmDGp

キャッシュはより高速です。

http://wiki.answers.com/Q/Is_cache_memory_faster_than_CPU_registers

それで、それは本当にどれですか?

4

2 に答える 2

50

CPU レジスタは常に L1 キャッシュより高速です。一番近いです。その差は約3倍。

質問の根底にある物理学に惑わされることなく、これをできるだけ直感的にしようとしています。エレクトロニクスでは速度と距離の間に単純な相関関係があります。信号を遠ざけるほど、信号が破損することなくワイヤの反対側に信号を到達させることが難しくなります。これは、電子設計の「フリー ランチなし」の原則です。

当然のことながら、大きいほど遅くなります。何かを大きくすると、必然的に距離が大きくなるからです。しばらくの間自動化されていたもので、チップの機能サイズを自動的に縮小すると、より高速なプロセッサが生成されました。

プロセッサ内のレジスタ ファイルは小さく、物理的に実行エンジンの近くにあります。プロセッサから最も離れているのは RAM です。ケースを開けると、実際に2 つの間のワイヤーが見えます。間には、これら 2 つの正反対の速度の間の劇的なギャップを埋めるように設計されたキャッシュがあります。すべてのプロセッサには L1 キャッシュがあり、比較的小さく (通常は 32 KB)、コアの最も近くに配置されています。さらに下には L2 キャッシュがあり、比較的大きく (通常は 4 MB)、コアから離れた場所にあります。より高価なプロセッサには、L3 キャッシュもあり、より大きく、離れています。

于 2013-01-24T16:36:59.430 に答える
23

特に x86 アーキテクチャの場合:

  • レジスタからの読み取りには、0 または 1 サイクルのレイテンシがあります。
  • レジスタへの書き込みのレイテンシは 0 サイクルです。
  • 読み取り/書き込み L1 キャッシュには 3 ~ 5 サイクルのレイテンシがあります (アーキテクチャの年代によって異なります)
  • 実際のロード/ストア要求は、ライトバック バッファおよびストア転送機能により、0 または 1 サイクル以内に実行される場合があります (詳細は後述)。

インテル Core 2 CPU (およびそれ以前のモデル) では、その設計により、レジスターからの読み取りに 1 サイクルのレイテンシーが発生する可能性があります。同時に実行される命令が多数の異なるレジスターから読み取られている場合、CPU のレジスター バンクはすべての要求を一度に処理することができません。シングルサイクル。この設計上の制限は、2010 年以降に消費者向け市場に投入された x86 チップには存在しません (ただし、2010/11 でリリースされた一部の Xeon チップには存在します)。

L1 キャッシュのレイテンシはモデルごとに固定されていますが、古いモデルに戻ると遅くなる傾向があります。ただし、次の 3 つの点に注意してください。

  1. 最近の x86 チップには、サイクル レイテンシが 0 のライトバック キャッシュがあります。値をメモリに格納すると、値はそのキャッシュに格納され、命令は 1 サイクルでリタイアできます。メモリ レイテンシは、ライトバック キャッシュを満たすのに十分な数の連続した書き込みを発行した場合にのみ表示されます。ライトバック キャッシュは、2001 年頃からデスクトップ チップの設計で注目されてきましたが、ARM ベースのモバイル チップ市場では、ごく最近まで広く見られませんでした。

  2. 最近の x86 チップには、ライトバック キャッシュからのストア フォワーディングがあります。アドレスを WB キャッシュに保存し、数命令後に同じアドレスを読み戻すと、CPU は L1 メモリにアクセスする代わりに、WB キャッシュから値を取得します。これにより、L1 リクエストのように見えるものの目に見えるレイテンシが 1 サイクルに短縮されます。しかし実際には、その場合、L1 はまったく参照されません。ストア フォワーディングには、適切に機能するための他のルールもいくつかあります。これも、現在市場で入手可能なさまざまな CPU 間で大きく異なります (通常、128 ビットのアドレス アライメントと一致するオペランド サイズが必要です)。

  3. ストア フォワーディング機能は、CPU が高速な部分ビット チェック (チップによっては通常 10 ~ 14 ビット) に基づいてアドレスがライトバック バッファーにあると判断する場合に、検知を生成する可能性があります。完全なチェックで検証するために余分なサイクルを使用します。それが失敗した場合、CPU は通常のメモリ要求として再ルーティングする必要があります。このミスにより、適格な L1 キャッシュ アクセスに 1 ~ 2 サイクルのレイテンシが追加される可能性があります。私の測定では、たとえば、AMD の Bulldozer ではストア フォワーディング ミスが頻繁に発生します。L1 キャッシュのレイテンシが、文書化されている 3 サイクルよりも約 10 ~ 15% 高くなるように十分です。IntelのCoreシリーズではほぼ問題ありません。

主な参考文献: http://www.agner.org/optimize/ 、具体的にはhttp://www.agner.org/optimize/microarchitecture.pdf

そして、ウィキペディアのさまざまな CPU の一覧ページのアーキテクチャ、モデル、およびリリース日の表を使用して、その情報を手動でグラフ化します。

于 2013-01-24T15:57:16.947 に答える