核心微体系结构与Sandy Bridge之间的PMC

时间:2013-08-26 19:48:37

标签: performance events bridge

我现在正致力于芯片E5-4603(SandyBridge)上的电源建模项目。我读了几篇论文,介绍了一组基于绩效监测计数器的活动比率(比如模型的输入)。不幸的是,这些论文是针对Core微体系结构芯片的。

所以我的第一份工作是在Sandy Bridge芯片中找到这些(Core micoarthitecture)基于PMC的活动比率的对应物。

例如,在Core架构中,我们可以制定UOPS_RETIRED.ANY / CPU_CLK_UNHALTED.CORE_P,作为整个有序引擎的所谓活动比率(即前端,包括Fetch unit,DECODE unit等组件) 。),BPU除外,它可以用独立的活动比率BR_INST_DECODED / CPU_CLK_UNHALTED.CORE_P来表示。

相比之下,我在Sandy Bridge PMC中找到了类似的前端(也没有BPU):

UOPS_RETIRED.ALL / CPU_CLK_UNHALTED:THREAD_P(问题1,这是正确的吗?)

但是对于BPU来说,这有点不确定,因为我没有在SandyBridge中找到这样的事件,它与事件具有完全相同的含义

核心微架构中的

BR_INST_DECODED。

我只能找到一个不太相似的事件:BR_INST_RETIRED.ALL_BRANCHES。显然,根据他们的定义,BR_INST_DECODED和BR_INST_RETIRED.ALL_BRANCHES很容易区分,它们的区别通常不容忽视。 (问题2)在核心微架构中,BR_INST_DECODED在Sandy Bridge中是否有更好(更相似)的替代品。

在Core micoraarchitecture中,可以使用以下比率来表示整数计算操作的活动比率(这里只考虑正常整数计算操作,SIMD Integer操作独占):

(RS_UOPS_DISPATCHED_CYCLES.PORT_0 + RS_UOPS_DISPATCHED_CYCLES.PORT_1 + RS_UOPS_DISPATCHED_CYCLES.PORT_5 - FP_COMP_OPS_EXE-SIMD_UOPS_EXEC - BR_INST_RETIRED.ANY)/ CPU_CLK_UNHALTED:THREAD_P

很容易得到上述比率,因为所有的计算操作都在Core micoroarchitecture的无序引擎上的端口0,端口1和端口5上运行,并且可以通过排除它来轻松获得整数运算的统计数据。浮动部分,SIMD和分支操作。

(问题3)Sandy桥中提供的任何事件(或一组事件)是否可以像Core micoroarchitecture中的SIMD_UOPS_EXEC一样运行?或者以其他方式(实际上更直接的方式)是否有任何事件可以直接告诉整数运算的数量(也是SIMD整数运算独占)?

<问题4(问题4)Sandy Bridge的FSB(前端总线)监控是否有任何offcore(非核心)事件?

非常感谢!

0 个答案:

没有答案