缓存在人工智能中的作用
作者:Arteris
如今,人工智能(AI)无处不在,从互联网核心的数据中心到互联网边缘的传感器和智能手机等手持设备,以及介于两者之间的每一个点,例如自主机器人和车辆等。在本文中,我们将人工智能一词理解为机器学习和深度学习。
人工智能有两个主要方面:一是训练,主要在数据中心进行;二是推理,可以在从云端到最不起眼的AI传感器的任何地方进行。人工智能贪婪地消耗着两样东西:计算处理能力和数据。在处理能力方面,ChatGPT 的创建者 OpenAI 发布的《人工智能与计算》( AI and Compute)报告显示,自 2012 年以来,大型人工智能训练运行中使用的计算量每 3.4 个月翻一番,且没有放缓的迹象。在内存方面,像 ChatGPT-4 这样的大型生成式人工智能(GenAI)模型可能有超过一万亿个参数,所有这些参数都需要以允许同时处理大量请求的方式轻松访问。此外,还需要考虑需要流式传输和处理的大量数据。
速度慢
假设我们正在设计一个包含一个或多个处理器内核的片上系统 (SoC)。我们会将相对少量的内存放在SoC内部,而将大部分内存留在 SoC 外部的分立器件之中。
最快的内存类型是 SRAM,但每个 SRAM 单元需要六个晶体管,因此,在SoC 内部只能使用很少的SRAM,因为它会消耗大量空间和功耗。相比之下,DRAM 每个单元只需要一个晶体管和一个电容器,这意味着它消耗的空间和功耗要小得多。因此,DRAM 被用于创建 SoC 外部的大容量存储装置。虽然 DRAM 容量大,但速度明显慢于 SRAM。
随着用于开发集成电路的工艺技术不断发展,可以创建越来越小的结构,大多数器件的速度也越来越快。遗憾的是,作为 DRAM 核心的晶体管-电容比特单元却并非如此。事实上,由于其模拟性质,比特单元的速度几十年来基本没有变化。
话虽如此,DRAM 的速度,从其外部接口来看,每一代都翻了一番。由于每次内部访问的速度相对较慢,因此实现这一速度的方法是在器件内部执行一系列交错访问。如果我们假设正在读取一系列连续的数据字,那么接收第一个字需要的时间会相对较长,但读取后续字的速度会快很多。
如果我们希望流式传输大块连续数据,这种方法非常有效,因为我们只需要在传输开始时花较长时间进行一次性访问接入,之后的后续访问就会高速进行。但是,如果我们希望对较小的数据块进行多次访问,就会出现问题。因为在这种情况下,我们需要一次又一次地进行访问接入,而不是只需要一次性访问接入。
更快的速度
解决方案是使用高速 SRAM 在处理器件内部创建本地缓存内存。当处理器首次从 DRAM 请求数据时,该数据的副本会存储在处理器的缓存中。如果处理器随后希望重新访问相同的数据,就会使用其本地副本,这样访问速度会快很多。
在 SoC 内部采用多级缓存是很常见的。这些缓存被称为一级(L1)、二级(L2)、三级(L3)等。第一级缓存的容量最小,但访问速度最高,其后每一级的容量更大,访问速度逐步降低。如图 1 所示,假设系统时钟为 1 GHz,使用 DDR4 DRAM,处理器访问一级缓存只需 1.8 ns,访问二级缓存需 6.4 ns,访问三级缓存需 26 ns。从外部 DRAM 访问一系列数据字中的第一个需要 70 ns(数据来源:Joe Chang’s Server Analysis)。
图 1:各级缓存和 DRAM 访问速度(1 GHz 时钟;DDR4 DRAM)。(由 Arteris 提供)
缓存在人工智能中的作用
人工智能的实施和部署方案多种多样。以我们的 SoC 为例,一种可能性是创建一个或多个AI加速器 IP,每个 IP 都包含自己的内部缓存。假设我们希望保持缓存一致性,我们可以将其视为保持数据的所有副本与 SoC 处理器集群相同。那么,我们就必须使用硬件缓存一致性解决方案,具有一致的互连形式,如 AMBA 规范中定义的CHI,并由Arteris IP 的 Ncore 片上网络(NoC)IP 支持(图 2a)。
保持缓存一致性需要一定的开销。在许多情况下,AI加速器并不需要像处理器集群那样保持缓存一致性。例如,可能只有在加速器处理完一大块数据后,才需要重新同步,这可以在软件控制下实现。AI加速器可以采用更小、更快的互连解决方案,如 Arm 公司的 AXI 或 Arteris 公司的 FlexNoC(图 2b)。
图 2: 人工智能背景下的缓存示例。(Arteris提供)
在很多情况下,加速器 IP 的开发者并没有将缓存纳入其实现过程中。有时,直到开始进行性能评估时才意识到需要缓存。一种解决方案是在AI加速器和互连之间特别加入一个缓存 IP,以提供 IP 级的性能提升(图 2c)。另一种方法是将缓存 IP 用作最后一级缓存,以实现 SoC 级性能提升(图 2d)。虽然缓存设计并不容易,但设计人员可以使用可配置的现成解决方案,比如 Arteris 公司的 CodaCache。
总结
许多 SoC 设计人员往往只在处理器和处理器集群的背景下考虑缓存。然而,缓存的优势同样适用于许多其他复杂的 IP,包括AI加速器。因此,以AI为中心的 SoC 开发人员正在越来越多地评估和部署各种支持AI缓存的应用场景。
作者: ArterisIP, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3893295.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论