【发布时间】:2011-05-07 06:21:22
【问题描述】:
我听说有 AMD 处理器可以让您测量 缓存命中和未命中。我想知道 Intel Core Duo 机器上是否也有这样的功能,或者它们是否还不支持。
【问题讨论】:
标签: performance x86 intel processor intel-pmu
我听说有 AMD 处理器可以让您测量 缓存命中和未命中。我想知道 Intel Core Duo 机器上是否也有这样的功能,或者它们是否还不支持。
【问题讨论】:
标签: performance x86 intel processor intel-pmu
如果您在 Linux 上工作,哥伦比亚大学正在开发一个名为 LiMiT 的有趣库,它可以快速读取性能计数器并虚拟化它们以避免进程启动和停止、在处理器之间移动等问题. 我目前正在与开发人员一起上课,尽管我自己与该项目没有任何关系。
【讨论】:
是的,从远古的 Pentium Pro 开始就有很多硬件性能计数器。
Linux 中的 Oprofile 和 perf,Linux/Windows 中的 Vtune,MacOSX 中的 Shark 都可以使用它们。
英特尔架构文档中列出了所有计数器(第 3B 卷,第 30 章;附录 A 中的列表): http://www.intel.com/products/processor/manuals/
甚至 Atom 也有一些性能寄存器。
这里有一个针对不同 CPU 的好列表 http://oprofile.sourceforge.net/docs/
【讨论】:
我个人通过执行指令 rdtsc 的程序集包装器使用时间戳计数器。然后我得到一个无符号 64 位整数,其中包含自处理器上电以来经过的内部时钟周期数。两次读数之间的差异是执行其间的一段代码所需的代码周期数。可以以相同的方式访问缓存命中读数的指令。
如果没有相关的时间框架,我很难理解通过读取缓存计数器得出什么结论。此时间范围不应太长,否则任务切换或中断可能会影响该值。
根据 Microsoft 的说法,如果在处理器上启用了降速功能(以降低能耗),则 rdtsc 指令可能不准确,应牢记(或关闭!)。
【讨论】:
This document 当然暗示英特尔酷睿双核处理器可以提供您所寻找的信息。我想在英特尔网站上搜索一下也很有用。
【讨论】: