CPU的频率是大约每秒多少个时钟滴答的平均值,还是具有更强的物理稳定性?
我认为,它必须既不稳定又不稳定。那么,有没有关于CPU方差的可用信息?
CPU的周期持续时间是否与晶体振动严格同步?还是仅需确保CPU在下一个滴答之前完成一个周期?
CPU的频率是大约每秒多少个时钟滴答的平均值,还是具有更强的物理稳定性?
我认为,它必须既不稳定又不稳定。那么,有没有关于CPU方差的可用信息?
CPU的周期持续时间是否与晶体振动严格同步?还是仅需确保CPU在下一个滴答之前完成一个周期?
Answers:
像任何复杂的事情一样,您可以描述CPU在各个级别上的运行方式。
从最基本的层面来说,CPU是由精确的时钟驱动的。时钟的频率可以改变;想想英特尔的SpeedStep。但是在任何时候,CPU绝对都是100%锁定在时钟信号上。
CPU指令以更高的级别运行。一条指令是一件复杂的事情,可能需要不到一个周期到数千个周期才能完成,如Wikipedia上所述。
因此,一条指令基本上会消耗一些时钟周期。在现代CPU中,由于采用了多核,超线程,流水线,缓存,乱序和推测性执行等技术,因此无法保证单个指令的确切时钟周期数,并且每次发出此类指令时都会有所不同。 !
编辑
是否有关于特定CPU方差的任何信息?
是的,没有。99.99%的最终用户对整体性能感兴趣,可以通过运行各种基准进行量化。
您需要的是高度技术性的信息。英特尔不会发布有关CPU指令延迟/吞吐量的完整或准确信息。
有研究人员亲自尝试解决这个问题。以下是两个可能有趣的PDF:
不幸的是,很难获得方差数据。引用第一个PDF:
所列数字为最小值。高速缓存未命中,未对齐和异常可能会大大增加时钟计数。
尽管如此,有趣的阅读!
But at all times the CPU is absolutely 100% locked to the clock signal
仅适用于同步CPU。谈论异步(无时钟)CPU中的滴答是很愚蠢的,但对我来说却似乎是个遗漏:)
本质上,CPU时钟节拍是否严格周期性?
当然不是。即使是非常非常好的时钟也不是严格定期的。热力学定律则相反:
最好的时钟的开发者们非常非常努力地克服热力学定律。他们赢不了,但他们确实非常非常接近收支平衡。CPU上的时钟?与那些最好的原子钟相比,这是垃圾。这就是存在网络时间协议的原因。
预测:当世界上最好的原子钟从2015年6月30日23:59:59 UTC到2015年6月30日世界UTC到2015年7月1日00:00:00时,我们将再次看到混乱世界标准时间。太多的系统无法识别leap秒,并将其安全级别设置为2(这可以防止时间变化超过一秒钟)。这些系统中的时钟抖动意味着网络时间协议leap秒将被拒绝。就像2012年一样,许多计算机将崩溃。
在2000年左右,当CPU的时钟速度开始进入手机也可以使用的范围时,增加实际时钟速度的变化已成为普遍现象。原因很简单:如果CPU时钟恰好是900 Mhz,则所有电子干扰都是在该频率下产生的。在895至905 Mhz之间改变时钟频率,干扰也会分布在该范围内。
这是可能的,因为现代CPU受热量限制。它们可以在短时间内稍快地运行,因为稍后时钟变慢时它们可以冷却,因此没有问题。
这里是数字逻辑设计师。逻辑网络响应于输入信号而发生变化的实际时间是传播延迟。将系统视为:
registers A,B,C... ---> logic cloud ---> registers A',B',C'
“启动时钟”是第一组寄存器发生变化的时钟沿。“捕获时钟”是一个周期之后的下一个时钟沿。为了使系统工作,逻辑云的输出必须在捕获时钟到达之前是稳定的。
确保这项工作有效的过程是时序分析。使用基于物理学的系统模拟,计算出任何输入到任何输出的最坏情况到达时间。系统中这些数字中的最大数字设置最小时钟周期。
注意最坏的情况。实际的传播时间会更短,但这取决于制造工艺的变化,当前温度和芯片电压(PVT)。实际上,这意味着您可以应用更快的时钟(超频),并且可能会起作用。它还可能开始产生错误,例如确定0x1fffffff + 1 = 0x1f000000
进位位是否未及时到达。
芯片上可能还具有一个以上的时钟(通常FSB比内核慢),并且实际的时钟可能出于热控制目的而上升或下降或改变(MSalter关于使用扩展频谱通过EMC测试的答案)。
CPU的指令持续时间是否与晶体振动严格同步?还是只需要确保CPU在下一个周期之前就完成一条指令?
都不行 指令持续时间将是一定数量的时钟滴答,但该数量可能会根据指令要求而有所不同。例如,如果一条指令只有在L1高速缓存中有特定的存储位置后才能前进,那么该指令将在下一个时钟滴答之前完成。在该指令发生之前,不会在该指令上取得任何进展。
但是当CPU决定做某事时,它执行的基本方法是设置其内部开关,以使特定信息进入CPU的特定部分。它等待输入到达该部分,并等待输出到达下一部分。该等待部分是时钟的目的。
想象一下一个物理电路需要两个二进制输入并将它们求和,然后在第三组导线上输出总和。要进行加法运算,CPU必须安排将两个数字相加才能到达该加法器,而输出则要进入一个CPU寄存器锁存器。在输入到达加法器,加法器产生输出且输出到达锁存器之前,CPU不能告诉锁存器存储输出。这是时钟的目的-设置将输入安排到某处与期望输出准备就绪之间的等待时间。