开发者生态
evening
三星的内存处理 (PIM)
2026-08-29
1 阅读
约6分钟阅读
ingve
字号:
内存计算多年来一直是一个有吸引力的主张,因为内存芯片内的计算可以利用其更高的内部带宽。此外,内存计算避免了 DRAM 和传统计算核心之间的长延迟路径。在 Hot Chips 2026 上,三星讨论了他们通过 PIM(内存处理)推动对内存计算的持续追求。他们在 LPDDR5X 芯片内实现 MAC 单元,同时保留芯片与标准内存控制器连接的能力。 DRAM 芯片内部分为多个存储体,每个存储体都有自己的读写逻辑。在正常的 DRAM 访问期间,内存控制器选择一个存储体,激活其中的一行,然后通过列访问选通 (CAS) 命令访问数据。带宽受到芯片外部 DRAM 接口的限制。即使内存控制器可以同时激活所有存储体,它也无法获得所有存储体可用的全部带宽。三星的 LPDDR5X-PIM 与具有 16 个存储体的普通 LPDDR5X-9600 芯片类似,但在每个存储体中放置了一个 PIM(内存处理)块。这些 PIM 块可以访问其连接的 DRAM 存储体,而不受芯片外部总线的限制。它们一起可以利用所有 16 个组的芯片内部带宽,达到 614 GB/s。相比之下,常规 DRAM 访问可以并行访问两个存储体,最大速度为 76.8 GB/s。 PIM 块内部由 MAC 树以及周围的寄存器文件和控制逻辑组成。一个 1024 位指令寄存器文件最多可容纳 64 条 16 位指令。 4 kbit 源寄存器文件用于激活向量,并为 MAC 阵列提供一个源操作数。三星希望软件将模型权重加载到 DRAM 中,因此附加的 DRAM 块提供第二个操作数。模型权重可以在 MAC 计算之前进行缩放,缩放因子来自 2 kbit 缩放寄存器。 PIM 模块的 MAC 阵列支持多种低精度格式。三星演示中的数字表明,每个 PIM 模块的 MAC 阵列可以在每个数据时钟维持四个 INT8 或 FP8 MAC 操作,或者在不计算双倍数据速率时每个周期支持 8 个操作。 4 位输入权重的吞吐量加倍,使整个包的计算吞吐量达到 2.4 TOPS。这不是一个很高的数字,但使用许多 LPDDR5X 芯片的实施将具有更高的总吞吐量。例如,八个 LPDDR5X 芯片加在一起将具有 9.6 INT8 TOPS,这与英特尔 Meteor Lake 中的 NPU 几乎匹配。这也将是一个昂贵的设置,因为八个 16 GB LPDDR5X 芯片将对应 128 GB 的系统内存。 LPDDR5X-PIM 的一大亮点是它符合标准 LPDDR5X 协议,同时公开了不属于内存标准的计算功能。三星通过预留特殊的行地址来实现这一点,这些地址的作用类似于 MMIO 地址。每个通道都有一对预定义的行用于模式控制。激活其中一行会将芯片设置为单存储体模式,而另一行将芯片设置为多存储体模式。单组是常规模式,而多组则在所有 16 个组中应用命令以利用芯片的内部带宽。每个存储体的特殊行会改变读取和写入命令的行为方式。激活这些特殊行之一使读写命令访问 PIM 寄存器而不是常规 DRAM 存储体内容(PIM 寄存器激活模式)。三星设想了一个 ML 用例,其中软件将模型权重加载到 DRAM 中,同时芯片处于正常的单组模式。然后,软件切换到多组模式并进入 PIM 寄存器激活模式。这允许代码将激活值写入 PIM 源寄存器,在 PIM 缩放寄存器中设置缩放因子,并指定填充到 PIM 指令寄存器中的操作。由于芯片处于多存储体模式,因此每个 PIM 寄存器写入都会在所有 16 个存储体中广播。因此,PIM 计算的工作方式就像一种非常受限的 SIMD 处理器,其中所有存储体的操作、比例因子和一个源操作数都是相同的。三星确实允许在单组模式下写入 PIM 寄存器,但该功能仅用于调试目的。每个 DRAM 数据包为 256 位 (BL=16) 填充每个源寄存器需要 16 个写入命令。在 16 个存储体中的每一个中一次执行一个存储体将意味着 256 个写入命令,从而使主机到 PIM 寄存器的写入带宽成为限制因素。三星实际上允许在单组模式下访问 PIM 寄存器,但这只是一种调试功能。启动 PIM 寄存器后,软件切换回多存储体模式并发出读取命令。这些读取命令不是读取 DRAM 内容,而是启动计算并将结果累积到 PIM 向量寄存器文件中。然后,写入命令告诉 PIM 块将 VRF 内容写回到 DRAM 存储体中。 PIM 必须处理普通内存控制器可能执行的重新排序。当代码通过激活来设置 PIM 时
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱