【发布时间】:2010-10-13 09:20:19
【问题描述】:
可以使用寄存器的增量(在循环中)来确定(有效)时钟速率吗? 我很自然地认为它可以,但有人评论说 Cpu 可能会植入超标量技术,使这种计算变得无用。 另外有人告诉我,CPU 上的寄存器的递增可以在不到一个时钟周期内完成。
是真的吗?
【问题讨论】:
标签: low-level cpu-architecture cpu-registers cpu-speed clockrates
可以使用寄存器的增量(在循环中)来确定(有效)时钟速率吗? 我很自然地认为它可以,但有人评论说 Cpu 可能会植入超标量技术,使这种计算变得无用。 另外有人告诉我,CPU 上的寄存器的递增可以在不到一个时钟周期内完成。
是真的吗?
【问题讨论】:
标签: low-level cpu-architecture cpu-registers cpu-speed clockrates
不,不可靠。增加寄存器所需的周期数可能因不同类型的处理器而异,并且您还必须包括循环的开销。在任何现代操作系统中,您都将不得不处理抢占式多任务处理,因此您不知道进程调度程序将为您提供多少 CPU 时间。根据其他进程正在执行的工作量,您可能会获得很多或很少的 CPU 时间,因此您每秒可以执行的寄存器增量的数量是高度可变的。
此外,在多核环境中,时钟可能不会以相同的速率滴答作响。如果您的进程由于某种原因被调度程序在内核之间移动,您的时钟频率可能会发生不可预测的变化。
有更好的方法来获取时钟频率,例如向操作系统询问(当然,如何做到这一点因操作系统而异)。
【讨论】:
不,您不能使用它来确定时钟频率。不能保证一个寄存器每个时钟可以精确递增一次。
您的目标是什么 CPU?至少在 x86 上,有更明确的方法来确定时钟频率。
【讨论】: