如果面临在现代边缘/设备SoC中为人工智能处理做出架构选择,将面临三个选择,即计算能力相对于用于存储权重的本地内存的位置。
In, at, or near?
compute-in-memory (CIM)和compute-near-memory (CNM) 这两个术语起源于数据中心系统设计中对架构的讨论。有大量文献讨论了各种架构的优点。所有分析归结为试图在数据中心的处理元素和存储元素之间更新工作数据集时,尽量减少功耗和延迟。
在边缘设备的人工智能推理优化片上系统(SoC)的专业世界中,但有三个方案需要考虑:in-memory, at-memory 和near-memory compute。
In memory compute:海市蜃楼
compute-in-memory是指十多年来将计算融合到SoC设计中使用的内存位单元中的许多不同尝试。几乎所有这些都在考虑的DRAM或SRAM(或更奇特的内存,如MRAM)的位单元中采用了某种模拟计算。理论上,这些方法通过在模拟域执行计算(特别是乘法)来加快计算速度并降低功率。虽然这是一个看似令人信服的想法,但失败的原因有很多。
从这样一个事实开始,即广泛使用的片上SRAM已经完善/优化了近40年,用于片外存储的DRAM也得到了完善/优化。这个时候加入模拟计算会导致面积和功率效率低下。
compute-in-memory的另一个主要缺点是,这些模拟方法只执行人工智能推理中所需的非常有限的计算子集——即卷积运算核心的矩阵乘法,无法建立足够的灵活性来覆盖所有可能的卷积变化。
Near memory compute:近了但还是非常远
SoC推理设计方法的另一端是最大限度地减少片上SRAM内存的使用,并最大限度地利用大规模生产的低成本存储器(主要是DDR芯片)的概念。该概念侧重于大规模DRAM生产的成本优势,并假设在最小的SoC SRAM和足够的低成本DRAM的带宽下,人工智能推理子系统可以降低SoC成本,但通过依赖与外部内存的快速连接来保持高性能,通常是专门供人工智能引擎管理的专用DDR接口。
虽然乍一看成功地减少了专门用于人工智能的SoC芯片面积,从而略微降低了系统成本,但近内存方法有两个主要缺陷,削弱了系统性能。首先,此类系统的耗电是不正常的。下表显示了将32位数据字移动到AI NPU核心的相对能源成本:
紧挨的寄存器 | 1 |
紧挨的小型SRAM | 2-3 X |
片上更大的SRAM(1+毫米距离) | 70 X |
DDR或HBM | 225 X到600X |
功率消耗归一化为直接相邻的寄存器
每次将数据从SoC传输到DDR,消耗的能量(功率)是本地与MAC单元相邻的寄存器传输的225至600倍。即使是离MAC单元相当“距离”的片上SRAM,其能源效率仍然高3到8倍。由于大多数此类SoCs的功耗耗散在消费者级设备中受到限制,主要依赖外部内存的功率限制使近内存设计变得不切实际。此外,始终依赖外部内存的延迟意味着,随着更新更复杂的模型的演变,这些近内存解决方案将因延迟而遭受显著性能下降。
功率过大和性能低的双重打击意味着,对于我们的芯片架构师来说,近内存的方法“太热了”。
At-memory:恰到好处
At-Memory计算架构是边缘和设备SoCs的正确解决方案。再次参考上面的数据传输能源成本表,内存位置的明显最佳选择是紧挨着的片上SRAM。保存到本地SRAM中的计算中间值消耗的功率少200倍。但这并不意味着你只想拥有片上SRAM。这样做对适合实现的模型尺寸(权重尺寸)设置了上限。
对于SoC设计师来说,最好的替代方案是利用小型本地SRAM(最好在一系列计算单元中大量分布)的解决方案,以及这些SRAM和DDR内存的离片存储之间智能调度数据移动,以最大限度地减少系统功耗和数据访问延迟。