CPU做一个超强单核不行吗?技术可以实现吗?
本文转载自,其他媒体转载须经超能网同意。
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架构多年来挤牙膏。