可编程性成本

在芯片中应该包含多少灵活性,它应该在什么级别上可编程?这些问题正变得越来越复杂。

受欢迎程度

没有什么是免费的,对于SoC中的可编程元素来说,这当然是真的。但如果没有它们,我们就只能使用非常特定的设备,这些设备只能用于一个固定的应用程序,而且无法更新。

很少有复杂的设备是没有许多可编程层的,但是这些功能的大小正变得比过去更加重要。

增加可编程性有很多原因。其中包括:

  • 芯片启动。这包括使芯片可操作的可编程性。它可能包括校准,存储库的修复电路,以及获得功能芯片所需的其他功能。
  • 芯片的配置。一个芯片通常可以有多种功能。它可以由制造商编程一次(刻录配置信息),也可以与芯片附带的软件堆栈一起编写。在其他情况下,编程可能由用户完成,但它可能只完成一次,然后不进行更改。
  • 固件补丁。通常情况下,这涉及到芯片制造商的安全更新、操作系统更新和驱动程序改进,但在某些情况下,可能需要无线升级来解决新发现的安全漏洞。
  • 改进的算法。新的算法可以加载到人工智能系统或软件更新中,以提高性能。当涉及到FPGA结构时,它由芯片制造商进行更新,因为业界还没有研究出如何使终端系统公司能够使用这种功能。
  • 应用程序。应用程序本身由用户提供。

某些级别的可编程性只要求能够将信息写入用于控制硬件的寄存器,但通常这需要在处理器上运行一些软件。

处理器是出了名的耗电,特别是在给定任务使用了错误类型的处理器时。可用的处理选项越来越多。最近的介绍包括可扩展指令集处理器,嵌入式FPGA织物和人工智能引擎。

复杂设备包含多个异构处理器和灵活的通信结构。对于手头的任务,以及未来的潜在需求,每一个都必须适当大小。分析处理器对芯片其余部分的需求和要求已经变得比过去复杂得多。

“人们真正想要平衡的是性能、功率和成本——传统的三种,”该公司高级营销经理乔•马莱特(Joe Mallett)表示Synopsys对此.“他们是否知道足够的知识来半硬化或可能完全硬化他们试图插入的定制部件?”

可编程性是在设计流程的多个阶段添加的。“设计人员通常会选择灵活的设计,特别是在他们不知道芯片将被用于何处的情况下,或者可能在一个标准不完全理解的情况下,”托米·穆兰说,高级系统架构师Adesto.“他们希望能够覆盖所有基地。让关键的涉众就一组限制性需求达成一致也很困难。因此,这种方法倾向于增加而不是减少灵活性,并允许通过软件进行配置,或者允许硬件本身直接使用嵌入式可编程资源进行配置。但增加更多的灵活性意味着增加模具尺寸,以及设计和测试这些额外功能所需的更多工时,所有这些都会导致成本增加。”

可编程性的概念也在扩展。“最近,芯片的可编程性已经超越了传统的基于计算的CPU和GPU用例,并影响了其他类型的硅,”安诺普萨哈,市场开发经理说Mentor是西门子旗下的企业.“特别是,软件定义网络和软件定义存储利用了芯片的可编程性,通过创造新型硅及其之上的软件堆栈,极大地颠覆了市场。”

配置
支持业务模型通常需要可配置性。“我们看到了能够配置SoC的需求,这并不是什么新鲜事,或者在不同的时间以不同的方式使用相同的资源,”Pierre-Xavier Thomas说,公司技术和战略营销集团总监抑扬顿挫的Tensilica IP。“这可能取决于正在运行或用于启用不同类型服务的应用程序。该芯片能够执行某些服务,但您可能希望在不同的时间打开或关闭某些服务。你需要这种程度的灵活性。这更多的是一个业务模式启用的问题。”

我们开始看到新的可配置性出现soc.“可编程性可以分为低速和高速,”Synopsys的Mallett说。“低速度可能是你在配置芯片或创建自定义总线、接口或内存处理时遇到的问题。高速将沿着专门的人工智能处理器或安全处理器的路线。当你拥有SoC时,他们通常会试图定义一个适合大多数细分市场和应用程序的SoC,这样他们就可以瞄准尽可能多的客户。通过这种配置,他们可以潜在地扩展他们可以进入的应用程序。”

新的可配置机制正在越来越多的soc中找到它们的方法。“设计和制造芯片的成本越来越高,”的首席执行官Geoff Tate说Flex Logix.“eFPGA使单个芯片设计能够针对多个应用程序/客户需求,使用eFPGA块进行定制。多个eFPGA模块可以分布在需要灵活性的ASIC中。”


图1:配置选项有很多,比如实现一个共享的公共内部协议,允许异构缓存一致的系统,就像这个例子,AMBA ACE和CHI集群使用硬件加速器共享内存的公共视图。来源:ArterisIP

理解需求
硬件和软件可以协同设计的垂直整合公司的数量一直在增长。这使得芯片可以针对特定的应用程序进行调整。Mentor的Saha说:“可编程性和性能之间总是存在斗争。“针对特定应用的芯片可以针对该应用进行高度优化。这种对比性为硬件-软件协同设计问题增加了一个全新的维度。现在,将处理器与应用程序分开的不仅仅是ISA(硬件和软件之间定义良好的接口)。现在的协同设计问题有许多不同的层,从低级的硅到编译器、库、数据类型精度等等。”

同样,这种方法也有折衷之处。Adesto的穆兰说:“定制的解决方案需要提前工作,了解芯片设计的问题,还需要提前决定芯片能做什么,不能做什么。”“在这项工作上的前期投资可以带来更便宜的芯片,最终用户只需做最少的工作就可以使用。这样做的结果是,你能以更便宜的产品更快地进入市场。虽然在一些解决方案中构建一些灵活性可能是一个好主意,但通常如果一个问题空间是众所周知的,那么可以制作一个解决需求的芯片,而不会在额外的灵活性上浪费资源。”

但总会有不同公司设计和使用的芯片。Cadence的托马斯补充道:“只开发芯片的公司并没有所有的软件。“他们可能有一个软件示例,但他们需要让客户开发自己的算法,并在他们的芯片上启用整个系统。现在芯片需要具备足够的计算能力,易于编程,能够有效地利用芯片上的所有可编程资源来实现软件算法。”

让事情变得更加复杂的是,在安全性等领域有了新的可编程性需求。Mallett说:“传统的soc在处理器和专用的安全引导通道之间做出决定,并找出需要配置的部分以及可以加强的部分。”“安全有两个方面。第一部分是引导系统,第二部分是操作系统。第一种由某种安全引导或其变体来处理。操作有许多不同的处理方式,但许多公司通过处理器处理它,您可以通过在操作系统下面运行虚拟机来分离某些类型的操作。配置整个安全性处理器的能力使您能够潜在地将这两个用例组合到一个结构中,在这个结构中,您可能能够拥有由结构本身处理的启动安全性和运行时安全性。这是一种不同于过去使用的使用模式,但这是一个人们正在关注的领域,因为漏洞不断变化,安全本身的定义也在变化。”

调整处理器的大小
当摩尔定律充分发挥作用时,每一代芯片都比上一代具有更强的计算能力,并且可能从非常相似的软件工作负载开始。这意味着计算空间几乎是给定的。托马斯说:“对于更多的处理和更复杂的处理有很多要求,以便能够在新芯片上快速部署算法。”“在你设计芯片的时候,这些算法可能是一种进化。人们正试图在给定的芯片面积和功耗预算上投入尽可能多的功能,以便在该芯片上高效地开发算法。”

新的应用领域正在改变其中的一些需求,并要求对系统级别进行额外的考虑。托马斯说:“例如,你从传感器获得的数据量非常大,以至于你不想将这些数据传输到中央计算机或云端。”“你需要快速处理大量的数据,以确定你需要携带到下一级决策链的重要数据。”

许多这些系统依赖于人工智能处理器,这些涉及到全新的处理范式。Mallett说:“虽然处理器公司可能对如何处理他们的人工智能引擎有了想法,但他们还没有足够巩固架构,或者可能还没有足够的使用情况来了解他们最终可能不得不支持哪些算法。”“通过使其可配置,或至少部分可配置,他们可以在需求可能尚未设定的领域扩展SoC本身的能力。”

知识的缺乏不仅会对软件造成影响。“传感器生成的数据需要经过一个神经网络机器学习发动机,”托马斯说。“人工智能正在迅速发展,不断有新的神经网络出现,它们可能具有不同的‘形状’。它们可能不能很好地映射,这取决于可用硬件的形状。所以当新的网络可用时,你会遇到一些效率问题,你不能修改芯片。这可能导致最终系统的表现令人失望。”

FPGA面料越来越多地被用来解决这类问题。Flex Logix的Tate说:“有些工作负载在FPGA上比处理器运行得更好。这是Xilinx/Intel服务器中FPGA PCIe板的蓬勃发展以及微软数据中心中FPGA的使用背后的原因。现在,eFPGA集成使SoC设计人员能够使用eFPGA来加速最重的工作负载,以更低的成本卸载处理器以获得更高的速度。”

这些类型的处理器必须考虑的不仅仅是计算能力。托马斯说:“你可以继续投入更多mac电脑来解决这个问题。“但问题是有多少能量,有多少数据必须输入和输出,因为人工智能问题是系数和激活之间的大规模数据传输问题。mac越多,输入必要数据所需的吞吐量就越大。”

锤表示同意。“也许所有算法的基本数学引擎都是相同的,可配置的部分与数据互连有关,以及不同算法的内存如何相互对话。”

这改变了编程范式。Mallett继续说道:“在传统的soc中,像Arm处理器和寄存器控件以及可能在某些特定块上运行的一些固件往往是软件程序员能够理解的。“他们是这些芯片的主要用户。当你为软件世界提供硬件可编程性时,挑战就来了。”

结论
今天,SoC团队的工具箱中有比过去更多的工具。过去它是一个处理器,然后是一个可配置的处理器,现在是一个完全可配置的结构。这些新类型的可编程性中有许多不是程序员所习惯的。目前还不清楚这是否会成为它们的一个新的、扩展的角色,或者编译器是否会变得比过去更智能。

托马斯为未来提供了一种设想。“编译器将了解硬件中可用的功能,并帮助软件开发。我们讨论的是将算法映射到目标实现,使用库组件,这些库组件知道可用的硬件特性。因此,代码生成需要了解如何将工作分散到不同的资源中,并且可以在元数据的指导下有效地映射到这些资源。”



1评论

凯文·卡梅隆 说:

几十年后,你可能会认为他们已经学会了如何进行软件/硬件协同设计和优化方法,但它似乎仍然是旧的线性C代码和一堆难以调试的RTL。

留下回复


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

Baidu