百科问答小站 logo
百科问答小站 font logo



CPU 能靠增大单核的规模去提高单核性能么? 第1页

  

user avatar   pansz 网友的相关建议: 
      

可以。

单核规模提升确实会提高单核性能,或者准确的说,是单核性能的提升确实需要提升规模。

但是这种提升是有限的,而且瓶颈越来越明显。比如初期提升100%规模也许提升了90% 性能,往后提升100%规模可能只能提升10%性能,再往后提升100%规模只能提升2% 性能等等。

随着规模的不断提升,对性能的提升会越来越困难。代价越来越大,成本越来越高。

M1就是一种不计成本提升单核性能的方案,这个方案导致了它的成本过高,无法作为通用处理器出售。


user avatar   shinez-zhou 网友的相关建议: 
      

Update:昨晚上写的时候,主要考虑的是CPU设计的挑战,但是忽略了一个同样重要的问题是程序本身的特性:有的程序本身就是“不进油盐”,任由你CPU怎么scaling-up都无法获得显著性能提升。

在指令流方面,有的程序就是无法预测的:例如一个分支是if (rand(0, 1) > 0.5),那么这个分支本身就无法预测。更难预测的是随机的间接跳转,例如Zoo = List(Animals),你遍历Zoo:for animal in Zoo: animal.eat(),每个动物有不同的eat的实现,而且每个动物在Zoo里面是随机序,那么这个eat的实现的PC就非常难预测。对于无法预测的程序,指令窗口再大、宽度再宽,也只是“徒增功耗”。

在寄存器数据流方面,Scaling-up指令窗口大小是为了在窗口内容纳更大的数据流图、挖掘更多的ILP机会。极端情况下,如果一个程序的每一条指令都依赖于上一条指令,那么窗口100和窗口1000不会带来性能改进。嘛,我的一个研究工作就是研究怎么scaling-up窗口,发现窗口不敏感的程序也不少……

在访存数据流方面也有类似的问题,有的应用的局部性就是很差、footprint很大、难以预测,除非你的SRAM堆到4G+,否则就是放不下。例如SPECCPU里面的mcf就有一点这种意思,但是似乎最先进的商业处理器在mcf上已经捞到一点油水,也就是说mcf不属于完全“油盐不进”的。


难得遇到我读博的细分领域的问题,简略回答一下:

题主说的增大规模,我们一般称为“Scaling-up”。Scaling-up是可以提升性能的,但是有几个基础性的挑战

可以是指:不考虑功耗、频率的前提下,增加晶体管的数量是可以提高同频性能的。

挑战是大头。

首先,有一个最常见的、最容易理解的答案。因为Dennard scaling不复存在,同频率下,粗暴地增加规模会增加功耗。当然,以多核的方法增加规模,全核跑起来功耗也吃不消,所以这不是单核特有的问题

均衡——存乎万物之间

对CPU单核而言,一个最根本的问题是:CPU流水级从头到尾、层次结构从内到外必须达到一个均衡的状态,才能发挥各部分的性能潜力。这导致CPU无法像GPU那样通过堆流处理器来提升性能。

我打一个比方,CPU如果单纯地堆发射宽度和运算单元,就会像七龙珠里面特南克斯在超赛一阶段膨胀肌肉一样,纸面数值上去了,但是还是被沙鲁吊打,因为身体的敏捷性拉胯了。

其实香山处理器的第一代架构就存在这样的问题,雁栖湖架构的发射宽度非常夸张,但是性能一般(SPEC06 ~7/GHz)。而香山处理器的第二代南湖架构在没怎么增加发射宽度的前提下,性能获得了显著的提升。其实就是拓宽了瓶颈部分,使之与高发射宽度更加匹配了。

那么哪些部分需要平衡呢?

我习惯把CPU的功能分为三部分:指令流、寄存器数据流、访存数据流。这三部分都是需要平衡的,与此同时这些部分还存在无法暴力 Scaling-up 的因素。

首先是定义:

  • 指令流:从取指到重命名,包括 I-Cache
  • 寄存器数据流:分发、发射、执行、写回、提交
  • 访存数据流:访存推测、LSU、Cache

指令流

指令流这部分Scaling-up的需求是准确的、高带宽的、连续的指令供应。准确是指分支预测的准确率,分支预测要是不准,1024的窗口、32发射也白搭,不多说了。而且规模越大、in-flight的指令越多,对准确率要求越高。

准确性带来的挑战。TAGE和Perceptron这类分支预测器要用RAM装TAGE Table和NN的权重,一般RAM越大Hash冲突越少。但是RAM越大面积也就越大,面积大到一定程度延迟就上去了,如果你在这里打拍了就会影响指令供应的连续性。

高带宽带来的挑战。x86有个特有的问题:指令变长,后一条指令的起始位置依赖于前一条指令的类型,这导致译码是一个串行的组合逻辑。RISC基本可以并行译码,但是重命名的时候RISC和x86一样:后一条指令重命名(可能)依赖于前一条指令重命名的结果,这也是一条串行依赖路径。这些串行依赖路径的存在,导致你不能暴力Scaling-up译码宽度或者重命名宽度。

寄存器数据流

寄存器数据流是我从入学到现在都在关注的问题。根据[1][2] 这两篇文章的结果,物理寄存器堆和发射队列的线延迟在先进工艺下会贡献主要的时延。我和工业界的前辈交流时,大家也说这些是典型的频率瓶颈。结果就是“Clock rate versus IPC”:我们如果肆无忌惮地增加物理寄存器堆和发射队列的大小或者读写口数量,即使同频性能上去了,处理器的频率也做不上去。

当然,两篇经典论文的年代非常久远,他们观察到的现象在今天是否是关键瓶颈,我也不笃定。尤其是在Apple的指令窗口做到了600+项时,我对此愈发感到怀疑:一般指令窗口和物理寄存器堆、发射队列需要一起Scaling-up才能获得较好的收益。一种猜测是Apple在架构设计或者物理设计方面发现了什么黑科技吗?另一个猜测是:M1反正只跑3GHz,不像Intel要跑5GHz,而600是在目前TSMC的工艺和Apple的物理能力下的极限?

访存数据流

首先是访存推测,它的性质和分支预测是类似的:如果经常推测错,流水线就填不满,再宽也白搭。

然后是LSQ,尤其是Store Queue,它和发射队列有类似的问题。

最头疼的是Cache,包括L2、L3。大家最熟悉的是Memory Wall问题,我就不展开了。还有一个问题就是L1的带宽问题:Scaling-up的时候,每周期的访存指令数量越来越多,L1 DCache如何在同一个周期响应更多的请求?分bank?SRAM的读写口数量跟得上吗?

要大幅提高核的规模你需要提高什么?

总结一下:

  • 更高的分支预测准确率和访存推测,你的敌人是RAM的面积
  • 更大的指令供应带宽,你的敌人重命名的串行时延(和译码的串行时延(x86))
  • 更大的PRF、发射队列和LSQ,你的敌人是PRF和CAM的线延迟
  • 更少的Cache miss,你可以暴力堆容量,也可以改进替换、预取算法
  • 更大的DCache的带宽,你的敌人是DCache的时延要求

以我目前的知识,能看到的就是这些

参考

  1. ^Palacharla, Subbarao, Norman P. Jouppi, and James E. Smith. "Complexity-effective superscalar processors." Proceedings of the 24th annual international symposium on Computer architecture. 1997. https://minds.wisconsin.edu/bitstream/handle/1793/11224/file_1.pdf?sequence=1
  2. ^Agarwal, Vikas, et al. "Clock rate versus IPC: The end of the road for conventional microarchitectures." Proceedings of the 27th annual international symposium on Computer architecture. 2000. http://www.cs.cmu.edu/afs/cs/academic/class/15740-f02/public/doc/discussions/uniprocessors/technology/ipc.pdf

user avatar   sun-wei-17-62-41 网友的相关建议: 
      

不是这么简单的问题。

(1)核的性能有很多指标,主频是最短周期的关键,这个和规模无关,而是和工艺技术最稳定相关。

(2)大部分运算都会涉及与I/O打交道的问题,这个I/O的瓶颈影响运算的速度。

(3)核的规模主要是位数决定,L1,L2,L3的适当增大,可以使得缓冲存储时不与外部的内存打交道,可以快一点。位数越多,并行总线,I/O的串并转换就会增多。所以目前处理器的核最大就是64位。

(4)核的数量多少也是可以并行(进程)的关键,曾经研究过128,256核的,现在基本回到16-32核。因为核多,总线裁决就需要多,64核,每2个需要一个总线裁决,就需要32个(核裁决)。还需要在裁决上再裁决,16个,再裁决,8个,再裁决4个,再裁决2个,输出1个。由此可见输出到芯片外只能一套数据总线和地址总线,而64核时,需要五级总线裁决,效率反而会下降,影响性能。所以处理器的通用性不是单核复杂或者规模那么简单的问题。


user avatar   bao-feng-zi-16 网友的相关建议: 
      

好久没有写相关话题的回答了,这个问题就来简答写一下

首先明确一个观点——堆更多的晶体管可以提高性能

但是堆晶体管不是目的,这是手段,务必牢记这一点

通过堆晶体管、往哪里堆晶体管来实现更高的ILP,并不是只需要堆晶体管就可以提高了,这里坑很大不太想写太多,简单说一下大概是以实现更宽的架构、更深的流水线和Buffer、更多的执行单元以及更高效的缓存结构,这些是传统的提高综合性能的手段,还有其他的一些提高IPC的手段比如说SIMD,堆规模肯定有用的,但是要看你堆在了哪里、怎么堆,不是无脑堆就有提升的,

“在核心数不变的情况下,作死的堆CPU单核规模把东西都做大一点,放更多的晶体管来提高整体性能”。

这个就有现成的例子,intel和AMD这些年的架构演进都可以直接参考,

像intel从一代酷睿到7代酷睿,i7一直都是4C8T,这就是核心数不变,但是这其中涉及到Nehalem→Sandy Bridge→Ivy Vridge→Haswell→Broadwell→Skylake(Kabylake)的架构演进,详细架构图是这些:

有兴趣的可以看看,按照intel官方给出的参考提升,Sandy Bridge对比Nehalem架构提升10%的IPC,Ivy Bridge对比Sandy Bridge提升5%的IPC,然后Haswell对比Ivy Bridge提升10%的IPC,Broadwell对比Haswell提升5%的IPC(实际3%),Skylake对比Broadwell提升10%的IPC,这就是这几代酷睿演进以来的提升,最近的两代则是以Sunny Cove/Willow Cove、Golden Cove架构来演进的,由于这两代资料比较多,我就不细说了

AMD这边最近的几代是ZEN→ZEN2→ZEN3来演进,ZEN+其实就是ZEN架构只是小幅度改善了延迟,不能算新架构。我U盘忘在了公司所以现在手边就没有存这三个架构图的文件了,下次会公司再补上。

如果仔细翻它们的资料就可以发现它们的架构规模就是在不断地扩大,也就是以堆晶体管为手段来扩大的,但是近些年来IPC的挖掘放缓了不少,瓶颈凸显,单纯依靠IPC提升去显著提高单核性能已经很不容易了,基本上都得挖一下制程的潜力,借此来提高频率,毕竟频率提高也是可以提高性能的(虽然频率越高IPC会衰减,但是总体来说性能还是有提升的)

CPU单线程性能难提升所以才开发多核处理器,但是以次获得的性能提高也并不是纯利好,CPU进入多核时代意味着程序员不用修改一行代码就能获得提升的时代正在远去了,

多核CPU也需要调度

不仅仅是异构大小核CPU需要调度,多核处理器也需要调度,异构大小核只是在传统多线程调度上进一步加大难度,如何调度才能发挥出最大的性能?

举个例子,建房屋的工作包给一个小团队,在假设每个人能力相同时,要想获得最理想的加速,这个团队的每个人得分配到合理的、一样的工作任务,这是一个难点,不然总是一两个人做显著更多的工作,其他人摸鱼这样就无法达到最好的效果。然后施工过程中团队内部还会交流合作,这也会花费时间,

CPU多核调度也要面临很多问题,这也是多核优化也比较难推进的原因,一方面是难做,另一方面是成本高(费时费力)。

如果协调不顺,以前有过一个很典型的例子,A核心需要一组数据,但是这组数据可能在B核心的缓存里,B核心说这数据我还没算出来,我去催C核心要点数据,C核心说这数据在D核心那里,D核心说先把A核心的XX数据和B核心的XX数据给我我就能算出来了,是不是一团乱麻且效率低下?

当然目前的软件多核优化普遍不好主要还是多年以来绝大多数用户所使用的处理器核心数不多的原因,同时有一部分软件确实不需要做什么多核优化(对性能需求高的才做多核优化),这几年四核以上的处理器越来越普及所以乐观的看未来会有更多的软件会做多核优化

GPU确实现在提高速度要比CPU快,一个最直接的表现就在制程上,每次制程大升级对GPU来说都是一次大幅提升的机遇,在先进制程加持下可以在单位面积集成更多的计算单元,当然这里也不是说在先进制程下GPU的规模就只需要随便堆就可以了,还是要考量成本、功耗以及拓扑难度等,然而这些也是CPU需要考虑的,就当是抵消吧

相比于CPU来说,GPU这种超大型规模并行计算体系就只需要扩大计算规模就能够直观的获得性能提升,它不需要考量所谓的延迟和单线程性能以及多核优化。

拓展阅读:

台式电脑组装具体硬件推荐

台式电脑多用途配置单参考

【保姆级教程】台式机CPU选购指南

【保姆级教程】台式机主板选购指南

【保姆级教程】台式机散热器选购指南

【保姆级教程】台式机内存选购指南

【保姆级教程】电脑硬盘选购指南

如何选购合适的显卡?


user avatar   xing-fu-qu-shui-dao-an-cun 网友的相关建议: 
      

我支持。因为匿名是网络环境差的万恶之源。


知乎做得好。与此同时,头条和抖音也上线了IP属地。


根据 @新浪财经 报道:

据悉,今日头条、抖音展示的帐号IP属地均为用户最近一个月内最后一次发文或评论时的网络位置,境内展示到省(直辖市、自治区、特别行政区),境外展示到国家(地区)。而且帐号IP属地以运营商提供信息为准,相关展示不支持手动开启或关闭。

在公告中,今日头条和抖音均提出,展示账号IP属地是为了维护真实有序的讨论氛围,减少冒充热点事件当事人、恶意造谣、蹭流量等不良行为。快手则表示是为了防止部分网友在热点事件中出现蹭流量、传播不实信息、冒充当事人等干扰正常讨论的行为。

实际上,在字节跳动和快手的产品上线该功能之前,微博已经于今年3月先行一步。3月17日,微博官方账号称,因发现个别冒充当地网友发布和传播不实信息的行为,微博将上线“用户个人资料页展示近期发帖所在地”的功能。

据悉,微博也是在个人主页中展示用户最近一个月内最后一次发布微博或评论的IP归属地,而且IP归属地显示规则与评论区此前显示规则保持一致,国内显示到省份/地区,国外显示到国家。


2、

几乎所有的网红产品,都是利用人性的七宗罪所达到的。


而匿名就是网络环境的万恶之源。


匿名,意味着一个人不需要对自己的言行负责,无论你是咒骂那个普通人去死,还是问候他的十八代祖宗。


在网络平台上,我们看过了太多这种悲剧。


为什么女权的“权”会被污名化成“拳头”的拳?


我个人是支持女权的。但是里面有人在故意把水搅浑。


为什么有人被人肉和网暴?


因为在屏幕面前可怕的那个他,不需要承担任何责任。甚至很多明星粉丝对普通人群起而攻之,所倚仗的,不过如此。


为什么微信上的环境要比微博等好得多?


因为微信是实名化的。喷他,意味着他可能能找到你的真实身份,如果他想的话。


当然,做人是需要互联网树洞的。在BBS这种场景下,所有人都可以匿名化。

而在如微博等社交平台上,我支持全面实名化。


但愿天下不再有网络暴力。


user avatar   eidosper 网友的相关建议: 
      

这次舆论的重点在于警察到底是多久赶到的。

没拜码头,收保护费,打砸门面这种原因我们都知道,也不怕;

但是公权力私用或者黑白勾结这种事,就会让人非常害怕;

如果西安公权力真的黑白勾结,还睁眼说瞎话,那就需要处理整顿了。

我朝的治安也不是一直这么好的,人民也不是软弱无比的,60年代西安打的也很凶的。难不成西安各公司以后都要雇佣保安公司保护经营?

这次出警距离1公里,走路10分钟都到了,所以就坐等这次真实的出警时间是多少了。





  

相关话题

  消费级电脑芯片应该追求单核高频还是多个核心? 
  Intel为什么不取消AMD的X86架构授权? 
  固态硬盘是否只有三星和英特尔的能用? 
  286 电脑究竟有多慢? 
  程序在地址空间中的位置是何时,以及如何决定的? 
  英特尔找杨笠宣传引发「性别对立」争议,相关内容下架,这一争议的矛盾点是什么?会给英特尔带来哪些影响? 
  为什么 CPU 不做成可以换插槽的,或者把除内存插槽 PCIe 之外的东西都外置? 
  如何评价高通宣布 2023 年推出下一代 Arm 处理器,对标苹果 M 系列,由苹果前员工负责开发? 
  为什么现代CPU每秒数亿次计算,但是程序仍旧很卡? 
  为什么台式机CPU还没有整合芯片组(南桥)? 

前一个讨论
衡水桃城中学老师回应被指猥亵女生:没有猥亵,只是偶尔会「管教」,真实情况如何?
下一个讨论
如何评价 2022 年 2 月 17 日发布的红魔 7 系列游戏手机?有哪些突出的亮点与不足?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利