【问题标题】:Can increment of a register be used to determine the clock rate?可以使用寄存器的增量来确定时钟速率吗?
【发布时间】:2010-10-13 09:20:19
【问题描述】:

可以使用寄存器的增量(在循环中)来确定(有效)时钟速率吗? 我很自然地认为它可以,但有人评论说 Cpu 可能会植入超标量技术,使这种计算变得无用。 另外有人告诉我,CPU 上的寄存器的递增可以在不到一个时钟周期内完成。

是真的吗?

【问题讨论】:

    标签: low-level cpu-architecture cpu-registers cpu-speed clockrates


    【解决方案1】:

    不,不可靠。增加寄存器所需的周期数可能因不同类型的处理器而异,并且您还必须包括循环的开销。在任何现代操作系统中,您都将不得不处理抢占式多任务处理,因此您不知道进程调度程序将为您提供多少 CPU 时间。根据其他进程正在执行的工作量,您可能会获得很多或很少的 CPU 时间,因此您每秒可以执行的寄存器增量的数量是高度可变的。

    此外,在多核环境中,时钟可能不会以相同的速率滴答作响。如果您的进程由于某种原因被调度程序在内核之间移动,您的时钟频率可能会发生不可预测的变化。

    有更好的方法来获取时钟频率,例如向操作系统询问(当然,如何做到这一点因操作系统而异)。

    【讨论】:

    • 也许 Linux 的“时间”会让我更好地估计实际花费在一个进程上的时间,但我理解你的意思,谢谢。
    【解决方案2】:

    不,您不能使用它来确定时钟频率。不能保证一个寄存器每个时钟可以精确递增一次。

    您的目标是什么 CPU?至少在 x86 上,有更明确的方法来确定时钟频率。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 2012-08-25
      • 1970-01-01
      相关资源
      最近更新 更多