中文 英语

权衡提高性能,降低功耗

定制设计正在成为常态,但让它们发挥作用却没有那么简单。

受欢迎程度

在竞争激烈的市场中,通用芯片不再被接受,随着设计变得越来越异构,并针对特定的工作负载和应用程序,这种趋势正在增长。

从边缘到云端,包括从车辆、智能手机到商业和工业机械,越来越多的趋势是用最少的能源最大化性能。这就是为什么苹果、Facebook、谷歌、亚马逊、微软等科技巨头正在为他们的目标应用程序开发定制芯片。

计算技术在历史上一直在通用和特定领域之间摇摆,但是扩展的成本在上升,而扩展的成本在下降PPA(功率、性能和面积)的优势,以及对这些系统更加智能化的关注,正在使规模严重向定制倾斜。这种专一性可以设计成一个复杂的SoC,但它也可以涉及具有不同计算元素的高级包,如gpu、cpu、fpga、自定义加速器以及不同的内存类型和配置。

gpu已经被用于高性能计算社区,人们可以看到它的功率优势,”ibm的杰出发明家史蒂文·吴(Steven Woo)说Rambus.“人工智能也是一个目标应用程序,人们想在下一代超级计算机上做什么,所以开始讨论如何使用这些gpu作为加速器。但在这一切中,gpu给了你一个很难运行的功率范围。你只需要看看功率信封,就会发现没有办法像以前那样移动数据。你知道每比特移动一个数据的皮焦耳。你看着这些,然后说,‘我不可能再做我以前做过的事情了。’”

在过去,开发人员只需等待下一个硅节点,就会有一个更大、功能更强的处理器运行在更小的几何技术基础上,能够以更低的功耗提供更高的性能。

HLS平台项目总监Russell Klein表示:“随着规模放缓,这不再是一种可行的策略西门子EDA.“为了满足当今日益增长的计算需求,开发人员一直在寻找替代方法。在计算资源和可用能量受到严重限制的边缘尤其如此。在让加速器可编程和获得最大的性能和效率之间总是有一个权衡。gpu、tpu和类似的小型处理器阵列具有很大的灵活性,因为它们可以很容易地重新编程,但它们在性能和效率方面留下了相当大的问题。为了实现绝对最高的性能和效率,需要一个固定的硬件加速器。”

但是在性能和能源效率之间是需要权衡的。“越快越好意味着把时钟频率和电压推到极限。这也意味着增加更多的计算元素,更多更大的缓存内存,以及更宽的数据路径。所有这些都提高了性能,但消耗了更多的能量,”克莱因说。

特别是在边缘在美国,这种转变是由数据的爆炸式增长以及将所有数据转移到云端、处理并发送回边缘设备的代价(经济、电力、时间)所驱动的。事实上,边缘构建是这些因素和对实时(或至少接近实时)结果需求的结果。

Tensilica Xtensa处理器IP的产品营销总监George Wall表示:“这些设计师面临的主要挑战是在给定的能源预算内实现尽可能高的性能。节奏.“这些用例正在推动领域特定处理解决方案的扩散。在这些用例中,这都是关于每毫瓦计算和每毫焦计算的,如果不根据手头的任务定制计算资源,就无法有效地达到这一目标。无论是汽车雷达,还是自动驾驶汽车的目标分类,还是嘈杂环境中的语音命令识别。机器学习算法在这些领域的增长加强了这些领域计算需求的爆炸性增长。但能量是有限的,没有人想要更大的汽车电池。”

这在汽车电子领域尤为重要。“车辆内部的智能需求,以及与车辆之间的通信需求,都在急剧增加,”戴姆勒汽车合作总监罗伯特•戴(Robert Day)表示手臂的汽车和物联网业务线。“然而,在特定的环境中定义‘边缘’意味着什么,以及每个变体的边缘需要什么样的应用程序和处理,差异很大。在汽车领域,这些可以是与监控环境的摄像头相连的路边单元,也可以连接到交通信号等基础设施元素,或者连接到所在区域的车辆。这些单元的一个共同主题是数据的本地处理和聚合,而不是直接将数据提供给云端进行处理。”

仍然发挥着作用,但它利用了其庞大的计算能力和可接受的结果延迟水平。Day说:“这些数据一旦在本地处理,就可以作为环境快照馈送到云端,然后云端可以进一步处理数据,提供该地区的世界视图,无论是天气、交通还是事故。”“这些综合信息可以反馈给该地区的车辆,以帮助驾驶员辅助、路线规划和自动驾驶。这些边缘单元通常会运行与云类似的工作负载,但需要在更高效的“嵌入式”计算元素上运行,包括cpu、gpu和mla。这些边缘单元还可以与当地车辆通信,直接‘实时’警告他们可能发生的危险,如事故、天气状况或附近脆弱的道路使用者。”

尽量减少数据移动
设计的核心是了解在哪里工作最好,然后根据性能和电源需求划分计算、内存和I/O,在时间和成本允许的情况下使用尽可能多的定制元素。

Rambus的Woo说:“你现在实际上看到了实践中的好处。”“可能我们看到的最重要的事情是,特定领域的处理器非常擅长匹配特定计算所需的资源,不包括厨房水槽,只包括你真正需要的资源。人们意识到计算在很多方面都很重要,但更大的瓶颈是数据的移动。因此,这些特定于领域的处理器不断推动计算速度越来越快的能力,但如果不能使这些管道保持完整,那么这样做就没有意义了。这也涉及到芯片上和芯片外的数据移动。一旦这些芯片上有了数据,它们就会尽量不移动数据。他们试图尽可能多地使用它,因为如果数据不断地被移动和删除,这也不是一件好事。特别是人工智能加速器,随着计算引擎的速度越来越快,它需要更多的带宽,而真正有效的内存解决方案只有几个。当您必须移动数据时,您希望它尽可能节能。然后,一旦你把它放在你的芯片上,你就尽量不要移动它。”

一些系统架构师采取的方法是保持一些数据稳定,并改变围绕数据进行的计算。“把它想象成一个巨大的小型计算单元阵列,”Woo说。“这些计算单元可以存储少量数据,并且有不同的晶体管组合来对这些数据进行不同类型的计算。实际上,将这些计算资源集中在一个地方,而不移动数据,比拥有独特的专用资源并在这些小计算单元之间来回传输数据要好得多。在机器学习中,这被称为权重静止。应用在机器学习中,你执行所有这些重复的计算,将权重乘以输入。权重被保存在一个地方,然后其他数据在架构中流动。在一些计算中,重量会被反复使用,所以保留它对你有好处,如果可以的话,让它保持不变。”

这对性能有很大的影响,但也需要对特定领域内的数据移动有深刻的理解。

Klein表示:“有效地缓存数据和中间结果对于优化性能至关重要。“任何在设计中最小化数据移动和减小内存大小的东西都将提高功率和性能。将计算从通用处理器上的软件转移到硬件上可以极大地改善系统的操作特性。”

他解释说,硬件加速器可以显著优于软件,原因有很多。“首先,处理器是相当串行的机器,而硬件加速器可以并行执行大量操作。其次,处理器有一组有限的寄存器来保存中间结果。在大多数情况下,他们需要将结果写入本地缓存,甚至可能写入主存,这是缓慢的,消耗大量的电力。在硬件加速器中,数据可以直接从一个处理元素传递到下一个处理元素。这节省了大量的时间和精力。最后,硬件加速器可以针对它将要处理的特定任务进行定制。通用处理器中的乘数需要能够处理任何程序发送给它的任何内容,这意味着它需要32或64位宽。硬件加速器中的乘法器可能只需要11位或14位宽,以支持正在执行的计算。”

许多应用程序可以从浮点数表示转换为定点数表示。定点操作符的大小大约是等效浮点操作符的一半。此外,这些应用程序并不总是需要32位来表示数字。根据所需的范围和精度,可以使用较小的表示形式。这在许多方面有利于设计。首先,要移动和存储的数据更少,这意味着内存和数据路径更小。其次,算术和逻辑运算符可以更小。

乘数是设计中较大的运算符之一,大致与因子输入大小的平方成正比。8位定点乘法器的大小和功率大约是32位定点乘法器的1/16。请注意,1位乘数是一个“and-gate”。二的力量没什么神奇的。加速器,倍增器可以处理任意大小的数字,任意数量的比特。操作数大小的任何减小,只要不影响计算,都有利于设计。

推理是一个算法的例子,可以使用显著降低的精度,但仍然提供良好的结果。”神经网络通常使用32位浮点数进行训练,但它们可以用于使用更小的特征和权重定点表示进行推理,”Klein说。神经网络中的值通常归一化到1.0到-1.0之间,这意味着大多数浮点数表示的范围根本没有被使用。在某些情况下,使用更少比特的量化效应实际上可以提高神经网络的性能。在最近的一个例子中,我们能够使用10位定点数字,并且精度仍然在原始浮点神经网络实现的1%以内。一个10位的定点乘法器大约是32位浮点乘法器面积和功率的1/20。这可省了一大笔钱。”

权衡
要完成这项工作,需要对所考虑的每个选项的功率、性能和面积进行合理的估计。手动开发RTL当考虑多种替代方案时,实现是不切实际的,这也是为什么高级合成在过去几年中激增的原因之一。

但是不断增加的设计复杂性和对特定领域的关注也增加了对跨多个学科进行权衡的更快方法的需求。

“对于特定领域的处理器,顾名思义,你必须对该领域有很好的了解,”Markus Willems说,他是英特尔处理器解决方案高级产品营销经理Synopsys对此.“这必须转化为建筑。然后,你需要把它交给硬件设计人员,以及用于该处理器的软件开发工具——因为最终它是一个处理器,所以你的最终用户希望有一个模拟器、调试器、编译器和所有东西。你已经需要把四个不同的团队聚集在一起了。”

这对设计方法有很大的影响。“采用一个敏捷方法对于特定于域的处理器来说是至关重要的,因为你需要确保你总是根据你的域来验证它,”Willems说。“这对控制器来说很简单。每个人都知道RISC,但可能在RISC的最初几年,我们也经历了这个过程。幸运的是,到目前为止,每个人都知道它应该做什么,所以接下来是挤出微架构。现在,有了特定于领域的处理器,您又回到了创新的阶段。如果你创新,就会有不确定性。你要确保你把它带回来,这样所有必要的学科都被考虑在内,因为这是工程团队创新的动力。”


图1:多学科敏捷设计流程。来源:Synopsys对此

但要做到这一点,还需要进行一些权衡,尤其是在电力和性能方面。这两者都是用户体验的关键,而且它们是整个特定领域方法的基础。“虽然低成本的计算能力和无线连接使当今市场的这一大趋势成为可能,将更多的决策推向边缘,但增强的用户体验是这种边缘计算能力所实现的,”James Davis说英飞凌科技.“这是对最终用户的价值。”

这方面的例子可能出现在安全系统应用程序中,其中边缘计算功能需要检测人类vs.动物,或者其他应用程序中的语音唤醒词检测。Davis指出,为了优化这些应用程序的功率和性能,系统架构师和设计人员现在可以利用自主外围控制技术。为了尽可能地提高效率,他们可以确定处理器的哪些部分在特定用例的不同时间处于活动状态。这最大限度地降低了系统的总功率,同时允许关闭系统的高功率部分或进入睡眠模式。

还有其他好处。“这是系统设计师需要考虑和优化的设计的另一个方面,”他说。“有了这些新的连接边缘应用,我们总是可以通过电池供电的摄像头观看,或通过来自不同供应商的智能扬声器或连接的传感器收听。它们会监测我们的步数、健康状况、心率等。虽然增强的边缘计算功能可以实现更多的分布式计算,但它们也可以在保护我们隐私的同时实现这些高级用户体验。这意味着,这些系统可以在边缘运行复杂的DSP/机器学习算法,而不是不断地将这些数据发送到云端进行处理,因为数据可能在传输或在云中被泄露。因此,除了功率和性能的权衡之外,影响用户体验的性能的一个方面是隐私和安全,也需要考虑。”

此外,夫琅和费集成电路研究所(Fraunhofer Institute for Integrated Circuits IIS)高效电子部负责人Andy Heinig指出,为了达到越来越具有挑战性的功率目标,从最低的晶体管级和栅极级到系统级,在不同级别上进行优化是必要的。“在系统层面上,优化可以在软件方面进行,也可以在硬件架构方面进行。硬件-软件协同优化可以实现最大的性能提升。它允许设计特定领域的处理解决方案。但是,要实现最大的性能增益,光看系统层面是不够的,因为一些相关的影响只能在晶体管层面上看到(例如功率、性能、面积等)。这就是为什么未来需要在不同级别之间以及功率、性能和面积方面具有非常好的相关性的模型。”

先进的包装
一种越来越受欢迎的选择是先进的包装.苹果、英特尔和AMD的一些最先进的芯片已经在使用这种方法来定制它们的设计。英特尔和AMD正在使用芯片来简化整个过程。

“这和传统的有区别multi-chip模块(MCM)和人们现在追求的目标是芯片异质集成,”半导体业务部门产品营销总监Marc Swinnen说有限元分析软件.使用MCMs时,将一个标准芯片从封装中取出,与多个其他芯片一起放置在密集的衬底上,如陶瓷、层压板或硅中间层。然而,方法chiplet努力正在取得进展,在动力和速度上节省了很多。当你把一个芯片拆分成不同的块时,你显然会在面积上付出代价,但你也想避免在速度和功率上付出代价。”

做到这一点的方法是要记住,今天的芯片有大的I/O驱动器,这些驱动器会脱离芯片。Swinnen说:“这些芯片必须驱动PCB走线,而PCB走线又大又长,必须承受ESD冲击,并支持内置的外部接口。”“如果你要将芯片安装在一个衬底上,那里的电线非常短,非常细,你实际上可以摆脱这些大的I/O驱动器,而使用速度更快、吞吐量更高、功耗更低的驱动器,这种驱动器的范围非常短,不能驱动太多信号。好消息是这些小纸片上不需要太多东西。这就是我们的承诺——你可以摆脱整个电源环,把高速、低功耗的通信集成到芯片中,并让拆解它们的成本变得可以承受。”

缺点是这些单独的芯片、互连和包必须专门为此目的而设计,因此它们实际上不能用于其他任何用途。这可能需要一段时间和一系列的标准,在行业有足够的临界质量来在多供应商规模上工作之前。

他说:“如果你看看今天英伟达、英特尔和高通已经实现的芯片,他们确实有这些芯片的特定领域版本,但它们是以垂直集成的方式设计的,这样他们就设计了封装、芯片和整个系统。”“这是一家公司,而且很管用。但在一个开放的市场中,你从货架上随便拿一个芯片,然后认为它可以适用于许多应用程序,我们还没有做到这一点。此外,与我们目前的通用环境相比,芯片在多大程度上需要针对其特定的封装环境进行设计?”

结论
芯片行业才刚刚开始与所有可能的选择搏斗,以最大限度地提高性能,以最低限度的能量用于特定应用。这是一个系统级的挑战,它跨越了从分布式供应链到更紧密集成的硬件和软件的方方面面。

Synopsys的Willems说:“你可以想出最复杂的架构,有很好的方法来降低功耗,但如果你的软件团队必须用汇编来编程,他们就不能充分利用所有的功能。”“这就像在他们上驾驶课的时候给他们一辆赛车。这是真正的挑战——从软件开发人员的角度考虑可编程性。”

与此同时,架构师和设计人员需要记住,特定于领域的计算将重点放在围绕设计的许多其他事情上。Rambus的Woo说:“处理变得如此之快,以至于I/O变得更加重要。“内存、芯片对芯片通信,以及HBM内存等可以通过堆叠来尝试提高电源效率的概念——所有这些都支持向堆叠架构、更短的距离和非常节能的I/ o方向发展。这意味着内存接口将变得更加重要,在边缘的任何地方都是如此。在端点处也成立。如果可以的话,你会看到很多人使用片上存储器、片上缓存和相关的东西。如果他们不能,堆叠可能是解决问题的最好方法。你真的没有太多选择。你真的没有太多方法可以打破常规,所以你必须弄清楚如何改变架构来利用这些东西。”

但这不是一个选择。这是所有设计团队都必须面对的问题。

“Facebook和谷歌、亚马逊等公司都在生产自己的芯片,”Ansys的斯温宁说。每个人都看到,如果你无法控制硬件,只能依靠通用的解决方案,其他人就会擦肩而过。”



留下回复


(注:此名称将公开显示)

Baidu