本文转载自超能网,其他媒体转载须经超能网同意。
CPU的的单核性能有多重要,这个不用再重复了,但是CPU的单核性能可以无限增加下去吗?回答这个问题之前,先说一个小故事吧。
很多年前VIA威盛还可以跟英特尔硬刚,那时候是Pentium 4时代,英特尔在CPU频率不断突破1GHz、2GHz、3GHz之后要做更高频率的CPU,放言称奔4频率上4GHz,后来就有了英特尔前任CEO巴瑞特下跪的一幕,因为英特尔在奔4时代并没有如承诺的那样推出4GHz高频的产品。
但是很多人不知道的是,4GHz并不是英特尔当时的最终目标,2001年的IDF会议上英特尔曾经表示奔4处理器可以上10GHz频率。如今18年过去了,这个目标一直都没实现,(硅基时代)可能永远都无法实现了。
这件事就能说明CPU频率不是想提升就提升的,奔4时代过去这么多年了,其实CPU的主流频率依然在4GHz左右,英特尔虽然在酷睿i7-8086K上首次实现官方5GHz频率,但绝大多数处理器日常使用的频率都没这么高,高负载下频率在4GHz出头就不错了。
制约单核性能超强的CPU出现的第一个问题就是频率无法大幅提升,而这个因素也跟现在的制程工艺有关,实质上是摩尔定律已经失效了,这个影响了半导体行业50年的金科玉律随着硅基芯片物理极限的到来已经失效了,从28nm节点之后其实就没有带来很大的性能改进了,而且功耗问题也越来越严重。
大家都知道理论上制程工艺越先进(制程数字越小),CPU性能会更高,功耗、发热会更低,但是实际上这个问题很复杂,CPU的功耗可以分为静态功耗(Static Power)及动态功耗(Dynamic Power),前者主要是漏电流引起的,制程越先进,漏电流又有增加的趋势,而动态功耗可以用1/2*CV2F这个公式来计算,F频率越高,动态功耗就越高。
为了上更高的频率,电压增加不可避免,但电压高了功耗也高了,总之静态功耗、动态功耗的存在就决定了CPU频率越高,功耗就会极速增加,将会严重影响处理器的性能表现,因为要降频。
说到这一点,英特尔的14nm工艺虽然被人调侃挤牙膏,但从技术上来说真的很牛了,从Skylake架构的第一代14nm到现在Coffee Lake的14nm++工艺,性能提升26%,或者功耗降低52%,在不改变基本结构的情况下这个成绩很难得。
制程工艺的放缓导致CPU频率不可能大幅提升,有很多人会想到那么有没有非常牛的CPU架构让IPC性能大幅提升呢?理论上这种思路是可以的,但是现实很残酷,CPU架构还是要服从半导体工艺物理定律的,没有先进的工艺,再好的CPU架构也不可能实现。
此外,即便不考虑工艺对CPU架构的影响,单纯说CPU架构的话,不论是X86还是ARM架构,在64位时代CPU单元不外乎就是ALU单元、缓存、I/O等子单元, 但是不论提升那部分单元,归根到底还是要算到晶体管数量上来,还要考虑提升导致的成本——这个成本不只是钱的问题,比如提升L1/L2/L3缓存可以提高性能,但是缓存占用的核心面积很大,而且还有命中率及命中惩罚的问题,不是随便加加单元就行的。
此外,CPU的内部还可以分为整数部分、浮点部分,前者对日常使用很重要,浮点性能对计算更重要,但CPU的浮点性能并不是日常所需的,所以大家普遍感觉不到这部分的提升。
公平地说,近年来CPU浮点单元的进步是符合题目所说的单核超强的要求的,因为从SSE到AVX到AVX2再到最新的AVX-512,CPU浮点性能是有大幅提升的。如英特尔所说:“借助多达两个512位融合乘加 (FMA) 单元,应用程序在512位矢量内的每个时钟周期每秒可打包32次双精度和64次单精度浮点运算,以及八个64位和十六个32位整数。因此,与英特尔高级矢量扩展 2.0(英特尔 AVX2)相比,数据寄存器的宽度、数量以及FMA单元的宽度都增加了一倍。”
但是前面也说了,CPU的浮点性能不是日常所需的,整数性能更加重要一些,但是整数单元性能提升就没这么明显了,导致很多人以为CPU架构多年来挤牙膏。