CPU 的频率是每秒有多少个时钟滴答的平均值吗,还是具有更强的物理稳定性?
我认为它既不稳定也不不稳定。那么有没有关于 CPU 差异的信息?
CPU 的周期长度是否严格与晶体振动同步?还是 CPU 只需确保在下一个滴答之前实现一个周期?
答案1
与任何复杂的事物一样,您可以描述 CPU 在各个层面上的运行方式。
从最基本的层面上讲,CPU 由精确的时钟驱动。时钟频率可以改变;想想英特尔的 SpeedStep。但 CPU 始终处于 100% 的状态锁定时钟信号。
CPU 指令在更高级别上运行。单个指令很复杂,可能需要从少于一个周期至数千个周期去完成正如维基百科上所解释的那样。
因此基本上一条指令将消耗一定数量的时钟周期在现代 CPU 中,由于多核、超线程、流水线、缓存、乱序和推测执行等技术,单个指令的确切时钟周期数无法保证,并且每次发出这样的指令时都会有所不同!
编辑
是否有关于特定 CPU 的差异的信息?
是也不是。99.99% 的最终用户对整体表现,可以通过运行各种基准来量化。
你要求的是高度技术性的信息。英特尔不会发布有关 CPU 指令的完整或准确信息延迟/吞吐量。
一些研究人员已经开始尝试解决这个问题。以下是两个可能感兴趣的 PDF:
不幸的是很难得到方差数据。引用第一个 PDF:
列出的数字是最小值。缓存未命中、未对齐和异常可能会显著增加时钟计数。
尽管如此,读起来很有趣!
答案2
CPU 时钟滴答在本质上是否具有严格的周期性?
当然不是。即使是最好的时钟也不是严格周期性的。热力学定律却说不是这样的:
- 零定律:宇宙正在和你玩一个肮脏的小游戏。
- 第一定律:你不可能赢。
- 第二定律:但是在非常寒冷的日子里,你也许能够收支平衡。
- 第三定律:天气永远不会变得那么冷。
最优秀的时钟的开发者们竭尽全力试图克服热力学定律。他们无法取胜,但他们确实非常接近收支平衡。你的 CPU 上的时钟?与那些最好的原子钟相比,它简直是垃圾。这就是为什么网络时间协议存在。
预测:当世界上最好的原子钟从 2015 年 6 月 30 日 23:59:59 UTC 变为 2015 年 6 月 30 日 23:59:60 UTC 再到 2015 年 7 月 1 日 00:00:00 UTC 时,我们将再次看到一些混乱。太多系统无法识别闰秒,其安全级别设置为 2(这可防止时间变化超过一秒)。这些系统中的时钟抖动意味着网络时间协议闰秒将被拒绝。许多计算机将像 2012 年一样崩溃。
答案3
2000 年左右,当 CPU 的时钟速度开始进入手机也能运行的范围时,在实际时钟速度上增加一个变化就变得很普遍了。原因很简单:如果 CPU 时钟正好是 900 Mhz,那么所有电子干扰都是在这个频率上产生的。将时钟频率在 895 和 905 Mhz 之间稍微改变一下,干扰也会分布在这个范围内。
这是可能的,因为现代 CPU 受热量限制。它们在短时间内运行速度稍快一点是没有问题的,因为它们可以在时钟稍后减慢时冷却下来。
答案4
CPU 的指令持续时间是否严格与晶体振动同步?还是 CPU 只需确保在下一个滴答之前完成一条指令?
都不是。指令持续时间将是某个时钟滴答数,但该数字可能因指令的要求而异。例如,如果一条指令在特定内存位置位于 L1 缓存之前无法向前推进,则该指令将无法在下一个时钟滴答之前完成。在此之前,该指令不会向前推进。
但是当 CPU 决定做某事时,它执行该操作的基本方法是设置其内部开关,以便特定信息进入 CPU 的特定部分。然后它等待输入到达该部分,输出到达下一个部分。这个等待部分就是时钟的目的。
想象一个物理电路,它接受两个二进制输入并将它们相加,然后在第三组线路上输出和。要进行加法运算,CPU 必须安排将要相加的两个数字送到这个加法器,并将输出送到 CPU 寄存器锁存器。在输入到达加法器、加法器产生输出、输出到达锁存器之前,CPU 无法告诉锁存器存储输出。这就是时钟的用途——设置将输入送到某个地方和等待输出准备就绪之间的等待时间。