谈谈CPU的时钟

本文来自格隆汇专栏:半导体行业观察

我们经常发现CPU的时钟频率非常高,但其实CPU为了减少功耗和热量产生,并不是一直以最大时钟运行。由于电源传输电路需要时间来提升电压和传输更高的电流,因此它们不能立即从一个时钟速度切换到另一个。在本文中,我们将研究各种CPU从空闲时钟到更高频率的速度。让我们从结论开始,然后以我们如何进行这个小实验结束。

是时候开始最大化提升了

以下是一些CPU如何达到其最大提升频率的简要概述。单独来看,这张图并不能说明全部情况,因为许多CPU在提升之前,会在中间频率上保持平稳,而这远高于它们的空闲时钟。

现在,让我们分析一下这些CPU上的时钟斜坡行为。

AMD Zen3架构

Zen 3于2020年底推出,虽然即将被Zen 4取代,但现在它仍然是最新的广泛可用的AMD架构。在移动形式(Cezanne)中,我们可以看到非常快的频率斜坡行为,甚至能够在几毫秒内达到3.7GHz。不过,我们并没有看到核心提升到4.4 GHz,也许一段时间后就能达成,显然目前测试还不能运行足够的迭代。

尽管如此,3.7GHz的速度仍足以提供良好的用户体验。

AMD Zen2架构

AMD Zen 2架构于2019年首次推出,主要应用于移动、桌面和服务器。在台式机(Matisse)上,Zen 2内核的启动频率为1.7GHz,提升时间稍长,16毫秒后才达到4.3 GHz。在3950X上,最好的盒式内核在4.3 GHz下稳定一毫秒,17.45毫秒后达到4.7 GHz。从时钟斜坡行为来看,虽然Zen 2比Zen 3慢,但考虑到17.45毫秒是57 FPS的单帧,所以Zen 2的速度仍然很快。

Mobile Zen 2(Renoir)更令人印象深刻,在9毫秒多一点的时间内达到4.3 GHz。为了节省电力,Renoir以较低的1.4 GHz时钟速度启动。

Ryzen 9 3950X在ASRock X570M Pro4上测试,Ryzen4800H则是在Eluktronics RP-15笔记本电脑上测试。

Intel Skylake架构

Skylake于2015年问世,但由于英特尔多年没有给台式机市场带来新架构,因此Skylake的影响力一直持续到2020年。英特尔在Skylake上首次推出了一项名为“Speed Shift”的技术,该技术将处理器电源状态控制交给CPU,而不是让操作系统要求转换。酷睿i5-6600K充分展示了这一功能,仅在5.62毫秒后就达到了其最大的增益时钟3.9 GHz。

Kaby Lake是2017年Skylake架构的更新版本,但表现相比Skylake却差别很大,需要31.5毫秒才能达到2 GHz。其4.5 GHz的最大升压时钟要到62.54 ms才能达到。

我怀疑这与在OEM系统中实现的i7-7700K有关,主板是采用Intel C236芯片组的HP 802F,同时,i5-6600K安装在MSI Z170A Gaming Pro Carbon中,这是一款相当普通的发烧友主板,应该不会带来任何意外惊喜。

AMD Piledriver架构

Piledriver是AMD 2012年的架构。一般来说,FX-8350显示的时钟斜坡行为与客户端Haswell类似,需要近80毫秒才能达到其最大提升时钟。然而,Piledriver在47毫秒后就达到了令人满意的3.4 GHz,这意味着CPU的响应速度应该比最大提升速度所需的时间更快。

如果Windows电源计划将最小CPU状态设置为100%,那么FX-8350即使在空闲时也将保持在1.35V左右。在这种模式下,Piledriver表现出极快的增强性能,在不到五分之一毫秒的时间内从1.41 GHz提升到4.1 GHz,并在一毫秒多一点的时间内达到4.2 GHz的最大增强时钟。这表明大部分时钟延迟来自于等待电压增加。

FX-8350安装在Gigabyte GA-990FX-Gaming板中。

Intel Haswell架构

英特尔2013年推出的Haswell架构帮助英特尔巩固了在台式机和服务器市场领域强大的领先地位。它采用英特尔的22纳米FinFET工艺,推出了AVX2,并提供了比前代产品更高的高速缓存带宽。在客户端上,Haswell的增强行为与同期的其他CPU类似。台式机Haswell在31毫秒后达到中等2.5 GHz,仅在60毫秒后就达到高时钟。Mobile Haswill的升压行为更为保守,47毫秒后达到2 GHz,79毫秒后达到最大时钟。

提前达到中等时钟可能会让Haswell感觉比最大时钟时间数据所显示的反应更灵敏一些。尽管如此,它的速度还是远远比不上Skylake的“速度转换”。

Core i7-4712HQ在Dell Precision M3800笔记本电脑上测试,i7-4770则是安装在华硕Q87M-E板上。

Intel的旧HEDT平台: Sandy Bridge and Haswell

此前,在一个并不遥远的Galaxy中,英特尔主导了高端台式机市场。在那时候。如果你想要四个以上的内核,就需要付钱给英特尔,并且很乐意这样做。回顾那些对英特尔来说十分辉煌的时期,我们可以看到英特尔的HEDT芯片很快就达到了中间时钟,但却花了很长时间才达到最大提升时钟。基于Sandy Bridge的Xeon E5-1650达到3.2 GHz的基本时钟所需的时间与客户端Haswell达到最大提升时钟所需的时间大致相同。此后,它等待了近半秒钟才上升到其3.8GHz的单核涡轮频率。而Hedt Haswell在某种程度上更好,在大约三分之一秒内达到最大时钟速度,但我这次测试的是一个相当低的时钟Haswell SKU。

与英特尔的台式机和移动平台不同,HEDT芯片的起始频率略高,为1.2 GHz,而英特尔的台式机和移动平台的空闲频率通常为800 MHz。我想知道我们在这里看到的非常长的时钟斜坡时间是否是故意的,目的是为了降低短期任务的功耗。

Xeon E5-1650使用的是惠普1589主板和C602芯片组,而E5-2630 v3使用的是戴尔0K240Y主板和C612芯片组。我相信这些主板名称对你来说很有意义,因为它们对戴尔和惠普来说也很有意义。

Intel低功耗架构: Goldmont Plus

Goldmont Plus是英特尔2017年推出的低功耗架构,它是一种3宽架构,具有无序执行功能,比2010年代早期的Atom芯片更强大,但也不打算在台式机领域上竞争。与当代Skylake架构不同,它似乎没有实现“速度转换”,需要47毫秒才能达到2.6 GHz。

Goldmont Plus在一些“ Coofun ”品牌的GK41小型PC上进行了测试。别再问了,这在当时听起来是个好主意。

高通骁龙670

骁龙670是一款2018年推出的中端手机SoC,有两个Cortex A75核和六个大家都喜欢的Cortex A55核。A75核心达到2 GHz,而A55核心达到1.7 GHz。A75核上的频率斜坡非常快,而A55核需要更长的时间才能达到最大时钟速度。奇怪的是,当手机插上电源时,A55内核增加时钟的速度更快,而A75内核在电池供电的情况下提升频率的速度更快。

另一个有趣的细节是,A55内核的起始频率非常低,为600 MHz,而A75内核的起始频率略高于800 MHz。

Snapdragon 670在Pixel 3A中进行了测试。

高通骁龙821

高通的骁龙821最出名的可能是它不是骁龙810,但它是一个非常独特的芯片,尽管缓存设置不同,高性能和低功耗的内核实际上使用的是相同的Kryo架构。Kryo是一个4宽的失序内核,拥有4个alu和相当厉害的重排序能力,因此骁龙821拥有当时最大的“小”内核。遗憾的是,高通在实现缓存方面的表现非常糟糕,不过这是另一个故事了。

无论是在手机电池耗尽还是在电池充满电的情况下插入,Little Kryo的行为都是相似的。任何一种模式都会导致内核在逐步提升后,还需要超过200 ms才能达到1.59 GHz.电池模式似乎只是将空闲频率降至非常低的300 MHz。在交流电源上,它们的空闲频率为600 MHz。

Big Kryo也具有类似的空闲频率差异,但在使用交流电源时,时钟斜坡要快得多。如果手机充满电并连接到电源,则在20毫秒内可达到2.34 GHz,但使用电池则需要将近400毫秒。这种行为可能是故意的,以防止内核消耗大量能量来完成非常短的任务。有趣的是,当手机使用电池时,little Kryo实际上比Big Kryo高出一点点,从100到300毫秒。

Snapdragon 821在LG G6上进行了测试。

兆芯陆家嘴架构

作为奖励,我们在KX-6640MA中测试了兆信的陆家嘴架构。此CPU的数据使用旧版本的测试收集,该测试通过按键来启动数据收集,而不是休眠五秒钟。事实证明,按键本身可能需要几毫秒才能传送到程序,导致测量精度略低。不过,有足够的数据表明,陆家嘴有相当快的时钟斜坡行为,它增加时钟的速度比Goldmont Plus快,但不如Zen 3或Skylake。

方法论

我们的测试执行已知数量的相关整数加法,在绝大多数CPU上以每个时钟周期执行一次。如果我们计算执行一定数量的相关加法所需的时间,我们可以用它作为CPU周期数的代理,从而计算时钟速度。虽然CPU不能立即改变时钟速度,但很多能比我们使用标准计时API(如gettimeofday或ftime)精确测量的速度更快。

Estimating clock speed via integer addition latency on x86

因此,我们使用x86上的RDTSC(读取TSC或时间戳计数器),或ARM上的CNTVCT_EL0(计数器定时器虚拟计数寄存器)来测量时间差。重复上述过程,我们希望在几次迭代之后看到时钟速度的提高(RDTSCor CNTVCT_EL0增量更小)。然后,我们通过测量gettimeofday和rdtsc/cntvct_el0的大时间差(约2秒),分别确定rdtsc或cntvct_el0增量与实时差的对应关系。尽管计时精度最终会受到rdtsc和cntvc_el0开销的限制,但这种设置使我们能够获得低于毫秒的准确计时。

另一个有趣的注意事项是,ARM CPU上的CNTVCT_EL0提供的精度略低于x86 CPU上的RDTSC。x86 CPU倾向于在基本时钟上递增时间戳计数器。例如,FX-8350的时间戳计数器将每纳秒递增四次,来对应于其4GHz基本时钟。Snapdragon 670和Snapdragon 821内核大约每50纳秒增加一次CNTVCT_EL0。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部