2

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 バイト アクセスを表しますが、命令はその一部にしかアクセスしていない場合があります。このイベントは投機的なイベントです。

4

1 に答える 1

1

わかりました、ここに私の推測があります:

  1. データがキャッシュにない場合、キャッシュ アクセスは RAM メモリ アクセスを意味する可能性があり、CPU がストールする可能性があります。最終レベル キャッシュ (LLC) ミスを測定してみてください。1 つの LLC ミスは、RAM メモリへの 1 つのアクセスを意味します。

  2. 同時に実行している他のプログラムはありますか? 存在する場合は、プロセッサが停止しているか、測定しているキャッシュ ミスが発生している可能性があります。

  3. クロックサイクルごとに1つのロード命令と1つのストア命令を発行できると確信しているため、クロックサイクルごとに2つのキャッシュアクセスがあることはそれほど奇妙ではありません...

お役に立てば幸いです...

于 2012-08-02T21:50:25.817 に答える