問題タブ [cpu-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - CPU キャッシュの影響を考慮して、.net アプリケーションをどのようにプロファイリングしますか?
私が知っているすべての .net プロファイラーは、CPU キャッシュの影響を考慮していません。
CPU キャッシュからフィールドを読み取ると、メイン メモリから読み取るよりも 100 倍速くなる可能性があることを考えると、これは大きな要因になる可能性があります。(私は答えでこれを説明しなければなりませんでした)
プロファイラーが遅いと言うループを高速化するために長いタイマーを費やす人が多すぎるのを見てきました。
たとえば、データ アクセスで CPU キャッシュが不足しているかどうかを確認したり、より信頼できる基本的なプロファイリング結果を取得したりしたいと考えています。
過去に、データをよりコンパクトにすることですべてが CPU キャッシュに収まるか、データがアクセスされる他のキャッシュを変更すると大きな効果が得られることを発見しました。例えば
それなら良い
配列が CPU キャッシュに収まらない場合でも、そのタイプの改善を見つけるのは非常に困難です。
CPU キャッシュにうまく収まるようにデータを小さくするために CPU サイクルを増やすと、多くのシステムが分散する可能性がありますが、ほとんどのプロファイラーは別の方向を示します。
cpu-registers - CPU レジスタと CPU キャッシュは異なりますか?
CPU レジスタと CPU キャッシュは異なりますか?
caching - ダイレクト マップ キャッシュ
ダイレクト マップ キャッシュは 16 ブロックで構成されます。メイン メモリには、それぞれ 8 バイトの 16K ブロックが含まれます。メイン メモリのアドレス形式 (各フィールドのサイズを意味します) は何ですか。
フィールドが Tag|Block|Offset であることはわかっています。それぞれのサイズを取得する方法がわかりません。
memory-management - ARM Cortex-A8:キャッシュ使用率を測定する方法は?
Freescaleのi.MX515EVK、ARM Cortex-A8 / Ubuntuプラットフォームを持っていますが、残念ながら、ボード上のLinuxカーネルはOprofilerやZoom Profilerなどの有名なプロファイラーの一部をサポートしていません(ZoomはARMプロセッサをサポートしていますが、内部的にはサポートしています) 、キャッシュ使用率に関する非常に詳細なレポートを提供するOprofilerドライバーを使用します。
Cortex-A8には、32KBの命令キャッシュとデータキャッシュ、および256KBのL2キャッシュがあります。現在、私の画像処理アルゴリズムが実行されているとき、私はそれらの使用法について完全に盲目です。
プロファイラーを使用してキャッシュのヒットとミスを見つける以外に、他の方法はありますか?
performance - さまざまなキャッシュとメインメモリにアクセスするためのおおよそのコストは?
L1、L2、L3キャッシュ、およびIntel i7プロセッサのメインメモリにアクセスするためのおおよその時間(ナノ秒単位)を教えてもらえますか?
これは特にプログラミングの問題ではありませんが、これらの種類の速度の詳細を知ることは、いくつかの低遅延プログラミングの課題に必要です。
c++ - LUT などの L1/L2 キャッシュの動作は何ですか?
たとえば、512KB の 64 ビット double 型の LUT を想定します。一般的に言えば、CPU はどのようにして構造を L1 または L2 にキャッシュしますか?
例: 中央の要素にアクセスします。LUT 全体をキャッシュしようとしますか、それともその一部だけをキャッシュしようとしますか?たとえば、中央の要素とそれに続く n 個の要素をキャッシュしますか?
CPU は、L2 キャッシュに何を保持するかを決定するためにどのようなアルゴリズムを使用しますか? それが従う特定の先読み戦略はありますか
注: 私は x86 を想定していますが、他のアーキテクチャーが POWER、SPARC などでどのように機能するかを知りたいと思っています.
linux-kernel - 再起動する前に Core Duo キャッシュをフラッシュしますか?
L1/L2 キャッシュを介して Core Duo システムの RAM ロケーションに書き込んでいるとします。
RAM の永続的な場所に書き込みを行い、その後すぐに Linux カーネルをパニックに陥れるとします。この場所は永続的であるため、CPU の再起動中に再起動されることはなく、再起動後に取得されます。
Linux は再起動/パニックの一部として CPU キャッシュをフラッシュしますか?
CPU は再起動する前にキャッシュをフラッシュしますか?
または、手動で行う必要がありますか?どのように?
更新: 私のキャッシュはライトスルーではありません。
問題は、CPU 仕様でこの動作が定義されているかどうかです。
profiler - Xen でのキャッシュグラインド
CPU キャッシュを最大限に活用するように他の誰かが書いた C++ で書かれたアプリケーションがあります。このアプリケーションは、準仮想化を使用しているゲスト Ubuntu OS 上で実行されます。cachegrind を実行したところ、キャッシュ ミス率が非常に低くなりました。
私の OS は仮想化されているため、CPU キャッシュが私のアプリケーションで十分に使用されていることを示す上で、これらの値が実際に正しいと確信できますか?
cpu - その時点で実行されないコードの部分を含む大きなバイナリは、レベル 2 CPU メモリの使用に影響しますか?
L2 が満たされていない場合、CPU は大幅に高速に動作するようです。プログラマーは、コードの一部が常に実行されなくても、最終的にはバイナリでより小さくなるものをコーディングするほうがよいでしょうか? たとえば、構成ファイルでのみオンになっているコードの一部です。
caching - ほとんどのプロセッサで、L1キャッシュのサイズがL2キャッシュのサイズよりも小さいのはなぜですか?
ほとんどのプロセッサで、L1キャッシュのサイズがL2キャッシュのサイズよりも小さいのはなぜですか?