2016-08-25 6 views
1

16コアマシンで16スレッドのマルチスレッドプログラム(多数のアトミック操作を含む)を実行しています。各スレッドが一意のCPU上で動作するようにスレッドの親和性を設定すると、プログラムの実行時間は、プログラムの非結合バージョンと比較して増加します。 perfを使用すると、スレッドコアアフィニティを使用すると、キャッシュミスが10%から30%に増加することがわかります。これはおそらく実行時間の増加の原因になります。アフィニティを使用するとキャッシュミスが増える可能性について、いくつか明記してください。アフィニティを設定すると実行時間が増加する

答えて

2

アフィニティを使用するとキャッシュミスが増える可能性がありますか?

これらはCPUキャッシュ各プロセッサ個々のキャッシュのセットすなわちがあるため。 は、例えば、2つのスレッドは同じデータを読み出す:

  • それらは同じコアP1にある場合、T1は、P1のキャッシュのすべてのレベルを逃すと、メモリに読み込ま。データがキャッシュにあります。 T2はP1のキャッシュを読み込み、ヒットします。こんにちは!
  • 異なるコアP1およびP2にある場合、T1はP1のすべてのキャッシュレベルをミスしてメモリに読み込みます。データはP1のキャッシュにあります。 T2はP2のすべてのレベルのキャッシュをミスしてメモリに読み込みます。

What is a cache miss

をご覧ください
関連する問題