タグ付けされた質問 「cpu-cache」


7
ループの順序が2D配列を反復するときにパフォーマンスに影響するのはなぜですか?
以下は、iとj変数を入れ替えた以外はほぼ同じ2つのプログラムです。どちらも異なる時間で実行されます。なぜこれが起こるのか誰かが説明できますか? バージョン1 #include <stdio.h> #include <stdlib.h> main () { int i,j; static int x[4000][4000]; for (i = 0; i < 4000; i++) { for (j = 0; j < 4000; j++) { x[j][i] = i + j; } } } バージョン2 #include <stdio.h> #include <stdlib.h> main () { int i,j; …

5
さまざまなキャッシュとメインメモリにアクセスするための概算コストは​​?
Intel i7プロセッサのメインメモリだけでなく、L1、L2、L3キャッシュにアクセスするためのおおよその時間(ナノ秒単位)を誰かに教えてもらえますか? これは特にプログラミングの問題ではありませんが、これらの種類の速度の詳細を知ることは、いくつかの低レイテンシのプログラミング課題にとって必要です。

15
CPUキャッシュを最大限に活用してパフォーマンスを向上させるコードをどのように記述しますか?
これは主観的な質問のように聞こえるかもしれませんが、私が探しているのは、これに関連して遭遇した特定のインスタンスです。 コード、キャッシュを効果的/キャッシュフレンドリーにする方法(キャッシュヒットを増やし、キャッシュミスをできるだけ少なくする)?両方の観点から、データキャッシュとプログラムキャッシュ(命令キャッシュ)、つまり、データ構造とコード構成に関連する、コード内のどの部分を、キャッシュを効果的にするために注意する必要があります。 コードキャッシュを効果的にするために、使用/回避しなければならない特定のデータ構造があるか、またはその構造のメンバーにアクセスする特定の方法などがあるか。 この問題については、プログラムの構造(if、for、switch、break、gotoなど...)、コードフロー(ifの内部、ifの内部などの場合)をフォロー/回避する必要がありますか? キャッシュを効率的なコードにすることに関する個々の経験を聞くのを楽しみにしています。プログラミング言語(C、C ++、アセンブリなど)、ハードウェアターゲット(ARM、Intel、PowerPCなど)、OS(Windows、Linux、S ymbianなど)などを使用できます。 。 多様性はそれを深く理解するのに役立ちます。

5
ライトバックとライトスルーキャッシング?
私の理解では、2つの方法の主な違いは、「ライトスルー」方法ではデータがキャッシュを介してメインメモリにすぐに書き込まれるのに対し、「ライトバック」方法ではデータが「後で」書き込まれることです。 まだ「遅い時間」にメモリを待つ必要があるので、「ライトスルー」の利点は何ですか?

1
Linuxで正確なCPUキャッシュ階層情報をプログラムで取得する
Linux上の現在のCPUのデータキャッシュ階層の正確な説明を取得しようとしています。個々のL1 / L2 / L3(およびおそらくL4)データキャッシュのサイズだけでなく、それらが分割または共有される方法もコア。 たとえば、私のCPU(AMD Ryzen Threadripper 3970X)では、各コアには独自の32 KBのL1データキャッシュと512 KBのL2キャッシュがありますが、L3キャッシュはコアコンプレックス(CCX)内のコア間で共有されます。つまり、それぞれ16 MBの8つの異なるL3キャッシュがあります。 このWindows上のCPU-Zのスクリーンショットの「キャッシュ」セクションは、基本的に私が探しているものです。 Windowsでこれらの情報を取得しても問題ありませんGetLogicalProcessorInformation()。 ただし、Linuxでは、sysconf()L1およびL2データキャッシュのコアごとのキャッシュサイズ(_SC_LEVEL1_DCACHE_SIZEおよび_SC_LEVEL2_DCACHE_SIZE)、またはL3キャッシュの合計サイズ(_SC_LEVEL3_CACHE_SIZE)のどちらかしか表示されないようです。 編集:VMWareでの lstopoの出力。仮想マシンには8つのコアがあります。L1およびL2キャッシュ情報は問題ありませんが、L3キャッシュサイズが正しくないようです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.