問題タブ [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.

0 投票する
2 に答える
2149 参照

caching - L1ミスがL2アクセスと大きく異なる場合...TLB関連ですか?

私はいくつかのアルゴリズムでいくつかのベンチマークを実行し、それらのメモリ使用量と効率(L1 / L2 / TLBアクセスとミス)をプロファイリングしてきましたが、結果のいくつかは私にとって非常に興味深いものです。

包括的キャッシュ階層(L1およびL2キャッシュ)を考慮すると、L1キャッシュミスの数はL2キャッシュアクセス の数と一致するべきではありませんか?私が見つけた説明の1つは、TLBに関連するものです。仮想アドレスがTLBにマップされていない場合、システムは一部のキャッシュレベルでの検索を自動的にスキップします。これは合法だと思いますか?

0 投票する
1 に答える
469 参照

tlb - TLBの結合性(ウェイの数)を知る方法は?

TLBキャッシュのさまざまな方法を学ぶタスクがあります。どのアルゴリズムを使用する必要がありますか?

0 投票する
0 に答える
181 参照

android - Android を実行している ARM ビーグルボードのキャッシュ イベント サンプルはありません

Beagleboard Rev C4 と Beagleboard xM のパフォーマンス統計を収集しようとしています。

プロファイリング イベントを CPU_CYCLE に設定すると、Oprofile は完全に実行されますが、両方のボードで、キャッシュ関連のイベントをプロファイリングしようとすると、空のサンプル フォルダーが表示され、結果が得られません。

oprofile を実行してもエラーは発生しませんでした (カーネル メッセージにも表示されません)。

しかし、プロファイリングは失敗したようです。他のすべてのキャッシュ関連イベントについても同じ話です。何か間違ったことをしていますか、それともこれらの PMU は Beagleboards では利用できませんか?

0 投票する
5 に答える
31878 参照

caching - なぜ別々のicacheとdcacheが必要なのですか

命令キャッシュとデータキャッシュを別々にすることで何が得られるかを誰かに説明してもらえますか?これを説明する良いリンクへのポインタも高く評価されます。

0 投票する
2 に答える
4242 参照

caching - アルゴリズムの実行時に CPU キャッシュ ミスを検出する最良の方法は何ですか?

パフォーマンスの低いアルゴリズムがあり、CPU キャッシュ ミスが原因であると考えられます。それにもかかわらず、それらを検出する方法がないため、それを証明することはできません. アルゴリズムが生成する CPU キャッシュ ミスの数を知る方法はありますか? それらを検出できる任意の言語に移植できます。

前もって感謝します。

0 投票する
2 に答える
3438 参照

c++ - c/c++ で CPU キャッシュに静的メモリを割り当てる: 可能ですか?

CPUキャッシュに静的オブジェクトを明示的に作成することは可能ですか?これらのオブジェクトが常にキャッシュに保持されるようにすることで、RAMまたは神が禁止する-hdd仮想メモリに到達することでパフォーマンスが低下することはありませんか?

私は大規模な L3 共有キャッシュをターゲットにすることに特に関心があります。L1、L2、命令、またはその他のキャッシュをターゲットにするつもりはありません。存在する最大のオンダイ メモリ チャブだけです。

そして、これを投稿する前に検索した他のスレッドと区別するために明確にするために、私はキャッシュ全体を私有化することに興味はありません。ほんのわずかな、いくつかのクラスに相当する領域です。

0 投票する
1 に答える
752 参照

multithreading - x86 上の 2 つの結果の CPU ストアは、順序を維持しながらキャッシュにフラッシュされますか?

x86 CPU0 と CPU1 でそれぞれ 2 つのスレッドが実行されているとします。CPU0 で実行されているスレッドは、次のコマンドを実行します。

最初に CPU1 が所有する A を含むキャッシュ ラインと、CPU0 が所有する B を含むキャッシュ ライン。

2 つの質問があります。

  1. 私の理解が正しければ、両方のストアが CPU のストア バッファに入れられます。ただし、最初のストアA=1では、CPU1 のキャッシュを無効にする必要がありますが、2 番目のストアB=1は、それを含むキャッシュ ラインを所有しているため、すぐにフラッシュできます。x86 CPU がストア オーダーを尊重することはわかっています。B=1それは前にキャッシュに書き込まれないということA=1ですか?

  2. CPU1 で次のコマンドが実行されるとします。

ながら (B=0);
プリントA

x86 で常に 1 を出力するには、CPU0 との間に sfence を追加せずに、CPU1 のwhileprintコマンドの間に lfence のみを追加するだけで十分ですか?A=1B=1

0 投票する
1 に答える
2091 参照

jpa - 分散環境での JPA PersistenceContext

私の理解では、トランザクションは完了してもすぐにはフラッシュされません。それらはメモリ内のキャッシュに置かれ、EntityManager がそうすることが費用対効果が高いと判断した場合にのみ DB に書き込まれます。この場合、L1 キャッシュが使用されていると思いますが、間違っていたら訂正してください。

私の質問は、分散環境では、永続コンテキストによって使用されるキャッシュは分散されていますか?

0 投票する
2 に答える
626 参照

c++ - mmap 共有バッファー読み取りの問題

大きなメモリ バッファを割り当てるカーネル モジュールがあり、このバッファはユーザー空間に mmap されます。
モジュールはハードウェアからいくつかのデータを受信し、その前にフラグを付けて新しいデータをバッファに入れます。(メモリはゼロに初期化され、フラグは 1)。

ユーザー空間プログラムは、有効なデータへのポインターを返す前にループでフラグを読み取ります

コードの簡略版:

メモリ領域は共有としてマップされ、フル バッファ メモリ ダンプにより、バッファが正しく書き込まれていることが確認されます。

問題は、一定数の正しい読み取りの後、この関数が戻りを停止することです。
これはCPUキャッシングが原因でしょうか?それを回避し、読み取りがキャッシュからではなく RAM から毎回直接行われるようにする方法はありますか?

0 投票する
2 に答える
105 参照

compiler-construction - スタック、呼び出し規約、レジスタ、CPUなどを説明する本またはグラフィックビデオ

そのすべてのための1冊の本がありますか..悲しい部分は私がこれらすべてのことについて表面的な会話をすることができるということです。私はUniに行って、これらすべての科目でAを取得しましたが、スタックまたはメモリが実際にどのように見えるかを理解していません。

私はスレッドが実際に何であるかを「理解」しません。CPUキャッシュラインがどのように機能するか、および読み取り/書き込みバリアで無効化される方法。TLBなど。

どんな本でも、あるいは読むべき本の小さなコレクションでも、本当に役に立ちます。