核心要点:

将计算能力移至更靠近内存的位置,能够减少数据移动、降低功耗并缩短延迟。

不同的AI工作负载对内存架构、互连方式和处理方式有着各自不同的需求。

软件支持、标准化以及热管理,仍然是制约这类技术更广泛应用的主要障碍。

从数据中心内的AI训练,向边缘侧AI推理的转变,需要人们从根本上重新思考数据应处理和存储的位置、处理方式,如何确定数据处理的优先级,以及在有限功耗预算下如何权衡功耗与性能。

这些探索的核心在于一个共识:数据量的爆炸式增长——尤其是在物理AI领域,数据正从传感器实时传输而来——要求大部分数据尽可能靠近内存进行处理。这一话题自物联网诞生之初便已被讨论,但真正受到广泛关注则是因为AI带来的数据洪流,以及人们对数据移动和处理所需功耗的担忧。以电池驱动的电动汽车和无人机为例,用于数据处理的能耗越少,单次充电的续航里程就越长,也就有更多能量可以分配给关键及非关键功能。

挑战在于判断哪些数据需要保留、哪些可以舍弃、哪些需要立即处理。这些是截然不同的优先级判断。做出这些选择需要先进的处理能力,而以最少能耗获得结果的最快途径,就是尽量缩短数据在处理单元与内存之间移动的距离。

“这些大语言模型进入物理设备的现实,正促使所有人重新思考内存架构的设计方式,”Cadence产品管理部门总监弗兰克·费罗表示。“即便只谈传统内存——先不说内存内处理——我该如何划分这些模型,才能同时最大化处理器和内存子系统的整体性能?”

要解决这些问题,需要引入多种新方法,例如近内存处理(PNM)和内存内处理(PIM),同时还需要在多项技术和方法上实现改进。编译器和操作系统需要跟上步伐,相关标准也亟待建立。

“过去几年,数据中心的AI以及这些大语言模型一直是所有人关注的焦点,而现在这些模型已经训练完成,并被推向了网络边缘和物理AI领域,”费罗说。“现实情况是,计算能力和内存都十分有限。”

边缘侧的AI推理面临的挑战,与在AI数据中心训练AI模型截然不同。

“训练过程几乎总是伴随着高度可变的内存访问模式,并且主要使用解释型代码——例如Python到PyTorch的转换——这就需要跨多层内存实现一致性所带来的复杂处理,”Quadric首席营销官史蒂夫·罗迪表示。“而一旦进入推理阶段,使用模式就会发生显著变化。无论是在数据中心运行的大型大语言模型,还是在本地运行的模型,比如汽车中较小的大语言模型或VLA(视觉-语言-动作模型),在运行之前模型本身就已确定。这意味着数据访问模式是预先可知的。正是在这一点上,提前编译技术能够充分利用各种近内存、内存内处理或内存内计算(IMC)方案的优势。整个系统清楚地知道计算将在何处、何时、以何种方式发生。不存在某个计算环节需要猜测数据是否在另一个内存子系统中被修改的问题,因为整个系统的调度安排早在AI推理模型编译完成的那一刻——提前数小时、数天甚至数周——就已经规划妥当。”

AI推理流程中的某些阶段,相较于其他阶段更能从近内存方案中获益。

“将计算能力推送到DRAM内部或其附近,会带来一些有趣的影响,”Expedera首席科学家兼联合创始人沙拉德·乔尔表示。“这改变了你的通信模式——变成了激活值流向内存,而不是内存流向激活值——这会改变所需的通信量。这类方案适用于低批量解码场景。举例来说,如果批量大小为1,你在进行解码但并未读取所有权重,那么一旦转向以成本优化为目标的大批量解码,或是以大批量执行为目标的预填充阶段,激活值的通信就会成为具有挑战性的环节。可以从这两个角度来思考这个问题。归根结底,你需要将执行过程拆分为对存储量敏感、对带宽敏感或对批处理敏感的不同部分。”

无论如何,让计算能力更靠近数据,能够减少数据移动所耗费的时间和能量,而在同一内存封装内(定制HBM)或同一内存芯片上(LPDDR6-PIM)进行处理,带来了两大根本性优势。“其中一个优势是性能,”Cadence产品营销总监科斯·吉切夫表示。“如果我们考虑的是SoC内部的CPU或核心,每当需要执行一次操作,都必须访问外部内存,这就会产生一次事务:‘好的,从内存中取一些数据,这会先命中SoC内某处的缓存。’数据最终会抵达内存,再返回缓存,最后返回处理器。这一整套操作确实需要耗费一定时间。”

因此,尽管芯片架构师能够让SoC上的计算快速运行,但SoC仍需等待数据到达。“内存内处理在很大程度上解决了这个问题,”吉切夫说。“现在你可以说:‘我在内存中有这么一块数据,去对它执行某个操作,然后我只需读取结果就行了。我要跳过先读取数据、再计算、最后写回这整个步骤。我只需要读取一次,仅此而已。’”

图1:内存内计算与内存内/近内存处理的对比——数学运算发生的位置以及各术语的含义。需要注意的是,在硬件层面,CIM和IMC常被互换使用,用以描述那些直接在内存阵列内执行计算任务的架构,但IMC在软件层面还有另一层含义。来源:Semiconductor Engineering

减少数据移动

归根结底,要让这种方案行之有效,整个系统都需要进行优化。

“思考框架已经从‘我们需要更多内存’转变为‘我们需要一种能让内存持续获得数据供给、同时不饿死其他数据流量的互连架构’,”Baya Systems首席商务官南丹·纳扬帕利表示。“而最近,这又进一步转变为:‘如何围绕稀缺性本身来构建架构。’”

其他人也持相同看法。“AI系统正日益受限于在计算单元、内存、加速器、芯片组(chiplet)和芯片之间高效移动数据的能力,”Arteris产品管理与市场营销副总裁安迪·奈廷格尔表示。“这使得互连和内存架构变得与内存设备本身同等重要。这也进一步凸显了对可扩展的片上网络(NoC)、芯片组、缓存一致性以及系统映射技术的需求,这些技术能帮助客户在芯片制造之前就优化数据移动方案。”

互连、缓存方案和封装技术在边缘侧都发挥着日益重要的作用,但要在控制成本的同时选择合适的组合方案,是一项挑战。因此,尽管新一代高带宽内存使得在多芯片堆叠的基础芯片中实现更多处理成为可能,但根据成本的不同,一种将计算切片置于DRAM存储体旁边的LPDDR6-PIM方案可能更具吸引力。

“近内存计算仍然依赖外部通道接口,”SK海力士高级副总裁兼研究员金浩植表示。“但通过将处理单元设置在靠近内存数据的位置,我们实际上可以消除或减少大量数据移动,从而获得更高的能效。同时,我们还能将计算功能从CPU或GPU上卸载出去,从而更好地利用主机CPU或GPU的资源。”

典型的应用场景涉及将内存控制器集成于基础芯片内部。“我们正在集成一些有用的近内存处理单元,用于卸载简单的乘累加(MAC)运算,”金浩植说。“因为,如果考虑推理工作负载的运算特点,大多数函数计算都是简单的MAC运算。因此我们可以将MAC运算置于基础芯片内部进行扩展,然后与GPU协同完成更复杂、计算密集型的运算。”

多年的发展历程

部分必要技术如今已经具备,而另一些则需要数年时间才能开发成熟,或改进到足以产生实质影响的程度。

“我们预计在三到五年后,也就是大约2030年前后,才会看到内存内应用的落地,”Ayar Labs产品管理总监维沙尔·钱德拉塞卡表示。“你希望能够连接多个GPU,使得不同的GPU能够相互访问对方的内存。人们一直在努力提升单个GPU的内存容量,但受限于数据包大小和HBM带宽等因素。内存内计算是其中一条路径,它使得内存的基础芯片本身具备某种形式的计算能力。”

不过,这项技术距离商业化还有一段距离。“说这项技术已经在市场上投入使用,有点过于乐观了,”Cadence的费罗表示。“可能存在一些非常特定的嵌入式应用正在使用某种形式的内存内处理技术,但从广泛应用的角度来看,现阶段仍处于早期阶段。”

内存内处理方案正在缓慢地从研究阶段走向商业化。例如,三星公布了其面向低功耗移动端设备侧AI应用的LPDDR6-PIM芯片的架构与性能基准数据。

“LPDDR-PIM是在JEDEC(电子器件工程联合委员会)内部获得最多关注的技术,”是德科技内存解决方案项目经理兰迪·怀特表示。“目前围绕LPDDR-PIM的积极研发和讨论正在进行中,但硬件和软件方面都存在挑战。从硬件角度来看,你需要将逻辑工艺与DRAM工艺混合在一起,而这两种工艺针对的优化指标各不相同,因此这种创新本身就使制造工艺变得更加复杂和昂贵。你必须非常谨慎地进行选择,并确保你的应用场景能够承受这种额外的成本。”LPDDR6-PIM的应用范围,将从针对性能优化的固定节点边缘服务器,延伸到针对能效优化的手机和平板电脑。

比硬件更棘手的问题?

软件方面的挑战可能更为艰巨。“你要如何管理工作负载的不均衡分布和负载均衡?”怀特指出。“假设你采用一种棋盘式布局的内存阵列或内核,每隔10列左右的内存,就嵌入一条垂直的逻辑硅片切片。如果你拿起这块PIM芯片放到显微镜下观察,你会看到一个棋盘状结构,每隔若干行就重复出现这样的切片。这种布局本身就带来了一些时序约束。当你访问某一行数据时,必须等待计算引擎上某条指令的运算完成。所以这不仅仅是在不同存储体访问之间获取数据并平衡时序的问题。现在,内存访问与等待计算数据完成被耦合在了一起。这种设计的全部意义在于:我不需要频繁地移动数据。我只是在相邻单元之间移动数据,这确实很好。从硬件角度来看,功耗更低等优势都能实现。但对于负责编写BIOS、必须创建同步调度程序的工程师来说,复杂度已经呈爆炸式增长。”

必须从对整个系统的影响角度来考量PIM架构。“硬件必须经过设计和优化,确保计算系数的数量等参数设置合理,”怀特说。“然后内存也需要以恰当的方式进行划分,不能划分得过于精细,这样才能在粗粒度和细粒度之间实现恰当的权衡。”

图2:要让近数据计算发挥其潜力,哪些问题必须得到解决。来源:SK海力士/DAC

此外,内存编程模型目前仍处于变动之中,尤其是随着PIM、CIM、CXL连接的分层内存以及异构内存架构等非传统内存系统的兴起,这一变动更加明显。

“我不认为这个行业会最终统一到单一的编程模型和一致性实现方案上,”Rambus研究员兼杰出发明人史蒂文·邬表示。“在过去40年里,业界已经实现了多种不同的编程模型、一致性协议和一致性模型,为系统设计者和应用开发者提供了不同的权衡方案。架构和一致性实现方式的多样化,正在推动业界开发更多高性能库的需求,使程序员能够调用以不同优化方式实现的通用函数,以适配不同的系统。高性能库维持着一定的抽象层级,这在提升程序可移植性和性能可扩展性的同时,也让程序员无需了解底层硬件的全部细节。”

编译器与内存控制器的考量

支持新型内存架构,需要软件层面的创新。

“问题已经不再是PIM是否可行或是否有意义,”SK海力士的金浩植表示。“这已经是现实。问题在于如何构建软件编译框架和系统软件。整个生态系统都需要跟进这一变化。”

Cadence的吉切夫对此表示认同。“真正的挑战在于,当前系统的设计方式是让编译器、操作系统以及一切软件都围绕着SoC内部的处理器核心或加速器来运作,整个系统都是为了让这个处理器完成所有工作而设计的,”他说。“这就是现有的基础架构。而现在,本质上你可以将部分处理器的工作卸载出去,并说:‘我需要执行这个操作,但并不一定需要处理器来完成它。’要实现这一点,背后需要一整套基础架构的支撑。这涉及软件层面的问题。操作系统和处理器需要明白:‘这些操作我可以发送给内存去完成,它们会处理好,我只需获取结果;但另一些操作我仍需在本地执行,因为我现有的内存可能无法胜任,或者我的系统这样做效率不够高。’”

芯片内部的标准化同样是一项必要需求。“你要如何将这些组件连接在一起?”吉切夫说。“目前,就从处理器到SoC互连结构再到内存之间的事务传输类型而言,我们还没有一种行之有效的方式来表达‘去内存中执行这个操作’这样的指令。这套基础架构目前尚不存在。我们需要硬件和协议能够指示内存去完成这些操作,同时也需要软件和操作系统支持整个系统完成这项工作,并判断何种方式才是高效的。”

归根结底,这涉及两种不同的数据流。“我有一路数据流,用于存储、读取和写入,”费罗解释道。“同时我还有另一路数据流,用于计算,而这并非操作系统和处理器原生设计所适配的模式。现在你需要处理器厂商、处理器与互连结构之间接口的开发者、系统厂商,当然还有操作系统开发者之间展开协作。所有这些环节都需要做出相应调整。这种调整可能很大,也可能不大,但如果没有标准化,每个人的系统都将变得高度定制化。”

本地代理与内存控制器

近内存和内存内架构给流量管理和系统一致性带来了各自不同的压力。

“在传统的硬件一致性系统中,本地代理负责追踪共享数据在整个系统中的使用位置,并确保各个处理单元获得正确的数据副本,”Rambus的邬解释道。“硬件一致性机制消除了程序员手动管理跨处理单元数据更新的需求,从而简化了编程工作。而诸如锁和屏障等同步原语,以及软件一致性机制,则为应用程序提供了额外一层控制手段,用以管理数据更新的方式和时机。这些硬件和软件机制共同作用,使得设计高效算法成为可能,同时维持一定程度的硬件抽象层级,隐藏了底层硬件的细节,从而简化了编程任务,也简化了系统中为维持一致性而对数据更新方式进行管理的工作。”

这意味着软件工程师越来越需要理解硬件层面的知识,反之亦然。

“随着问题规模的增长和处理单元数量的增加,要实现良好、可扩展的性能正变得愈发困难,”邬表示。“尽管本地代理把管理一致性的负担从程序员身上卸下,但本地代理为维持一致性而发送的消息,本身可能成为性能瓶颈。程序员越来越需要理解底层硬件的结构和功能,才能获得良好的性能表现。算法通常需要进行调整,以某种方式对数据进行分片,从而最大限度地提升任务的独立性,并最小化系统中一致性流量的传输量。在某些系统中,完全不采用硬件一致性机制反而能获得最佳性能,但这会使编程任务变得更加复杂。”

内存控制器面临着双重挑战。“其中一部分挑战在于内存子系统,它由物理层(PHY)和控制器组成,”Cadence的吉切夫说。“控制器本身正是这些指令真正执行工作的地方。但现在你面对的是一套不同的指令集。在此之前,基本上只有两种指令——读取数据、写入数据,仅此而已。实际的控制逻辑比这复杂得多,但从宏观层面看,这就是它的全部功能:以尽可能高效的方式读取和写入数据。而现在,一种不同的挑战正在浮现,我们需要一套不同的指令和规则来表达:‘嘿,现在能不能帮我把这份数据乘以那份数据,或者把内存中的这份数据除以另一个数值,又或者执行某种运算。’对控制器来说,实现这一点本身并非重大挑战。我们只需增加更多指令,并设法让它们正常运作、尽可能高效地执行即可。”

第二个挑战则更为棘手。“处理器需要具备发送这些指令的能力,”吉切夫说。“它需要在内存子系统内部预先准备好数据,以便确认:‘如果我要把这份数据与那份数据相乘,我是否已将正确的数据放在了正确的位置?运算结果是否被放置在了正确的位置?这次操作是否已经完成?’控制器会负责管理其中一部分工作,但同时也必须与整个系统保持非常紧密的协作。”

热管理、物理限制与CIM

近内存处理有助于减少数据流量,但也可能放大现有的物理层面问题,例如散热问题。

“内存短缺的部分原因,在于当前业界最先进设计方案及对现有内存的使用方式,”Vinci全球现场应用与解决方案负责人萨蒂什·拉德哈克里希南表示。“创新的设计方案有助于降低单位需求,并提升利用率。目前提升内存利用率最具可行性的方案——包括更高层数的HBM堆叠、定制HBM、近内存计算、内存内计算以及基于芯片组(chiplet)的解耦方案——都共有一个特点:它们都是用物理层面的新问题,去换取带宽问题的解决。将内存堆叠得更靠近计算单元,会恰恰在最难散热的位置集中产生热量。异质材料堆叠和微米级互连结构,会产生不受芯片、封装和电路板之间边界限制的热机械应力和翘曲行为。热量不会止步于芯片本身,与之相伴而来的各种限制条件同样如此。”

正因如此,内存厂商往往会在发布新架构的同时,一并公布相应的新散热技术。例如,SK海力士宣布了一种集成式HBM(iHBM)方案,在HBM封装内部嵌入了集成冷却元件(ICE)。美光近期公布的技术路线图中,包含了采用热感知设计的垂直HBM(vHBM),并在物理层(PHY)上方配备了散热片。三星则正通过一系列方案应对散热问题,其中包括混合铜键合(HCB)技术以及散热路径模块(HPB),该公司计划将这两项技术应用于HBM5产品中。

SK海力士的金浩植提出,可以利用内存内计算来降低HBM基础芯片的发热量。“如果你把DRAM堆叠在逻辑芯片之上,DRAM对温度是非常敏感的,”他说。“而逻辑芯片则很容易产生热点。基本上,热点会出现在内存的底部区域。散热确实可能成为一个真正的挑战,需要加以解决。内存内计算可以成为一种解决方案。它的功耗极低,因此完全可以将内存内计算单元设置在基础芯片或内存的底部区域。”

在实践中,IMC/CIM技术可能适配定制化的HBM4或HBM4E产品,因为其基础芯片采用的是代工厂的逻辑工艺制造。SRAM是其原生内存类型,这意味着可以在基础芯片上构建SRAM CIM宏单元。CIM技术在SRAM阵列内部直接完成乘累加运算,因此权重数据无需在内存和独立的MAC运算单元之间反复移动。数据移动恰恰是能耗消耗的主要来源,这也是为什么SRAM CIM宏单元在每瓦运算次数这一指标上,相比传统数字加速器能表现出远胜一筹的能效水平。每次运算所消耗的能量越少,功率密度就越低,DRAM下方产生的热点也就越少。

结论

软件支持,仍是连接近内存硬件与其在AI领域应用潜力之间的缺失环节。对于编译器和AI框架而言,近内存处理和内存内处理架构正成为新兴的发展方向,这有望让开发者将数学运算操作直接卸载到内存子系统中执行,但支撑这一转变所需的软件生态,目前仍在努力追赶之中。

不同架构所能提供的计算能力及其局限性各有不同。LPDDR6-PIM仅限于配备适用于矩阵-向量乘法和逐元素数学运算的MAC单元或简单算术逻辑单元(ALU)。而采用逻辑工艺制造基础芯片的定制化HBM4/HBM4E产品,则可以添加其他内存控制功能。但这种灵活性是有代价的——存在一个散热上限,能够容纳多少计算能力,取决于其在DRAM下方产生的额外热量有多少。

“过去两年里,我们在定制HBM以及如何利用其基础芯片层这一话题上,投入了大量的讨论时间,”Cadence的费罗指出。

AI正在推动计算能力向内存更近的位置迁移,但仅凭物理距离上的靠近,并不足以带来实质性的收益。要实现更广泛的应用,关键在于将工作负载与硬件相匹配、妥善管理散热问题,并为编译器和操作系统配备相应工具,使其能够判断应将哪些任务卸载出去。移动计算位置只是解决方案的一部分;让系统高效地利用这一变化,才是下一个需要通过的考验。

Semiconductor Engineering