1

Ivy PAPIBridge でのイベントについていくつか質問があります。

  1. SDM 表 19-5 (第 3 世代インテル® Core™ i7、i5、i3 プロセッサーのプロセッサー・コアにおける非アーキテクチャー・パフォーマンス・イベント) に基づくと、Ivy Bridge にはCYCLE_ACTIVITY.CYCLES_LDM_PENDINGCYCLE_ACTIVITY.CYCLES_L1D_PENDINGおよびという名前のカウンターがありCYCLE_ACTIVITY.CYCLES_L2_PENDINGます。しかし、 を試してみるとpapi_native_avail、これら 3 つだけでなく、 、 、 など、STALLSそれぞれに対応するイベントも取得されました。また、とイベントで別の数字も持っています。だから問題は、それらの違いは何ですか。CYCLE_ACTIVITY.STALLS_LDM_PENDINGCYCLE_ACTIVITY.STALLS_L1D_PENDINGCYCLE_ACTIVITY.STALLS_L2_PENDINGCYCLESSTALLS

  2. Intel 64 and IA-32 Architectures Optimization Reference Manual Appendix B.3.2.3 で言及されているすべてのイベントはSTALLSイベントであり、実際にはイベントではなく SDM で言及されていないため、この質問は上記の質問に関連していCYCLESます。問題は、それらがどうあるべきかということCYCLESですSTALLS。また、B.3.2.3 で述べたメモリ バウンドのキャラクタライゼーションを行うには、どれを使用すればよいですか?

  3. 上記の付録 B.3.2.3 には、メモリ サブシステムのさまざまなレベルの境界を計算する方法に関するいくつかの式があります。私が混乱していたことの 1 つは、上記の STALLS イベントを使用して測定を行ったときに、STALLS_L2_PENDINGよりも大きな数値が得られSTALLS_L1D_PENDINGたことですが、そのセクションには次の式があります。

%L2 Bound = (CYCLE_ACTIVITY.STALLS_L1D_PENDING - CYCLE_ACTIVITY.STALLS_L2_PENDING) / CLOCKS

これは私の測定が間違っているということですか?%L2 Boundそうでない場合、ゼロを超えるため、どのように計算できますか。

ソースコードは次のリンクにあります: https://github.com/yqzhang/SMTM/blob/master/native/native.c

誰かがこれで私を助けてくれますか?

4

0 に答える 0