当前位置: > 华宇登录 > 正文 正文

华宇娱乐注册网址_摩尔定律不死,它也未曾凋零

本文来自微信民众号:老石谈芯(ID:laoshi_tanxin),作者:老石,题图来自英特尔


许多天下顶尖的“建筑师”可能是你从未听说过的人,他们设计并缔造出了许多你可能从未见过的神奇结构,好比在芯片内部源于沙子的庞大系统。若是你使用手机、电脑,或者通过互联网收发信息,那么你就无时无刻不在受益于这些建筑师们的伟大事情。


Jim Keller就是这群“建筑师”里的一员。作为微处置器领域的传奇人物,他现任英特尔资深副总裁,兼任硅工程事业部(Silicon Engineering Group)的总经理。在此之前,他曾任职DEC、AMD、博通、苹果、特斯拉等公司,担任工程副总裁或首席架构师等事情。


在他几十年的职业生涯中,他向导设计了多种x86和ARM的处置器架构,包罗AMD的K7、K8、K12和Zen,苹果用于iPhone4和iPad的A4、A5移动处置器,特斯拉的自动驾驶处置器,等等。此外,他照样x86-64指令集的作者之一。


不久前,Jim Keller做客MIT的网红学者Lex Fridman的播客节目,并分享了自己对于摩尔定律、盘算机系统结构、人工智能等手艺问题的看法与思索。两人的对谈天马行空,并不拘泥于某个详细手艺或领域,而是由某个看法出发,讨论手艺背后的驱动因素,并对芯片与人工智能产业的生长和转变做了深入剖析,听来让人受益匪浅。


Lex Fridman,图片来自他的Twitter


本文对Jim Keller的主要看法举行了整理和采编,主要先容了Jim Keller对摩尔定律、盘算机架构、未来盘算机手艺的生长趋势等。


下文中的“我”,均指的是Jim Keller。


什么是微处置器、什么是微架构、什么是指令集


对于盘算机而言,它有着对照明确的设计层级划分,这也是这门科学的特殊魅力之一。原子位于最底层,对原子举行有序排列后,就会获得诸如硅或金属等质料,于是我们可以用这些质料制作晶体管。


在往上,我们可以使用晶体管组成逻辑门,然后再构建逻辑单元,好比加法器、乘法器、或者指令解码器等等。有了这些逻辑单元,我们就能将它们组合成加倍庞大的处置单元。在现代处置器中,也许由10到20个这样的处置单元组成。


图片来自罗彻斯特理工RIT


当这些处置单元组合在一起,就可以运行盘算机程序了,而这些程序也有着许多抽象层,好比从最底层的指令集,到汇编语言,再到C、C 、Java、JavaScript等等。而所有的这些也构成了从原子到数据中心的抽象条理。


在这个意义上,当人们设计盘算机时,首先都要对设计目的有着明确熟悉。在当前,对盘算机的设计目的有着一系列的权衡指标,好比它的运行速率等等。在一个设计团队中,可能有着数千人,他们划分卖力盘算机设计的差别领域和差别方面。对于我小我私家来说,我对自己在这个团队中卖力哪个方面的事情并不是稀奇在意。


指令集就是用来编码盘算机的一些最基本的操作,好比加法、乘法、存储、分支等。事实上,在已往很长的一段时间里,包罗x86和ARM在内的种种处置器的指令集是相当稳固的。因此,现在在领域里并没有太多有趣的事情。


对于一段程序,也许有90%的代码都基于25个最基本的微指令,而这些微指令都已经十分稳固和成熟了。拿英特尔举例,它的x86架构自发现至今已经有也许25年了。基于我们良久之前界说的一些基本原则,它至今都事情的不错。


Skylake芯片结构图,图片来自TechPowerUp


以前,盘算机的事情方式是取指令,然后顺序执行这些指令。对于现代盘算机而言,它的事情方式是取大量指令,好比500条指令,然后寻找并构建这些指令的依赖图,然后在自力的执行单元里划分执行这个依赖图的子集。


许多人说盘算机设计应该简练和清洁,但事实上市面上销售的既“简练”又“清洁”的盘算机数目基本为零。在当前的种种盘算机中,小到手机,大到数据中心,都是通过大量取指、并盘算依赖图的方式举行盘算的。


现代盘算机基本都支持深度乱序执行,它们有着一系列机制卖力纪录和追踪哪些操作即将竣事或可能会竣事。但为了快速运行,盘算机必须大量取指,并从中寻找可能的并行性。


想象我们看一本书,书里有许多句子和段落,它们配合组成了书的内容。而上面先容的那种盘算机设计方式,就好比实验打乱句子或者段落的排列顺序,而不影响它们所表达的内容。好比,在先容一小我私家的时刻,你可以说他是高富帅,但这几点的顺序可以随便排列。你也可以说谁人很高的人穿着一件红色的衣服,而此时这句话里就有了依赖关系。


我所说的盘算机,包罗CPU和GPU。对于CPU,它有着很窄的并行度,这基本上是由它顺序执行的架构所决议,这也和人的思索方式相同,我将其称为“串行叙事(serial narrative)”。


而对于GPU,它的单个处置单元卖力处置一个像素点,但它有着上百万个这样的单元。当你看一幅图或一帧画面时,你并不会在意盘算机先处置哪个像素点。因此我将其称为“天生并行(given parallelism)”。而它也可以看成是串行叙事的大量聚集。


CPU与GPU的架构对比,图片来自网络


在现代盘算机中,除了对并行性的探讨之外,对分支的展望也是异常重要的。平均来说,每六条指令中就有一条分支语句,而现在人们可以做到远超过90%的展望准确性。


在20年前,我们做分支展望时会直接纪录上一次的展望效果,并展望这一次仍将重复这个分支,而这种简朴的展望方式可以到达85%的准确性。之后,有人提出接纳若干位存储展望效果,并使用一个计数器对之前的展望效果举行统计。若是之前走了一个分支,则计数加一,若是走了另一个分支,则计数减一,诸如此类。以是若是当这个计数器大于0,则展望第一个分支,若是小于0则展望另一个分支。这种展望方式将准确性提高到了92%。然后人们熟悉到,对于某个分支节点的判断,许多时刻还取决于之前的程序是若何执行的,因此这又进一步提升了展望的准确性。


不外,这些都不是现代盘算机做分支判断的方式。现代盘算机中接纳了类似神经网络的方式,简朴来说,它思量了所有的运行历程,并对这些运行历程举行了差别的深度模式识别,并综合这些效果获得分支展望的谜底。事实上,在现代盘算机里另有一个小型的超级盘算机,专门用来盘算这些分支和展望。


若是我们还使用上面的计数器的方式做分支展望,为了到达85%的准确率我们需要上千位的计数器,而为了到达99%的准确率我们则需要上千万位。也就是说,为了取得线性的展望准确性提升,需要支出的价值则是指数级的。


然而,许多时刻并不需要做到100%的展望准确性,由于有可能差别分支接下来要运行的程序和这些分支并没有关系。好比在看书的时刻,有时刻段与段之间的联系并不是异常慎密,若是有一段没读懂,也并不会影响后面的阅读。


人脑与盘算机的异同


我小我私家以为,由于现在人们并没有真正领会人类大脑是若何事情的,以是很难将人脑与盘算机做直接的对照。不外对于盘算机来说,通常来讲它由两个主要部门组成,一个是存储器,一个是盘算器。到现在为止,险些所有的盘算机架构的事情机理,都是从存储器中拿数据,通过盘算单元举行盘算,然后将效果写回存储器。


对于人脑来说,神经元通过种种方式举行毗邻,它们可以是局部互联的,也可以是全局互联。而数据和信息则通过类似于分布式的方式举行保留。基于此,研究人员构建了所谓的人工神经网络,并提出了许多对应的数学理论对其举行支持。但这种结构和人脑的现实结构照样有着很大的区别。


盘算机系统简直定性


若是你在CPU上运行一段C语言程序,那么每次你都市获得一样的运行效果。但对于现在的AI应用来说,其中的神经网络接纳了很低精度的数据示意,而且输入数据也有着极大的噪声。在这种情况下,何须追求完全准确且准确的盘算呢?


人们通过研究证实,当允许一定水平的误差时,许多算法可以在更短的时间内完成盘算,也从而带来功耗的降低和系统性能的提升。


另一方面,在诸如HPC等的许多应用中,若是同一个盘算的每次效果都不相同,那也是不能接受的。而且,若是此时盘算效果错误,往往很难确定究竟是算法错误照样盘算机制错误。因此,在盘算机系统简直定性与随机性之间,人们需要做仔细的权衡。


再进一步,纵然每次运行效果都相同,也不代表在盘算机中执行了相同的盘算、或使用了相同的数据通路。事实上,对于许多在现代盘算机中运行的程序来说,运行一百遍会获得相同的效果,但每一次运算在盘算机内里运行的顺序、接纳的盘算单元、涉及的硬件结构等等都不尽相同。


盘算机架构应该每5年推倒重来


当设计或改善盘算机架构的时刻,人们容易陷入这样的误区。好比,有人提出需求说希望盘算机比现在运行的要更快10%,于是架构师就最先看那里可以增添存储器、那里可以增添运算单元、亦或是增添数据总线宽度等等。


渐渐地你会发现,每个运算单元都市变得越来越庞大,系统性能也逐渐到达瓶颈。也就是说,不管你再增添若干存储、增添若干运算单元、增添若干总线宽度,盘算机的性能都无法提升更多了。


这时,伶俐的架构师会熟悉到,性能瓶颈是由之前的系统划分、以及这些庞大运算单元的相互耦合造成的。于是,他们会对系统举行重构。这样的效果,是系统性能获得进一步提升,然后每个盘算单元的庞大性也会大幅下降。


我以为,像这样的系统级重构,每三到五年应该来一次。也就是说,若是你想从基本上提升盘算机架构,至少每隔五年需要重新最先举行设计。


20多年前,我是64位x86指令集的最早设计者之一。只管指令集没有发生太多有趣的改变,但基于这些指令集的x86架构在这些年间的转变伟大。英特尔和AMD都有许多各自的架构泛起。然而,现在我说的这些基本性重构基本是10年一次,而我希望是至少五年一次。


对盘算机结构的重新设计会带来两个问题。对于需要每个季度公布业绩的团队来说,他们往往对这种系统级重构畏手畏脚。然而对于有长远目的的团队来说,重构时带来的短期风险也会影响他们杀青历久目的。


因此,一个常见的方式是同时做多个项目,这样你可以在优化已有设计的时刻,同时开发全新的架构。


那些市场部的人经常喜欢向人们保证,新的盘算机架构比前一代的每个方面都更快更好。事实上,一个工程师会告诉你,一般来说新的架构会更好,但由于性能曲线的存在,会有比前一代更慢的产物,而这也有可能对客户造成影响。 


摩尔定律不死


戈登·摩尔对摩尔定律的表述也许是,晶体管数目每两年会翻倍。我对摩尔定律的明白是,盘算机的性能每2到3年提高一倍。这项表述在已往的若干年里都相当准确。近年来,人们引入了所谓的“缩短因子”(shrinking factor),它也许是0.6左右。也就是说,每2到3年的性能提升从1除以0.5变成了1除以0.6。


我从事盘算机设计已经有40年了,一最先人们说摩尔定律在接下来的10到15年会死,我那时还信了。10年之后人们又说过10到15年摩尔定律将死,然后几年后又成了5年后会死,过了几年又成了10年,诸如此类。厥后,我就不再体贴摩尔定律什么时刻会真正失效了。


然后我加入了英特尔,在这里也有人说摩尔定律将死,而这让我很无语,由于英特尔正是代表摩尔定律自己的公司。对于我来说,摩尔定律将死就是一个伪命题,这和忧郁某天我们会缺少食物、缺少空气等等一样。



许多人以为摩尔定律代表的不外是晶体管变得越来越小,但现实上摩尔定律代表的是推动这一转变背后的千千万万个手艺创新。对于某个手艺来说,它会随着时代的演进而逐渐落伍,但大量这样的手艺创新连系在一起,就能推动整个领域不停向前。


以前,晶体管的长宽高约莫各是1000个原子,现在晶体管的尺寸变成了长宽高各10个原子,因此尺寸缩小了一百万倍。现在的手艺允许人们直接对原子举行排列,这理论上会获得更小的晶体管。但在现实生产中,你是无法对10的23次方个原子逐一排列的。因此,科学家们在物理、化学、质料等多个领域举行了许多创新,使得我们能稳固地制造高良率的半导体器件,而这些创新也是摩尔定律背后的基本推动气力。


作为盘算机架构师来说,我们需要做的是思量若何行使这些不停增添的晶体管,并基于此设计更高效的盘算机架构。我的老朋友Raja Koduri曾说过,晶体管尺寸每缩小10倍,就会衍生出一种全新的盘算模式。他也将现在的盘算模式分成了标量盘算、向量盘算、矩阵盘算和空间盘算四类,划分对应基于CPU、GPU、AI ASIC和FPGA的盘算。同时,我们也要思量许多制约因素,好比人自己不会变得更伶俐,而且团队的规模不会不停增进。以前我们会使用更快的盘算机来辅助我们设计盘算机自己,但现在这种方式已经不再有用,我们也因此需要对设计软件举行不停的重构和更新。


4种盘算模式,图片来自英特尔


结语


科技的生长离不开大师的推动。作为从业者,我们应该喜悦生于这个如火如荼的年月,由于这里随处充满了无限的时机和挑战。作为普通人,我们也应该喜悦生涯在这个时代,由于能够享受科技的生长为生涯带来的无尽便利。


本文来自微信民众号:老石谈芯(ID:laoshi_tanxin),作者:老石                    

版权保护: 本文由 原创,转载请保留链接: http://www.allart.com.cn/html/2021/0810/4762.html

相关文章