私はプログラムのプロファイリングに cachegrind を長年使用しており、最近公式ドキュメントをもう一度チェックするために戻ってきました: https://valgrind.org/docs/manual/cg-manual.html
その中には、すべて 2000 年代半ばの CPU モデル、実装決定、およびシミュレーション モデルへの複数の参照があり、「最新の」プロセッサでは一部の動作が変更されたという記述もあります。
通常、LL キャッシュは L1 キャッシュのすべてのエントリを複製します [...] これは Pentium チップでは標準ですが、AMD Opterons、Athlon、Durons は排他的な LL キャッシュを使用します [...]
Cachegrind は、2004 年頃の主流のデスクトップ/サーバー プロセッサの典型的なブランチ プレディクタをシミュレートします。
最近のプロセッサはより優れた分岐予測子を備えています [...] Cachegrind の予測子の設計は、より洗練された間接分岐予測子の広範な展開に先立つ大規模なインストール ベースのプロセッサを代表するように、意図的に保守的です。特に、最新モデルの Pentium 4s (Prescott)、Pentium M、Core、および Core 2 には、Cachegrind によってモデル化されたよりも洗練された間接分岐予測子があります。
今、私は疑問に思っています
- 最新世代の CPU で開発する場合、これらの選択肢のうちいくつが 2021 年に適用されるか、
- cachegrind の実装は最新の CPU を反映するように更新されているが、マニュアルは古くなっているかどうか、
- 従来の動作のシミュレーションにより、最新の CPU で cachegrind が歪んだ結果を示すかどうか。
どんな洞察も大歓迎です!