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