1

我正在PAPI做一些测量和特征工作,我有几个关于常春藤桥事件的问题。

  1. 根据 SDM 表 19-5(第三代 Intel® Core™ i7、i5、i3 处理器的处理器内核中的非架构性能事件),Ivy Bridge 具有名为CYCLE_ACTIVITY.CYCLES_LDM_PENDINGCYCLE_ACTIVITY.CYCLES_L1D_PENDING的计数器CYCLE_ACTIVITY.CYCLES_L2_PENDING。但是,当我尝试 时papi_native_avail,我不仅得到了这三个,而且还得到STALLS了每个对应的事件,CYCLE_ACTIVITY.STALLS_LDM_PENDING包括CYCLE_ACTIVITY.STALLS_L1D_PENDINGCYCLE_ACTIVITY.STALLS_L2_PENDING。我也有不同的数字CYCLESSTALLS事件。所以问题是它们之间有什么区别。

  2. 这个问题与上述问题有关,因为在 Intel 64 and IA-32 Architectures Optimization Reference Manual 附录 B.3.2.3 中提到的所有事件都是STALLS事件,实际上在 SDM 中甚至都没有提到,而不是CYCLES事件。问题是它们应该是什么,CYCLES或者STALLS?我应该使用哪些来进行 B.3.2.3 提到的内存绑定表征?

  3. 上面提到的附录 B.3.2.3 中有一些关于如何计算不同级别的内存子系统的界限的公式。我发现令人困惑的一件事是,当我使用上述 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