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的浮点性能并不是日常所需的,所以大家普遍感觉不到这部分的提升。

支持AVX512的酷睿i9-7900X浮点性能提升很大

公平地说,近年来CPU浮点单元的进步是符合题目所说的单核超强的要求的,因为从SSE到AVX到AVX2再到最新的AVX-512,CPU浮点性能是有大幅提升的。如英特尔所说:“借助多达两个512位融合乘加 (FMA) 单元,应用程序在512位矢量内的每个时钟周期每秒可打包32次双精度和64次单精度浮点运算,以及八个64位和十六个32位整数。因此,与英特尔高级矢量扩展 2.0(英特尔 AVX2)相比,数据寄存器的宽度、数量以及FMA单元的宽度都增加了一倍。”

但是前面也说了,CPU的浮点性能不是日常所需的,整数性能更加重要一些,但是整数单元性能提升就没这么明显了,导致很多人以为CPU架构多年来挤牙膏。


超能网


我给你解释一下...你使劲理解一下...

...

计算机处理器有个参数叫频率...什么2.4G 4.5G啊...这个是指一秒钟有多少个时钟周期...不是指令周期...指令周期一般为1-12个时钟周期甚至更多...一般只有内部寄存器读写指令.加减乘指令能做到1时钟周期...而内存存取指令的周期数很高...所有数据都在内存...根本无法有效减少内存读写指令...需要注意的是内存读写速度基本是恒定的...也就是CPU快没用...比如假如在2.4G的处理器中读内存中的数据为6个时钟周期.那么在4.8G的处理器就需要12个时钟周期.也就是说在0.4G的处理器里是一周期...所以单纯提高频率提高性能微乎其微...

...

最先想到的就是利用CPU在等待读内存数据的周期中提前读下一个内存中的数据...这一系列技术最早叫预读.但代码有条件跳转.能判断条件跳转的预读叫分支预测.预读的层深叫流水线...

...

流水线并不完美...在多任务操作系统中..操作系统的时间片是通过保存和恢复整个寄存器实现的.术语叫保存恢复现场...这样切换会严重破坏预读的成功率...影响预读命中率...导致CPU仍然需要等待读取数据...解决这个问题的办法...就是两个处理器核心分别处理两个进程...当进程为3-4个的时候...在单核处理器上程序一定会正常运行...但破坏预读性能...运行效率很低...也就是说1个4G的核跑4线速度不如4个1G的核跑4线....

...

所以提高频率完全不会显著提高处理器性能...而提高核数会提高性能很明显...


ACME63610374577






关于多核心存在的意义,存在即合理,那么为何要做那么多核心,而不是4核心呢,这个要从网游多开说起,就我自己玩的剑灵,双开把amd fx8320 关核心到4个核心4线程,此时处理器占用高达百分之九十九,其次像一些使用格式化工厂转码hd 1920x1080分辨率都会占满cpu,日常渲染不在话下,单核心虽然说当年snb处理器双核心4线程i3就能干翻fx 4300跟6300差不多持平这样的处境,问题是2160p硬解一个已经爆满了占用开始卡顿6300则没有,处理器多核心战未来,虽然漫长但是已经是 趋势, 不然英特尔不会堆核心到10核心出现i7 6950x,频率再高单核心再强,cpu资源抢夺厉害核心小的,最终导致结果只能卡顿跟无响应,所以多核心发展出多核心意义非常大,尤其是服务器,电脑真的不是只是游玩游戏用途,它的用途很广,计算机主要工作还是以计算速度快慢为主要,32多核心处理器不但是跑分高,它的渲染速度都不是8核心能比较的,再举个列子fx8跟翼龙x6 跑分差不多,但是跑r15浮点运算速度比较慢,x6可以花费1分钟跑完,而fx8只需要45秒,这个时候就体现多核心的价值了,现在锐龙8核心16线程道理也是一样。



















玲奈爱柏木2


这么说吧,一个加工中心,有个分开的原料仓库,用一辆10吨大卡车运材料,运一次可以满足一天生产。后来产能提升,品种有多了,又在不同地点造了几个仓库,这时要满足生产要么原来的车加快速度不停的运(加快频率),要么买个50吨的车,每个原料还是每天运一次,运一次管几天(加强单核运算能力),还要么换几台5吨的,分开运不同仓库(多核)。

那么问题来了,在同时生产多个产品,且产量都不高,而且生产仓库分散的情况下是用一个50吨的车来运,还是用几个5吨的车来运合算?

所以单核强劲固然好,但往往运用时更多时候要同时处理几个任务,这样多核更适用。

苹果单核强劲,那是因为苹果都是单线程处理的,不像安卓后台会挂一大堆进程


羊羊66515000


我并不是专家,我大概一下,我个人的看法

理论上是可以,可以设计一个非常大的单核架构,把单核心的面积放大,频率可能可以很高。

但是我们看几乎所有做处理器的厂商,无论手机还是电脑,都没有人愿意这样做。

虽然说苹果手机的处理器单核心是放大了,但是由于ARM指令集的限制,实际上苹果手机的单核心与电脑的单核,跑分上苹果可以超越英特尔,但是实际用起来的时候,英特尔的速度绝对会比苹果的处理器快上很多倍,只是跑分上看就可以超越罢了,因为英特尔是X86指令集

即便是英特尔,都没有一味的把单核心放大,它还是采取多核心,我个人认为可能是受到工艺和发热功耗的影响。而且如果只是单核心的话,在多任务处理方面,可能效率并不高。

就像你请了一个员工,非常厉害,可以同时做很多份工作,一心多用,但是呢,相比之下,你请五个人,每个人一心一用这样每个人都可以专心做一件事情,而不是一个人同时做5,6样事情

如果只是一个非常强大的单核心处理器,在多任务方面,他就是一心多用,可能会出现错误,效率降低,我想大概就是这个意思,所以几乎没有一个处理器厂商愿意无限的放大核心面积。

即便是苹果手机的处理器,他虽然单核面积非常大,但是他到最后还是采取多核心。

以上是我个人的观点,毕竟我不是处理器专家,我只能大概解释一下


48中的天使


多核CPU就是因为如今的单核CPU已经难以大幅度提升性能才诞生的,像X86和ARM这类通用处理器架构,一旦进入成熟期想通过修改架构来提升性能难度非常大,相比为了单核性能而消耗的时间和人力成本是相当不划算的,可以参考下奔腾4当年为了提升单核性能而造成的失败后果。

单核性能的提升除了架构以外很重要的一点是取决于频率和缓存,而频率限于CPU温度和功耗不可能增长太快,缓存限于CPU面积和成本同样不能快速增长,这样频率和缓存只能依靠半导体工艺的进步来逐步提升。

最无奈的是,如今半导体工艺进步的越来越缓慢,单单是英特尔从14nm到10nm就用了好几年的时间,工艺进步慢,CPU的单核性能和效率就难以大幅度提高,英特尔又不可能把X86架构大幅改动,即使ARM处理器工艺进化更快,但是受限于手机对续航和芯片面积的要求,CPU的单核性能仍然无法大幅提高。

相比之下,CPU通过增加核心数的方式来提升性能是效率最高的,因为CPU每个核心几乎都是相同的,只要整体架构定型,设计制造起来相对容易得多,而应用程序通过多线程优化可以有效利用到多核CPU,最高甚至能达到翻倍的提升,这可不是单核简单提升一下频率和架构就可以达到的幅度,比纯粹做单核的性价比高多了。

就这样随着多核CPU普及,支持多核的应用程序也越来越多,多核CPU也就越来越吃香,当然如果拿多核CPU的晶体管来做一颗超强单核也未必不可,但是这对制造商的良品率要求太高了,因为是单核CPU,一旦晶圆和芯片上有一点瑕疵就可能使CPU报废,而多核CPU可以通过屏蔽核心来降级销售,成本和利润自然无法相比。

英特尔、高通、联发科都是企业,必须要权衡成本和利润,综合来看,做多核CPU的好处自然更符合它们的利益,即使是苹果,也是在不断增加A芯片的核心数,所以多核CPU是大势所趋。


嘟嘟聊数码


理论上工厂建一个超级大的生产线就可以,那为什么要修好多厂房和生产车间呢?

一条生产线建的再大,也只能保证用最快的速度生产完一个批次的产品。如果要同时生产好几个批次和品种的产品呢?那是选择用这个超大生产线一个一个批次生产,还是建几个生产线同时生产更好呢?

同样的,做一个超级大核只能保证用最快的时间完成一个任务。但是,如果你的电脑要同时完成几个任务呢?你是选择让这个超级大核一个个任务去做,还是选择做几个小核分别去做?

结论:

大多数时候手机和电脑要同时处理的是很多个任务,这时候让多个小核分别处理比让一个大核排队处理更高效。而一个大核的制造工艺更麻烦,发热功耗比几个小核更难散热。

再举个不恰当的例子,你要从北京送一个火箭去西昌,只能用火车拉,但是你要从食堂送几份盒饭到宿舍楼,最好还是叫几个快递小哥骑电动车给你送吧。我们日常使用手机和电脑遇到很多小任务的场景远比需要处理大任务的场景多,所以做很多小核远比做一个大核更实用。毕竟不是每个人一天到晚都有火箭需要送到西昌。但是几乎每天都有人需要订外卖。


陈江轩


技术路线的选择要考虑可行性,所谓可行性不仅仅包括能否实现,还包括实现难度是不是在可接受的范围,实现的成本是不是可以承担。而题主说的把CPU做成一个性能超强的单核,技术难度大,成本也高,并不实用。CPU之所以选择了多核心发展,就是因为单核心很难继续做下去,无法持续稳定提高性能,厂商才做的多核心。

单核性能的提高遇到了瓶颈,多核处理器技术的成熟共同决定了多核处理器成为技术发展的主流选择,而单核处理器被抛弃。

我们看看当年的几代入门级处理器的性能,就会发现,单核性能的提升已经进入了瓶颈期。第四代入门级的 i3 4130 CPU,单核性能成绩为 1982。上一代入门级的 i3 3220 CPU,单核性能成绩为 1759。再上一代入门级的 i3 2130 CPU,其单核性能成绩为 1744。经历三代升级,性能的提绳微乎其微。一般认为,只有性能提升五成以上才会有比较直观的感受。因此,单核性能的突破是一个难以克服的困难,不一定说完全不能实现,但至少是一件非常困难的事情。从理论上来说,从1990年左右开始,提高芯片的性能主要方法有两种:

1.在有限面积内加入更多的场效应管。

2.提高时钟。

经过二十多年的发展之后,我们已经几乎把这两种方法应用得炉火纯青,单核CPU想要继续突破面临着难以克服的功耗和发热问题,而时钟也会受到限制。相比之下,多核CPU可以通过并行计算实现降低时钟的目的,与此同时维持原有的计算能力。而多核处理器的协同能力则随着技术成熟而变得稳定高效,在这个情况下,回归单核路线,尝试做一个超强的单核处理器是不符合现实需求的做法。

而从另外一个角度来说,就算我们继续发展单核技术,不计代价投入,不计成本生产出来。但是,理论来说,单核处理器的性能是会有上限的,这个上限一定会比多核处理器低。这就好比一个人可以通过锻炼提高身体力量,但是你再能打,来十个二十个人,你也够呛能对付吧?所以,个体的提高很重要,但是多人合作,良好的协作才是提高战斗力更有效更现实的选择。同样的道理,当多核处理器可以良好协作的时候,取代单核处理器成为技术选择的主流也是情理之中的事情。超强单核的技术构想则不实用,太昂贵,并不存在实际可行性。


镁客网


性能超强?何为性能超强,运算速度快吗?

就用最简单的加法指令来说,32位的加法器,用到的逻辑电路就是那么个原理,再怎么升级,也就那样了。单个加法器的速度只能靠时钟频率来提升,但是太高了,会引起异常。比如逻辑门电平转换跟不上时钟的速度了,就会完成计算错误。

提升时钟频率这条路不行了,那怎么办,增加多个计算单元吗?可是光增加计算单元也没什么用啊,一堆计算单元排着队等着控制单元分配任务吗?感觉还是有点儿治标不治本。于是只能再增加一个核心了。两个不够,那就四个。四个不够,那就八个。

cpu的控制核心给计算核心分配任务时,它不知道它取得下一个指令是什么,是加?是减?是移位?是存储?还是去控制io?所以他的计算核心是庞大且功能全面的。而gpu封装了大量的小型计算单元,专门就是就是为了同时计算十万个加法(举个例子)而存在的。

所以cpu目前在时钟频率提高不了的情况下,只能通过堆核心,但不是堆一堆核心的方法来提高速度了。


蓬松的蛋糕


一是因为技术难度,一个核心的性能提升到一定程度,就不容易再提上了,好比说用卡车来拉货物,一辆车拉50吨是可以做到的,但是你一辆车想拉500吨,显然是做不到的,起码以现在的技术来看是做不到的,路也受不了,怎么办呢?用十辆车来拉,这就相当于CPU的多核心技术。二是多任务处理,有多种货物要拉往不同的地方,举例子说,煤炭要拉往河南,铁要拉往山东,铜要往东北送,……就需要多辆车同时运送。


分享到:


相關文章: