当有人问你,为什么电脑的CPU不设计成大小核,你会想到什么?当小编听到这个问题时,第一想到的是功耗,毕竟即使是笔记本电脑,也没有手机那样长的续航要求。但只有这一个原因吗?
众所周知,现在手机里用的Arm SoC采用的是big.LITTLE大小核架构,也就是在一个SoC里面包含了几个高性能核心和几个高能效核心。但英特尔也有凌动(Atom)和酷睿(Core)两种CPU(AMD也有类似产品线),为什么就迟迟没把它们做在一起呢?这个问题其实早就有网友讨论过,EDN小编现在在这里做个整理,看看有哪些说法靠谱。
先看看下面某网友的几个想法以及另一名网友的指正:
下面我们看看知乎网友北极谈的几点想法。他表示,首先有几个事实必须要明确:
1. Intel也有低功耗的需求场景,Intel也做物联网和低功耗设备。
2. Intel有足够的技术能力设计出大小核的CPU。
3. Intel产品强调的是兼容性和产品的延续性——这是重点。
所以,所有在讲不需要关注功耗、睿频能解决功耗、ATOM架构功耗低的回答都是片面的。
首先,前两条一起来说:不管是需求方面,还是设计能力,Intel都有对应的市场和相应的技术能力。Intel有做物联网方面的需求,也有极低功耗的设备的需求,至于对应的技术能力,Intel更是没问题,大小核又不是多复杂的东西,异构多核都能做出来,况且Intel还收购了Altera——本身就是冲着异构多核去发展的,做不出来是不可能的,况且在小核上真就搞不出SIMD指令?真要做,Intel会没这个实力?
那么,Intel不做大小核的原因,无非就是一点:跟现有的产品特性不一致,在兼容性和延续性上达不到Intel的要求——不管是产品特性还是企业发展本身。
其实很多人在讨论功耗的时候,多数情况下只关注到了频率这一项。确实,根据公式,主频确实是影响功耗的一个关键因素,但仅仅只有主频吗?有人会提到Intel是CISC,Arm是RISC,架构不一样,但同为RISC的MIPS和PPC功耗并不低,况且Arm也尝试进军服务器市场,Arm的服务器级别的CPU功耗一样很高。况且Intel的睿频也并不能像Arm那样降低多少功耗,Arm的大核是小核的性能的一倍多,功耗只有10%多一些,但Intel的睿频差距能达到4倍甚至更多,功耗差距却没Arm那么大。真要考虑算力功耗比,显卡可比CPU省电多了。所以主频只是影响功耗的一方面,还有别的因素影响了功耗。
在Intel和Arm的架构上,对于编写操作系统的人来说,最明显的区别是对于cache的处理,看CPU的结构图,cache占的地方基本上是最大的,功耗方面,cache也是的大头,并且多数情况下,除了L1 cache以外,cache多数都是共享的,那么即使某个核心关掉了,cache也不能关。
cache对功耗的影响是很大的。在Arm上写驱动和操作系统,需要很小心的维护cache的一致性,否则就容易出错,而在x86上写操作系统就相对简单的多。
除了cache的问题,还有像memory ordering这类的区别。
在现代的CPU里,这些区别其实是功耗的大头,而Intel和Arm的最大不同也就是这些。主频降下来很容易,架构改变很难。
如果Intel的cache需要像Arm一样不友好,那么Intel的CPU也许会很省电,但写操作系统的人肯定会骂娘——难用、兼容性差,老代码跑起来会有问题。
大小核看上去很美好,但核间迁移的效率极低,过去甚至需要以毫秒计算,要知道CPU的指令都是纳秒级的。
所以,假设Intel做了大小核,如果仍然沿用现有的cache设计和内存模型,那么功耗并不会降低多少,因为Intel CPU即使降低主频也不会多省电——这就是睿频的思路。
况且核间迁移是一个很考验cache设计的问题,Intel的cache设计已经是很复杂了,比Arm复杂的多。
所以,是这些兼容性和产品特性的问题,导致了Intel不会选择做大小核——不是做不出来,也不是不值得做,真要做出来,也肯定不叫x86,而是别的名字。
下面,我们再来看下这个说法,EDN小编认为这个可能最靠谱。
Intel要做大小核,实际受制于操作系统。Windows一直支持同构多处理器架构(SMP),直到Windows 10才开始支持异构多处理器架构(HMP),并且针对的主要还是使用Arm big.LITTLE的移动系统。对于桌面系统来说,功耗并不是个大问题。而且,大多数应用希望每个核心具有相似的性能特性,并且HMP系统的调度过程比传统的SMP系统要复杂得多。
此外,目前大多数台式机和笔记本电脑的处理器在某些核心需要快速运行,甚至是有短时突发的情况下,也不用担心会出现散热或者电气问题。真正遇到的瓶颈是如何提高单个核心性能,而大小核设计并不能让大核跑得更快。
虽然x86处理器也可以通过采用大小核设计来优化重载应用,但这会使处理器的设计复杂性攀升,并有可能遇到应用不支持或指令不兼容的情况。
大多数Windows下的多线程应用都假设每个内核的性能水平相同或几乎相同,并且可以执行相同的指令。因此,这种不对称性可能会导致性能不佳,甚至如果它使用了小核不支持的指令,还有可能崩溃。虽然英特尔可以通过修改小核,添加高级指令支持,但这不能解决异构处理器的软件支持问题。
知乎网友长生天尊的观点是,桌面CPU并不是不采用大小核心设计,而是即将采用大小核心设计,因为任何历史发展都是有惯性的,即使是CPU设计,也是有架构的惯性。总要有人先试水,后面跟上。
大小核心的优点在于低成本、功耗管理、单个die片面积小。缺点在于核心间通信延迟。
电脑CPU的架构不是一天就进化出来的。从1978到2018足足40年时间里面,x86不仅要进行架构上的演变,还要保持对软件硬件的前向兼容问题。x86/X64的成功往往不是因为架构设计的先进,反而是架构设计的落后但兼容所带来的成功。而那些架构优于Intel的RISC、MIPS但不能保证兼容的新架构都死在了沙滩上。
1. 从1978-1986年是CPU架构草创时代,这个时代CPU的性能主要由架构决定,在这时代的CPU架构百花齐放,x86才是众多CPU设计中的一位小老弟,这时候的Digitial VAX-11/780才5MHz速度,而Intel的20286 80386并未形成技术上的护城河,Intel多亏了IBM的提携才迅速的在家用机市场上普及,这时候的服务器市场依旧是IBM的PowerPC时代。
2. 从1986-2002年是主频加速时代,即MIPS M2000 Intel 80486到Digital Alpha 21064、Dighital Alpha、Intel Pentium III 1000MHz,这个时代的CPU致力于以单核心、长流水线、超标量、乱序执行、主频加速的方式来提升性能,比如Intel Pentium的2路超标量64位总线、Pentium Pro的乱序3路超标量、Pentium4的乱序流水线、片上L2缓存。直到Intel的奔腾系列达到4.0GHz之后撞上了功耗墙大家才发现,单核心的限制无法避免。最终业界普遍认为,单个核心的设计频率最好不要达到5GHz以上。
3. 从2002至今是多核心加速性能时代,从AMD的K6双核心开始,CPU进入了多核心加速时代,开始了L3缓存和Turbo睿频,与其说电脑CPU不采用大小核心设计,不如说说Arm这家企业。
Arm以前是做低功耗处理器的,而手机的A7x系列设计则是在千禧年之后的事情,这意味着Arm SoC在设计之初就可以吸收多核心发展的思想,结合着自己独特的电源管理能力,这意味着Arm开始时就是冲着省电多核心设计去的。
再加上Apple和Google两家公司对Arm架构的情有独钟,唯一指定,使得Arm最终在手机芯片领域的崛起,但实际上这种崛起不是必然的,比如智能手机的发明者乔布斯,最开始找到的是Intel,Google最开始也是找到的Intel,但是Intel看不起手机市场,使得凌动系列错失了手机智能化浪潮的发展机会,而AMD则由于资金问题不得不将移动CPU卖给了高通。
但这是个多核的时代,大小核心设计的确拥有潜力。
只要能够解决通信延迟,单PCB版上多核心必然会重见天日。
最后,再来看看英特尔最近这条新闻。
英特尔在本届CES展会上所展出的产品主要跟移动相关。首先,英特尔再次确认使用大小核架构以及3D封装的Lakefield处理器今年内投产,大核是1个Sunny Cove高性能核心,小核是4个Atom内核。同时会使用英特尔创新的3D封装Foreros技术整合在一起。此外,英特尔推出了“雅典娜”笔记本计划……
具体哪些产品会使用这款处理器还不得而知,最可能的还是移动设备,比如二合一笔记本等对续航要求较高的产品。
所以,最终电脑CPU是否也会采用大小核架构,让我们拭目以待。
读者朋友们,你们又有怎样的想法或指正,欢迎在评论栏中不吝赐教。