虽然CPU仍然在不断发展,可是它的性能已经再也不仅仅受限于单个处理器类型或制造工艺上了。和过去相比,CPU性能提高的步伐明显放缓了,接下来怎么办,成为横亘在整个行业面前的大问题。html
自2010年开始,单个CPU内核的处理能力就逐渐中止了增加的脚步,发热和噪声等和功耗相关的问题迫使处理器公司另辟蹊径,再也不汲汲于推高时钟频率,转而在CPU中集成更多内核。多核设计的引入,下一代制造工艺对功耗和性能的改进,推进着处理器性能继续跟随着工艺升级的步伐大幅提高。可是如今,制造工艺升级对性能的提高幅度也大不如前,再加上许多公司已经彻底中止了在更先进工艺节点上的努力,CPU性能的提高再次遇到了瓶颈。linux
CPU性能提高乏力的严峻现实影响到了多个行业的发展。软件开发人员已经习惯了并理所固然地预计计算和内存资源将会不断增加,可是如今,CPU性能提高的速度大不如前了。正是在摩尔定律的加持下,软件可编程能力和丰富的功能集合才得以出现并发挥重要做用,也给硬件工程师和软件工程师提供了一种缓冲。算法
“因为摩尔定律,计算能力的增加和加速在部分程度上应该归功于英特尔等公司不断前进到下一代工艺节点上,从而使得计算引擎自己的优化再也不那么重要了,”Microchip旗下美高森美战略营销高级总监Nilam Ruparelia说。“再加上软件技术自己的进步,使得软件生产力提升的速度大大超过了摩尔定律。若是可以让编程变得轻松容易,就会有更多的人从事编程。经过软件完成各类事务的能力也已经大大加强。”编程
工艺的升级愈来愈难了。Flex Logix首席执行官Geoff Tate表示,“处理器已经再也不是执行计算任务的惟一解决方案了。看看数据中心吧,以前,这里面惟一的处理器件只有x86,可是如今,各类配置的FPGA和GPU处理器的身影几乎无处不在。”缓存
这种异构方案在人工智能/机器学习的设计中尤其广泛。“根据运算的性质,颇有必要将矩阵运算或密集型的线性代数运算放到GPU上执行,”Arteris IP营销副总裁Kurt Shuler说。 “你能够设计本身专属的ASIC进一步优化计算性能,也能够把一些任务负荷分配到FPGA上。固然,你可能依然须要CPU来管理高级别的数据控制流。总之,处理器件的数量越来愈多,并且变得愈来愈复杂。若是你分析一下数据中心就会发现,它们变得愈来愈异构化了。”网络
之因此出现这种转变,是由于物理规律的限制。“咱们在RISC和CISC架构上已经作到头了,”西门子旗下Mentor的Questa产品经理Gordon Allan警告说。“可编程性和传统逻辑都在演变。如今,各类定制逻辑器件实现通用功能,而后经过智能互联技术把全部这些功能融合在一块儿。而以前则是经过软件将一些微操做组合在一块儿造成算法。”架构
这固然不意味着CPU会消亡或者中止演进,只不过CPU架构师的工做变得更加困难了。“通用CPU架构和微架构依然会继续发展,并且足以高效地胜任大多数任务,并将设计、生态建设和复杂性维持在可持续的水平上。”Arm嵌入式和汽车业务线战略副总裁Tim Whitfield表示。并发
影响架构改变的最大障碍之一是可编程能力。“可编程能力的大小,甚至没有可编程能力也不会对总体效率带来多大影响,”Mentor的HLS平台项目主管Russell Klein说。 “传统的CPU、DSP、多核CPU和FPGA都是可编程的,但具备大相径庭的效率和不一样的编程难度。可编程能力在必定程度上下降了效率,可是影响效率的主要因素却在于并行计算能力。DSP具备执行特定任务的能力,其效率高过CPU。GPU也有一些特定于专业领域的计算单元,并且引入了并行计算。FPGA和ASIC的并行计算能力更为出色。”机器学习
硬件器件的异化比较容易,摆脱旧有的软件范式却很是艰难。“业界将应用程序进行更改,以适应更普遍的芯片类型。”Allan说。“这致使了新的软件生态系统和新API的出现,可是它们都只不过是在原有软件上构建了更多的层而已。这样作,都是为了试图让一个触及性能极限和低功耗极限的处理器继续工做而已。如今咱们须要一些新的方法。”工具
“在这种状况下,人们应该把注意力从在软件开发上进行修补转移到新型硬件上,只有适当的硬件才能实现真正的节能。”Menta业务开发总经理兼副总裁Yoan Dupret说。“这将最终催生具备高度灵活性的异构芯片。Tsugio Makimoto博士以前就曾经预测过,今天咱们正在进入“高度灵活的超级整合”时代。”
CPU的改进
对于那些认为CPU已经走入死胡同的说法,我想引用马克吐温先生的话回怼一下:“说我已经死了的报道太夸张了。”
CPU还有若干进一步改进的路径。其中之一就是针对特定功能添加定制指令,不过这也有必定的风险。“若是器件可编程,增长了指令就意味着增长了硬件的复杂性,”GreenWaves Technologies业务开发副总裁Martin Croome警告说。“新的指令单元里的每个晶体管都有静态泄露,若是器件有低功耗指标,状况就糟糕了,新指令单元不只增长成本,也提升了功耗。你必须当心,看看增长新指令是否利大于弊。”
在CPU的发展历史中,新的指令单元不断被增长进来。“随着制造工艺的发展,处理器设计人员可使用的晶体管愈来愈多,因而他们增长了愈来愈多的功能,以加速运行在其上的单线程程序。”Mentor的Klein说道。“他们添加了各类指令单元,好比预测执行、分支预测、寄存器别名等等,可是,添加新指令单元的得失对比使得这条路子越走越窄了。”
在大多数状况下,能力整合能够带来必定的好处。“在处理器件的发展历史中,咱们屡次看到通用CPU集成各类加速器的情形。”Arm的Whitfield解释道,“一般,咱们会对架构和微体系架构进行调整,将加速度集成到通用CPU中,这方面的例子包括浮点和加密加速器。”
还有一条路径:作减法。“咱们认为RISC-V这种新的方案更好,它能够帮助咱们在必定程度上克服摩尔定律的放缓,”美高森美的Ruparelia说。“一种全新的、优化的架构给咱们提供了更多的方法,以克服摩尔定律放缓带来的挑战。若是硅片工艺的进化中止了,就像发条被拧到了最紧同样,你必须优化全部的层面-CPU、特定域的架构、工具链,甚至编译器也要针对特定应用进行优化。”
必须根据最终产品的目标设计合适的处理器。“经过比较不一样处理器的能效,算法能够在消耗最少能量的状况下在相对简单的处理器上执行,”Klein补充说。“更大的处理器能够更快地完成工做,可是它们的能效低得多。此外,在几个小型处理器中并行运行某个算法,其能效比在一个大型处理器上运行这个算法高得多。随着更多简单内核的引入,电压和时钟频率能够进一步下降,从而进一步提升能效。”
优化计算引擎
针对特定任务打造内核是一项成功的策略。“可编程DSP是分担CPU密集计算应用的理想选择,”Cadence的Tensilica IP产品管理、营销和业务开发高级主管Lazaar Louis说。“DSP灵活、可编程,并且支持Open VX和Open CL等开放式、跨平台的加速标准,可轻松将应用程序移植到DSP。对于某些常见应用,DSP还能够与专用硬件加速器配合使用,不只能够发挥加速器的更高功效,还能够结合DSP的可编程能力,从而知足应用在产品生命周期中不断变化的需求。”
许多架构都由于没有提供强大的软件开发环境而失败了。“GPU是一个经过打形成本可持续的独立开发环境和软件生态系统而大获成功的典型例子。”Whitfield说。“有的机器学习算法看起来须要一些专业的加速器,它们将做为一种粗粒度的加速引擎和通用CPU一块儿使用。”
GPU的成功之路很是有意思。“GPU是一种针对特定域的架构,刚开始主要面向游戏,如今又被用到区块链和神经网络上,”Ruparelia指出。“GPU有一些传统CPU上很难实现的功能,针对特定域优化的体系结构可以实现更高的单元计算性能和软件生产力。神经网络是一个典型的例子,和一个专门针对它设计的可编程平台相比,若是你在CPU上运行它,将花费10倍之多的运行时间和功耗。”
可是GPU并无针对神经网络进行专门优化。“在卷积神经网络中,80%的时间都消耗在卷积运算上,”GreenWaves的Croome说。 “卷积有各类形式,运算量也各有大小。涉及到的概念有填充、膨胀、步幅以及滤波器的大小等。卷积有许多参数,若是你试图构建一个能够在硬件中完成全部卷积运算的系统,这个系统将使用大量当前已知的硬件。你必须使用最多见的卷积参数,并构建一些可以保持足够灵活性的东西。”
那么,是否是有人能够为定制加速器提供完整的软件开发环境呢?
“咱们正在编写优化的内核,并给一些矢量化的运算进行了手工编码,”Croome继续说道。“咱们使用了标准的向量操做,可是即使如此,你写代码时,当涉及到寄存器加载操做时,也须要考虑如何优化编码,以便编译器可以以一种特定的方式定位到它。”
这就是加速器的编码开始变得困难的地方。Synopsys解决方案事业部产品营销经理Gordon Cooper说:“使用一组GPU或CPU训练神经网络,而后在GPU上运行该神经网络很是容易。人们能够经过Caffe或TensorFlow作到这一点。可是,当咱们使用专用硬件知足嵌入式系统的要求,好比低功耗、小尺寸时,GPU只能保证性能,却没法保证能效。使用异构方案的缺点是,不管是加速器仍是专用处理器,都有各自不一样的工具链或者多个工具链,你须要学习并管理好它们,这可不像给GPU编程那么简单。”
这是一种微妙的平衡。“使用GPU的优点是很灵活,可是没法保证功耗和尺寸,另外一方面,没有编程环境,或者很难使用,同样会让你举步维艰,”Cooper补充道。“在加速器上变成永远不会像为CPU编写代码那样简单。你能够参照DSP世界的编程进行优化,先用C语言编程,而后优化内部的循环体。这是一种平衡。”
改换硬件
长期以来,FPGA都自我标榜为可编程的硬件。“硬件RTL工程师能够将FPGA用做可编程平台,这没有任何问题,”Rupatelia说。“可是,当软件工程师把FPGA做为一种可编程平台时,麻烦就来了。这个挑战已经存在很长时间了。”
今天,FPGA也被嵌入到了ASIC中。“eFPGA IP是异构方案的一种元素,怎么个用法取决于架构定义和代码的划分,”Menta的Dupret说。 “HLS工具能够为此提供帮助,但最终的目标是为异构体系结构自动化地进行代码划分。咱们如今尚未实现这个目标,但咱们确信这是行业发展的方向。”
这也极可能成为物联网硬件开发的重要一环。“咱们如何确保物联网设备的灵活性,而且能够现场升级?”Allan问道。“能够须要结合使用软件和智能FPGA技术,它们都是当今CPU解决方案里的技术。咱们如今谈论的是,定义产品时更少依赖硬件/软件交互,更多依赖编译好的逻辑器件、内存和可编程器件,以实现产品的灵活性。”
这可能意味着改变对软件的传统见解。Ruparelia指出:“当今的FPGA工具链依然不支持软件工程师在不了解FPGA的状况下直接使用它,这方面的进展甚微。不过,如今能够更加容易地针对特定领域或特定应用进行编程了。咱们正在研究神经网络上使用的很是具体的中间件,它们抽象出了FPGA的复杂性,并保留了足够的灵活性,可供上层软件调用。”
除了处理单元,内存架构也存在进一步改进的压力。“硬件加速器正在部署更多可用内存,”Shuler说。“芯片到DRAM或HBM2的通讯越少,效率就越高。咱们该怎样把全部数据都保存在处理单元中,并在处理单元之间交互?处理器单元有时会有本身的暂存存储器,有时会链接到网格里的存储器中,那样的话,存储器就被分割开来,在整个架构中散落地无处不在。”
“咱们结合芯片和处理器开发了多级缓存架构,将内容可寻址内存做为控制优化的关键技术,”Allan解释道。“而后咱们开始研究一致缓存架构,其中,多个处理器围绕在共享内存空间周围,互相协做。如今,咱们在计算器件中引入了神经网络,内存也是一个关键因素。内存技术将继续演进,咱们会发现新的方案不断出现。HLS将发展为容许定制内存架构,以帮助加速特定算法。在这个领域有许多创新,能够将算法输入到HLS流中,并使用智能内存技术优化解决方案。”
和通用CPU形态相差最远的是专用硬件解决方案。“这是一种单线程编程模型,存在实打实的限制,”Klein指出。“将一个算法从CPU上转移到没有引入任何并行性的定制硬件上当然也能够提升效率,可是达不到人们的预期。进一步提高效率的关键在于找出并利用算法里的并行性。”
最终,须要软件思想的革新,推进设计人员以并行的方式实现各类算法。
原文来自:http://biz.51cto.com/art/201812/588037.htm
本文地址:https://www.linuxprobe.com/cpu-performance-weakness.html编辑:CG.JIANG,审核员:逄增宝