【问题标题】:How to get the value of clock cycles in ticks using linux?如何使用 linux 获取时钟周期的值?
【发布时间】:2014-06-10 08:54:11
【问题描述】:

在 linux 中获取时间戳与 linux 的时钟周期相同。 我知道如何获取时间戳,但我现在不知道如何获取时钟周期。 有人能告诉我这两者有什么区别吗?? 有人可以给我一个时钟周期的小例子吗??

期待您的回复。

额外:我正在尝试使用简单标量模拟器在比萨架构中添加汇编指令以进行计时。对于我的指令,我应该访问时钟周期并将其存储在寄存器中。

【问题讨论】:

  • 大多数现代 CPU 的时钟频率会根据需求、温度等动态变化,因此计算 CPU 时钟周期非常困难 - 您通常需要为此访问 CPU 性能寄存器。
  • 感谢您的回复。能给我举个小例子吗?
  • 这取决于您使用的 CPU 以及您对性能寄存器的访问权限 - 对此 AFAIK 没有简单的“一刀切”的答案。
  • 顺便说一句,请确认您是想要 CPU 时钟周期,还是只想将经过的时间转换为刻度(这只是一个单位转换)?
  • 以下答案建议我使用clock_gettime。但是如何将其添加到性能寄存器中??

标签: c++ c linux timer clock


【解决方案1】:

嗯,有:

  1. Ticks. Modern kernels don't use them
  2. Timestamp counter,这是您可能喜欢用于高分辨率时间测量的工具,但您必须了解如何使用它进行无偏测量。
  3. 时钟,便携式clock_gettime,纳秒级分辨率,通常足以应付一切。

如果您想访问 CPU 性能寄存器,可以从 Intel® Performance Counter Monitor inside your programs 开始。

【讨论】:

  • 我使用clock_gettime来获取时间。但是如何将其添加到性能寄存器中??
  • @PaulR 时钟周期在超标量 CPU 上毫无意义,因为它可能在一个周期内执行多条指令,请参阅 en.wikipedia.org/wiki/…
  • 感谢您的回复。我扩展了我的问题,你能给我一个小例子吗?
  • @user3629652 为您添加了链接。
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 2018-06-02
  • 2014-03-26
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多