如何查找 i7 处理器的每条指令的周期
Posted
技术标签:
【中文标题】如何查找 i7 处理器的每条指令的周期【英文标题】:How to find Cycles per instruction of an i7 processor 【发布时间】:2014-12-09 02:23:54 【问题描述】:我试图在带有 vtune 放大器 XE 2011 的 i7 处理器上查看程序的 CPI 值。(在 win8 x64 上) 根据教程,观点
硬件事件计数 硬件事件样本计数 轻量级热点 硬件问题将播下 CPI 值。但在我的版本中,我只有轻量级热点。事情是当我试图分析它时,它给出了一个“不支持的架构类型”的按摩。 谁能告诉我
我如何在 i7 x64bit win8 和使用 vtune 2011 上查看程序的 CPI?如果不可能,为什么? 或者 哪个版本(或任何其他方式)可以测量上述系统的 CPI?
【问题讨论】:
【参考方案1】:您需要升级到最新的 VTune 版本(2015 Update 1)才能获得新 CPU 的 CPI。
【讨论】:
【参考方案2】:2011 版在技术支持下已过时。 2011版太早了(支持Core(TM) 2处理器)。2013版可能支持i7处理器。
试试最新的试用版
【讨论】:
【参考方案3】:自从引入指令流水线和超标量架构以来,“每条指令的周期”就不再是一个度量标准了——这个概念变得毫无意义。
打个比方,在引入装配线后考虑福特的汽车工厂——除了它要生产 20 种不同型号的汽车,而且复杂程度各不相同,然后试图确定制造每辆汽车需要多少工人——你重新对执行的性质做出巨大的(错误的)假设。
【讨论】:
感谢您的回答。所以你是说获取CPI没用?不过还是可以的吧? 这是对的,但gmplib.org/~tege/x86-timing.pdf 让您对某些操作(例如,64 位除法很昂贵)的成本有一个整体的认识,这些操作是通过在循环中运行它们产生的。但实际上比这更复杂:有时您可以将指令 X 与指令 Y 并行运行,但不能与 Z 并行运行,因此它仍然是(有时有用的)简化。 @wicky 不,这真的不可能——即使你确实得到了一个数字,它也没有任何意义,而且你会因为这个数字是什么而做出错误的决定。跨度> @Dai 但我在想如果我们得到 cpi 值,我们对线程并发有一个想法,不是吗(较低的 cpi 比较高的好)实际上我正要使用它来比较 2代码(做同样的事情) 然而,CPI 仍然经常用于性能分析。一个有意义的原因是,您仍然可以比较函数 A 与函数 B 的平均 CPI(聚合平均指标比较)。当然,您不会用“2.57 与 3.234”来比较它,而是用“相对低”与“相对高”来比较。回到福特的类比:准确计算工人数量没有意义,但比较平均值仍然有用。跨界车装配线与掀背车装配线之间的工人数量。以上是关于如何查找 i7 处理器的每条指令的周期的主要内容,如果未能解决你的问题,请参考以下文章