可以使用寄存器的增量来确定时钟速率吗?

时间:2009-03-14 19:06:01

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

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

是真的吗?

2 个答案:

答案 0 :(得分:3)

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

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

有更好的方法来获取时钟频率,例如向操作系统询问它(当然,如何根据操作系统进行操作)。

答案 1 :(得分:1)

不,你不能用它来确定时钟频率。无法保证每个时钟只能增加一次寄存器。

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