マルチスレッド プログラムでスレッド ローカル ストレージを使用すると、キャッシュ ミスが少なくなりますか?
編集:各スレッドには独自のメモリプールが与えられているため、最後にアクセスしたメモリがまだCPUキャッシュにある可能性が高くなりますか?
マルチスレッド プログラムでスレッド ローカル ストレージを使用すると、キャッシュ ミスが少なくなりますか?
編集:各スレッドには独自のメモリプールが与えられているため、最後にアクセスしたメモリがまだCPUキャッシュにある可能性が高くなりますか?
何より少ないキャッシュミス?
TLS は、異なるスレッドが異なるデータで動作することを保証する多くの方法の 1 つにすぎません (明らかな方法は、各スレッドのデータを独自のスタックに置くことです)。
スレッドが同じデータに書き込まない場合は、キャッシュの動作が向上しますが (他のすべてのコアの対応するキャッシュ ラインが無効になるため)、スレッドが異なるデータで動作することを保証するために使用する方法は、この点。
(ただし、TLS に関連するオーバーヘッドは他にもあります。これは魔法ではありませんし、特効薬でもありません。ほとんどの場合、これは間違った解決策です)
いいえ、キャッシュは実際にはスレッド プール サイズに関して編成されていないため、考えている選択とは無関係に機能します。