Red Hat Enterprise Linux Workstation リリース 6.2 (Santiago) を実行している AMD Opteron 6172 プロセッサのパフォーマンス カウンターを使用して、特定のアプリケーション (C で記述) を分析しようとしています。
AMD ネイティブ イベント CPU_CLK_UNHALTED を PAPI_TOT_CYC (合計サイクルをカウント) に使用し、DATA_CACHE_ACCESSES を PAPI_L1_DCA (L1 データ キャッシュ アクセスをカウント) に使用する PAPI v4.1.3.0 を使用しています。
私が経験した問題は、場合によってはキャッシュ アクセスの数が合計サイクル数よりも多いということです。私の理解では、キャッシュアクセスはCPUを停止させないので、合計サイクル内に収まるはずです。また、合計サイクル数を Opteron 6172 のクロック周波数で割ると、かなり正確な実行時間の見積もりが得られます。これにより、合計サイクル数は問題なく、問題はデータ キャッシュ アクセスのカウントにあると思われます。
私は papi の例に従ってすべてを開始しましたが、エラーはまったく発生しません。これが発生する理由についての助けや理由は大歓迎です。事前に感謝します。
http://support.amd.com/us/Processor_TechDocs/31116.pdf
- CPU_CLK_UNHALTED
CPU が (STPCLK または HLT 命令により) 停止状態にないクロック数。注: このイベントにより、システムのアイドル時間が IPC (または CPI) の測定値から自動的に除外され、OS がアイドル時に CPU を停止することが可能になります。OS が停止せずにアイドル ループに入った場合、そのような計算はアイドル ループの IPC の影響を受けます。
- DATA_CACHE_ACCESSES
ロードおよびストア参照のためのデータ キャッシュへのアクセス数。これには、特定のマイクロコードのスクラッチパッドへのアクセスが含まれる場合がありますが、これらは一般的にまれです。各インクリメントは 8 バイト アクセスを表しますが、命令はその一部にしかアクセスしていない場合があります。このイベントは投機的なイベントです。