CPU 时钟滴答是严格周期性的吗?

Gaë*_*bin 53 cpu time real-time

CPU 的频率是一秒钟内有多少个时钟滴答的平均值,还是它具有更强大的物理稳定性?

在我看来,它一定不是稳定的,也不是不稳定的。那么是否有任何关于 CPU 差异的可用信息?

CPU 的周期持续时间是否与晶体振动严格同步?或者 CPU 是否只需要确保在下一个滴答之前实现一个周期?

mis*_*256 50

像任何复杂的事情一样,您可以描述 CPU 在各个级别的运行方式。

在最基本的层面上,CPU 由精确的时钟驱动。时钟的频率可以改变;想想英特尔的 SpeedStep。但在任何时候,CPU 都绝对 100%锁定到时钟信号。

CPU 指令在更高的级别上运行。单个指令是一件复杂的事情,可能需要不到一个周期到数千个周期才能完成,如 Wikipedia 上所述

所以基本上一条指令会消耗一定数量的时钟周期。在现代 CPU 中,由于多核、超线程、流水线、缓存、乱序和推测执行等技术,无法保证单条指令的确切时钟周期数,并且每次发出此类指令时都会有所不同!

编辑

是否有任何关于特定 CPU 差异的可用信息?

是和否。99.99% 的最终用户对整体性能感兴趣,这可以通过运行各种基准来量化。

您要求的是高度技术性的信息。英特尔不会发布有关 CPU 指令延迟/吞吐量的完整或准确信息。

有些研究人员自己尝试解决这个问题。这里有两个可能感兴趣的 PDF:

不幸的是,很难获得方差数据。引用第一个 PDF:

列出的数字是最小值。缓存未命中、未对齐和异常可能会显着增加时钟计数。

不过读起来很有趣!

  • 非常好。当然,“但 CPU 在任何时候都绝对 100% 锁定时钟信号”仅适用于同步 CPU。在异步(无时钟)CPU 中谈论滴答是愚蠢的,但对我来说感觉像是遗漏:) (4认同)

小智 30

CPU 时钟滴答在本质上是严格周期性的吗?

当然不是。即使是非常非常好的时钟也不是严格周期性的。热力学定律另有说法:

  • 第零定律:宇宙对你玩了一个令人讨厌的小游戏。
  • 第一定律:你赢不了。
  • 第二定律:但在非常寒冷的日子里,您可能会收支平衡。
  • 第三定律:它永远不会那么冷。

非常非常好的时钟的开发者非常非常努力地克服热力学定律。他们赢不了,但他们确实非常非常接近收支平衡。CPU上的时钟?与那些最好的原子钟相比,这是垃圾。这就是网络时间协议存在的原因。


预测:当世界上最好的原子钟从 2015 年 6 月 30 日 23:59:59 UTC 到 2015 年 6 月 30 日 23:59:60 UTC 到 2015 年 2015 年 7 月 1 日 00:00:00 时,我们将再次看到一些混乱世界标准时间。太多系统无法识别闰秒并将其安全级别设置为 2(这样可以防止时间更改超过一秒)。这些系统中的时钟抖动意味着网络时间协议闰秒将被拒绝。一些计算机将崩溃,就像它们在 2012 年所做的那样。

  • +1,有趣且内容丰富。[Leap Second](http://en.wikipedia.org/wiki/Leap_second) 主题也很不错。 (9认同)
  • 好吧,IIRC,由于内核时钟例程*意识到*闰秒的可能性而引起的大肚子上升,但是将调整实现为对时钟调整例程的调用,而时钟调整例程不允许在时钟时调用已经在调整了......当然系统时钟与cpu时钟无关。 (9认同)
  • @misha256 现实是不可能有*准确*的时钟。时间是相对的。 (2认同)

MSa*_*ers 22

大约在 2000 年左右,当 CPU 的时钟速度开始进入手机也可以运行的范围时,对实际时钟速度添加变化变得很普遍。原因很简单:如果 CPU 时钟正好是 900 Mhz,那么所有的电子干扰都是在该频率下产生的。在 895 到 905 Mhz 之间稍微改变时钟频率,干扰也会分布在该范围内。

这是可能的,因为现代 CPU 是受热限制的。它们在短时间内运行得稍微快一点是没有问题的,因为它们可以在以后时钟放慢时冷却下来。

  • 在 BIOS 中,您经常会看到此选项被描述为“Spread Spectrum” (13认同)
  • @MarkSowul 谢谢,终于有人讲述了这个“扩频”的实际用途。 (3认同)

pjc*_*c50 22

数字逻辑设计师在这里。逻辑网络响应输入信号而改变所需的实际时间是传播延迟。把系统想象成:

registers A,B,C... ---> logic cloud ---> registers A',B',C'

“启动时钟”是第一组寄存器发生变化时的时钟沿。“捕获时钟”是一个周期后的下一个时钟沿。为了使系统工作,逻辑云的输出必须在捕获时钟到达之前保持稳定。

确保这有效的过程是时序分析。使用基于物理的系统模拟,计算任何输入到任何输出的最坏情况到达时间。系统中这些数字中的最大者设置了最小时钟周期。

注意最坏情况。实际传播时间会更短,但这取决于制造工艺变化、电流温度和芯片电压 ( PVT )。这意味着实际上您可以应用更快的时钟(超频)并且它可能会起作用。它也可能开始产生错误,例如判断0x1fffffff + 1 = 0x1f000000进位位是否未及时到达。

芯片上也可能有多个时钟(通常 FSB 比内核慢),并且实际时钟可能出于热控制目的而上升或下降或变化(MSalter 关于使用扩频通过 EMC 测试的回答)。