础滨驱动的设计应用
草榴社区 产物营销经理 Ron Lowman
人工智能 (AI) 算法追求更高的性能功耗比,推动了特定硬件设计技术的发展,包括用于片上系统 (SoC) 设计的内存计算。内存计算主要公开出现在期望颠覆行业现状的半导体初创公司中,但许多行业龙头也在私下应用内存计算技术。
使用内存计算的创新设计意图颠覆 AI SoC 的格局。首先,我们来看一下使用内存计算的初创公司意图颠覆的现状。自 2015 年以来,很多公司和风投开始大举投资专门用于 AI 的新型 SoC,促使 AI 硬件取得巨大的飞跃。也只是在最近 5 年,投资才开始加速,推动行业龙头在 AI 硬件设计方面取得了诸多改进。Intel 的 x86 处理器增加了新的指令,甚至还增加了一个单独的 NPU 引擎。Nvidia 添加了特定的 Tensor 内核,放弃了 GDDR,转而实现 HBM 技术以增加内存带宽。Google 开发了专门用于 AI 算法的特定 ASIC TPU(Tensor 处理单元,图 1)。但是,即使这些架构不断改进,投资者仍然希望初创公司能够再次开发出具有颠覆性的 AI 技术。
图 1:Intel、Nvidia 和 Google 正在引入新的硬件架构,以提高 AI 应用的性能功耗比
大举投资 AI 硬件的三大主要原因如下:1) 产生的数据量呈指数级增长,而 AI 是解决复杂性问题的关键技术;2) 使用现有架构(尤其是边缘)运行 AI 算法的功耗和时间成本仍然过高;3) AI 计算引擎的并行化达到芯片尺寸极限,促使这些系统扩展为多个芯片,而这种扩展仅在云或边缘云数据中心领域较为实用。这些新的挑战共同推动了设计人员不断探索全新的创新型硬件架构。内存计算被视为最有前景的硬件创新之一,因为它可以提供多数量级的改进。
初创公司和领先的半导体供应商正在寻找实现 AI 计算加速的潜在途径。
各公司都在寻求或已经实现这些提高性能的方法。内存计算设计可以建立在这些方法的基础上,通过多次改进以及其他开发技术来提高效率。
内存计算是将内存设计在硬件处理元件旁边或内部的方式。内存计算会利用寄存器文件,处理器内的内存,或者会将 SRAM 或新内存技术的阵列转换为寄存器文件或计算引擎本身。对于半导体而言,内存计算的基本要素可能会大幅降低 AI 成本,缩短计算时间和降低功耗。
内存计算兼具硬件和软件元素,其可能会引发一些混淆。从软件的角度来看,内存计算是指在本地存储中运行的处理分析。实际上,软件充分利用了离计算较近的内存。“内存”从硬件的角度来说有点模糊,可以指本地系统中的 DRAM、SRAM、NAND 闪存和其他类型的内存,而不是通过联网软件基础架构获取数据的内存。优化软件以利用更多本地内存为行业进步带来巨大机遇,工程师团队将需要继续在系统层面关注这些创新。然而对于硬件优化而言,内存计算提供位级创新,能够更加逼真地模拟人脑,效率达到现行计算的 1000 多倍。
内存计算不仅仅是 AI 算法的神奇解决方案,它已经达成各种实现,而且还在通过逐步创新得以发展。寄存器文件和缓存的实现已有数十年之久,近内存计算是在实现改进后自然取得的进步,并在过去几年中在新的 SoC 中得到了实现。AI 算法需要的系数和乘积累加 (MAC) 即便没有数十亿个,也有数百万个。为了有效地执行所有这些 MAC,现在在 SoC 中设计了用于一系列 MAC 的自定义本地 SRAM,其唯一用途是执行 AI 模型数学,即矩阵/张量数学。为一组 MAC 集成专门的本地 SRAM 以执行 AI 模型数学就是近内存计算的概念。在近内存计算中,本地 SRAM 经过优化,旨在存储指定 MAC 单元所需的权重和激活值。
在开发内存计算的过程中,下一个进展自然是模拟计算。模拟计算能够实现更多并行,并且能够更加逼真地模拟人脑的效率。模拟系统并行运行 MAC 和内存,就系统效率的提升幅度而言,甚至远远超过仅靠近内存计算方式得到的效率提升。传统的 SRAM 可以作为内存模拟计算实现的基础,草榴社区 已针对这一用途提供定制服务。
与传统的 SRAM 相比,MRAM、ReRAM 等新型内存技术可提供更高的密度和非易失性。SRAM 的改进可提高计算和片上内存的利用率。利用率是 AI SoC 设计人员面临的最关键的设计挑战之一(图 2)。SoC 设计人员需要专为 AI 数据移动和计算(无论采用任何技术均可)而设计内存子系统。
图 2:AI SoC 具有极其密集的计算和数据移动,这会影响延迟、面积和性能
带有内存系统的 AI SoC 设计面临的关键挑战与需要存储的 MAC 和系数的数量有关。对于 ResNet-50 而言,需要超过 23M 的权重,可计算为 35 亿 MAC 和 105B 的内存访问。并非所有处理都是同时运行的,因此最大激活值的大小可能是内存子系统的关键瓶颈。控制工程师知道,将瓶颈设计作为执行成本最为昂贵的功能,从而提高效率。因此,设计需要确保其内存计算架构能够有效地处理最大的激活系数层。
满足这些要求需要大量的片上内存和多层的密集计算。目前正在开发内存设计的独特技术,以消减延迟、系数体量以及必须在 SoC 周围处理的数据量。
草榴社区 为客户提供广泛的 IP 选项,用于实现内存计算。针对密度或漏电功耗进行优化的内存编译器用于为近内存实现开发本地 SRAM,有时此类实现可以实例化 1000 多个 MAC。MAC 可以利用 草榴社区 基础内核的一组原始数学函数,其中包括点积(一种常见的 AI 函数)等灵活函数。
此外,草榴社区 DesignWare 多端口内存 IP 支持多达 8 个输入或 8 个输出,提高了计算架构内的并行性。随着 AI 变得如此普遍,多端口内存在设计中更加常见。
草榴社区 开发了一种专利电路,专门对内存计算创新的支持。图 3 中所示的 Word All Zero 功能基本上消除了要处理的零。为什么要移动乘数零? Word All Zero 功能显著降低了所需的计算量,并可将芯片内数据移动的功耗降低多达 60%。
图 3:除了 Word All Zero 功能外,草榴社区 DesignWare 嵌入式内存 IP 还提供多种特性,以解决功耗、面积和延迟挑战
业内采用内存计算的速度还有待观察;然而,借助新型内存、创新电路和创造性设计人员完成技术和概念实现的前景无疑将成为一项激动人心的工程学成就。开发解决方案的过程有时和最终结果一样有趣。