也许你正在为边缘计算设计一个嵌入式推理引擎。或者您正在汽车视觉处理方面迈出下一步。又或许你有可以在数据中心挑战英伟达和谷歌的洞察力。在广泛的性能需求、环境和应用中,人工智能加速器架构不仅在设计方面,而且在验证和实施方面都提出了独特的挑战。从一种架构转移到FPGA——这几乎是这个领域的一个强制性步骤——然后转移到生产ASIC是一个不平凡的旅程。但是如果你提前计划,这不一定是一次冒险。
如果您选择——大多数团队都会选择——用FPGAs进行概念验证或验证平台,那么从一开始,您就会被同时拉向三个方向,如图1所示。架构师希望您的FPGA实现尽可能接近他们的微架构。对他们来说,关键是看设计如何有效地实现他们的算法。但是,软件团队会督促您针对性能优化FPGA设计。这意味着改变架构以适应所选FPGA芯片的优势和限制。你可以依靠营销来增加这种压力——主要是如果他们的计划包括早期进入FPGAs市场。存在这样一种风险,即概念的证明会像科学怪人一样,有自己的生命。
图1:如果你选择在FPGAs中做一个概念验证或验证平台,你会被拉向三个方向:来自架构师、软件团队和生产需求。
第三,需要将设计移植到ASIC上进行批量生产。这将为您带来竞争力所需的性能、动力和面积。理想情况下,ASIC设计将准确反映最初的理论架构,并针对您选择的ASIC工艺和IP库进行优化。通过转换成熟的FPGA设计,您可以在多大程度上获得ASIC设计,这是一个至关重要的问题。答案将取决于架构师、FPGA和ASIC团队合作的紧密程度。
也许支持这种说法的最好方式是看看一些区分人工智能加速器的架构特征,并在设计过程中遵循它们。
并行处理是人工智能加速器的基础。它可以通过大量小型专用处理核心来实现,如特定算法的GPU。或者它可以以数据流的方式完成:专用处理器的流水线。这两种架构都给FPGA实现带来了挑战。
设计者可以在RTL对处理元件及其互连进行编码,并将RTL交给FPGA设计工具。但是,要获得具有足够设备利用率和性能的设计——获得接近100%的布线——通常至少需要在平面规划和布局方面进行人工干预。
这种规划必须关注FPGA中资源的可用性和位置,而不是加速器的原始架构。例如,该体系结构可能希望计算元素群集在本地组中。然而,FPGA可能要求您将计算元素分散在整个芯片中,甚至将它们分成更小的模块,以确保足够的路由和RAM资源。这可能需要改变互连架构,例如改变总线结构。
还会出现其他选择。例如,深度学习推理加速器的设计师经常使用精度降低的算法——比如8位而不是32位——来提高速度和节省能源。但出于性能和资源的原因,FPGA团队可能希望使用FPGA的32位乘累加硬宏,而不是由逻辑单元构造的8位乘法器。这种选择会使FPGA设计逐渐偏离原始架构,并影响转换过程。
ASIC转换,然后,是时候将实现转移到ASIC上了。在小型、简单的SOC中,FPGA到ASIC的转换意味着一个近乎机械的逐步过程。拿出任何特殊的FPGA功能,如乘法累加模块、高速串行接口、PCIe接口和DRAM控制器。用功能等同的ASIC IP替换它们,并对内部总线或接口进行任何必要的更改以连接它们。为了重新合成逻辑,插入新的时钟网和自测结构,分配功率,并进行验证。
这对于人工智能加速器来说仍然是可行的。在FPGA中工作的任何东西都可以通过这种方式转移到ASIC中。但是,您为优化FPGA设计所做的设计更改呢?由于ASIC中有基本上无限的逻辑和路由资源以及大量的第三方IP库,这些针对FPGA的更改将是不必要的,甚至可能适得其反。
进行转换的团队必须理解最初的设计意图,这样他们才能根据具体情况决定是使用FPGA设计还是恢复最初的架构。这对于确定合成哪个代码和选择如何最好地使用IP是正确的。
再举两个例子可能会有帮助。首先是记忆。由于它们的并行架构,AI加速器通常在处理元件内部或之间采用许多不同形状、大小、类型和速度的小型RAM实例。这种做法完全符合ASIC设计的优势,但它可能会对FPGA造成严重破坏。虽然可以将各组FPGA逻辑单元转换成逻辑结构中的小RAM,但设计人员通常会在FPGA中使用大型硬连线可配置RAM模块。这给FPGA团队留下了两个选择:要么修改原始架构,使用大的共享RAM块,而不是许多较小的块,要么设计一个包装FPGA的大块RAM的包装器,以仿真一组较小的实例,希望不会耗尽块RAM附近的路由资源。
图2:从FPGA迁移到ASIC提供了更多选择。决策取决于对设计意图的清晰理解。
当从FPGA转移到ASIC时,有更多的选择,如图2所示。转换团队应该直接转换FPGA设计吗?经验丰富的转换供应商在ASIC设计中实现FPGA模块RAM的功能不会有任何问题。或者团队应该恢复到具有许多分散的RAM实例的原始架构?更小的ram将更快、更节能,并可能恢复原始架构的数据流,消除可能的内存瓶颈。然而,决策取决于对设计意图的清晰理解。
多合一,还有多个FPGAs的问题。许多加速器设计对于单个FPGA来说太大,必须分布在多个芯片上。这些芯片如何相互通信将影响转换过程。
例如,如果FPGA通过诸如存储器总线的高速并行总线链接,设计者可以将所有FPGA的内容放入ASIC中,通过相同的并行总线排列链接。假设FPGAs通过类似PCIe的东西连接。在这种情况下,设计人员将不得不移除PCI接口,并根据模块间数据流的性质,用直接并行连接或可能的片上网络来取代它们。重要的是要回顾原始架构,看看它是否被修改以适应芯片到芯片接口的插入——例如,通过插入大缓冲存储器或创建消息传递协议——并消除这些修改。
密切的合作,一旦功能设计完成,工作就可以进入时钟架构了。这里,ASIC也不受FPGAs的限制。转换团队可以研究原始架构的工作原理,并利用它为本地时钟区域、门控和频移提供的所有机会,所有这些在ASIC领域都是现成的。
图3:该表列出了FPGA到ASIC转换过程中的每个步骤,并指明了负责执行该步骤的人员。
同样,经验丰富的转换团队可以利用他们对设计意图的理解和对测试供应商能力的了解,利用加速器的并行架构来实施并行内置自测。这种优化超越了ASIC设计,深入到供应链中。做得好的话,它将大幅降低测试成本,显著节约整体单位成本,如图3所示。
我们已经看到,将AI加速器设计从中间FPGAs转换为ASIC几乎是一个机械的过程。但由于人工智能高度并行加速器的性质,理解原始设计意图和架构微妙之处、能够识别FPGA特定优化、拥有人工智能芯片经验、能够在客户和供应商专家之间自由分配任务的转换团队可以实现更好的结果。从一开始,具有出色功率、性能和面积的ASIC就是设计的全部内容。