6

コードが L2 キャッシュからできるだけフラッシュされないようにしたいと考えています。

C++ / C# でそれをどのように達成し、どのように責任を負わせますか。

編集:代わりにL2キャッシュミスの数を収集できますか? 回答: はいWindows プラットフォームで各プロセスの L2 キャッシュ ミス カウントを取得できますか?

4

2 に答える 2

3

人々はこの分野の情報を提供することに消極的であるようです (c++ または c# は関係ありません)。そのため、厳格なルールやレシピのセットではなく、一連のアプローチを使用する独自の戦略を作成する必要があるでしょう。

Windows アプリケーションの最大ヒット/ミス率を達成するには、おそらく次のようにします。

  • アプリケーション専用の物理 CPU を使用して、他のプロセスがそれを使用していないことを確認する、ハイパースレッディングを無効にする、BIOS を使用する
  • 問題のコードのサイズが、その CPU コアの L2 キャッシュよりも小さいことを確認してください。
  • コードに明示的にキャッシュからフラッシュされるものがないことを確認してください (例: C# のメモリ バリア)。
  • L2 ミス カウントを監視します
于 2013-01-21T14:41:00.720 に答える
0

この質問は、最新の x86 CPU でキャッシングがどのように機能するかについての誤解に基づいているようです。たとえば、「L3 ではなく L2」と表示されます。最近のほとんどすべての x86 CPU (Intel と AMD の両方) では、L3 キャッシュの代わりに L2 キャッシュにデータを格納することはできません。L3 キャッシュにデータが存在しないと、L2 キャッシュにデータが存在しないことを示し、コアが他のコアにデータがキャッシュされていないと見なすことができるため、これによりキャッシュ コヒーレンシが失敗します。

率直に言って、CPU がどのように機能するかをよく知らない人は、キャッシュ内のデータを制御しようとするべきではありません。そもそもそれらの CPU を設計した人々よりも優れたものを作っていたら、それは奇跡です。

于 2013-01-17T15:09:09.783 に答える