如何计算单个指令中涉及的微操作/周期?

时间:2019-05-10 20:34:29

标签: assembly x86-64 benchmarking

我试图了解如何对单个指令进行基准测试,并撰写了以下英特尔基准测试文章:https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-32-ia-64-benchmark-code-execution-paper.pdf

因此,我们使用rdtsc来读取时钟周期数。但是,按照英特尔手册17.17 TIME-STAMP COUNTER中的规定,cpus以固定速率递增它,该速率可能不同于当前时钟频率。

  

对于奔腾4处理器,英特尔至强处理器[...]:   印记计数器以恒定速率递增。可以设置该速率   通过处理器的最大核心时钟与总线时钟之比   可以通过最大解析频率设置   处理器启动。

所以我有2个问题:

  1. 是否有办法获取像rdtsc这样的旧CPU的实际CPU时钟周期?
  2. 有没有一种方法可以测量某些指令所涉及的微指令数?特别是我想比较一下正在流水线指令而不是流水线指令时所需的uops的差异(例如,展开循环时重复同一条指令)

0 个答案:

没有答案