Samsung LPDDR5X-PIM: 存内计算架构与挑战

Samsung LPDDR5X-PIM 提升了内部内存带宽

Samsung 通过将乘累加 (MAC) 单元直接集成到 LPDDR5X 芯片中,正在实现存内计算 (PIM)。这种架构允许计算操作在内存芯片内部发生,从而利用更高的内部带宽,并避免 DRAM 与传统计算核心之间的高延迟路径。

虽然标准的 LPDDR5X-9600 芯片受限于其外部接口,最大带宽仅为 76.8 GB/s,但 LPDDR5X-PIM 在其 16 个 bank 中每个都利用了 PIM 模块。通过在不受外部总线约束的情况下访问这些 bank,该芯片实现了 614 GB/s 的内部带宽。

硬件架构与计算吞吐量

每个 PIM 模块由一个由寄存器文件和控制逻辑支持的 MAC 树组成。该架构使用特定的寄存器结构来管理操作:

  • Instruction Register File:一个 1024-bit 的文件,可持有最多 64 个 16-bit 指令。
  • Source Register File:一个 4 kbit 的文件,用于激活向量,提供一个源操作数。
  • Scale Register:一个 2 kbit 的寄存器,用于缩放模型权重。
  • DRAM Bank:直接向 MAC 阵列提供第二个操作数(模型权重)。

性能指标

MAC 阵列支持低精度格式。每个 PIM 模块在每个数据时钟周期可以维持四个 INT8 或 FP8 MAC 操作(如果不考虑双倍数据速率,则每个周期为八个)。对于 4-bit 输入权重,吞吐量会翻倍。单个芯片可提供 2.4 TOPS 的封装级计算吞吐量。作为对比,八个 LPDDR5X 芯片的配置将产生 9.6 INT8 TOPS,大致相当于 Intel 的 Meteor Lake 中的 NPU 性能。

协议集成与模式切换

Samsung 设计 LPDDR5X-PIM 以保持与标准 LPDDR5X 协议的兼容性,通过将特殊的行地址重新用作内存映射 I/O (MMIO) 地址。该芯片运行在两种主要模式下:

  1. Single-Bank Mode:常规 DRAM 访问的标准操作模式。
  2. Multi-Bank Mode:同时对所有 16 个 bank 应用命令,以利用内部带宽。

要执行 PIM 操作,软件需要将芯片切换到 multi-bank 模式并进入 "PIM Registers Activated" 模式。在这种状态下,读写命令访问的是 PIM 寄存器而非 DRAM 内容。由于芯片处于 multi-bank 模式,寄存器写入会广播到所有 16 个 bank,从而有效地起到受限的 SIMD 处理器的作用。

地址对齐与重排序

为了防止由内存控制器重排序引起的问题,Samsung 实现了 Address Align Mode (AAM)。AAM 确保每个指令可以从正在访问的列地址中推断出其源寄存器索引,从而无论内存控制器以何种顺序发布访问请求,都能保持操作的正确序列。

软件与系统集成挑战

尽管具备硬件能力,但将 LPDDR5X-PIM 集成到现代计算环境中在内存一致性与 OS 多任务处理方面面临着严峻的挑战。

内存隔离与多任务处理

由于 PIM 模式改变了 DRAM 命令的基本含义,PIM 和常规内存访问无法同时发生。这会产生以下冲突:

  • Thread Interference:非 PIM 线程执行的读取操作可能会触发非预期的计算,或损坏 PIM Vector Register File (VRF) 的结果。
  • OS Scheduling:抢占 PIM 线程需要 OS 在所有 bank 中保存整个 PIM 状态(指令、源、缩放和 VRF),这在计算上是非常昂贵的。
  • Memory Interleaving:为了隔离 PIM 区域,系统可能需要禁用跨通道的地址交织,从而降低非 PIM 应用可用的总带宽。

Cache 与投机执行冲突

标准 CPU 优化技术与 PIM 操作不兼容:

  • Caching:Samsung 建议将 PIM 内存映射为不可缓存 (uncacheable)。如果 CPU 缓存了触发 PIM 的读取操作,计算可能永远无法到达 DRAM;反之,DRAM 生成的值可能无法反映在 CPU 缓存中。

  • Speculative Execution:现代 CPU 使用预取器和分支预测器来在需要之前发起加载。在 PIM 系统中,投机读取并非良性操作——它会触发 MAC 计算并修改 PIM VRF,从而导致程序状态错误。

社区观点与分析

围绕 LPDDR5X-PIM 的技术讨论揭示了人们对其在没有更广泛架构变革的情况下能否实现实际应用持怀疑态度。

"The tradeoff with putting the compute in the memory is that you have to know exactly where the dependent information will be at all times. Most problems do not fit this pattern very well. AI, gaming and crypto being the most obvious exceptions."

批评者还指出,乘法和加法所消耗的能量远低于为对齐矩阵进行乘法而进行的数据移动。一些人建议,为了使 PIM 可行,内存子系统需要进行根本性的重新设计,包括:

  • 扩展 DRAM 接口以包含专门的计算命令,以避免模式切换。
  • 实现一种缓存一致性协议,让内存控制器充当对等的 CPU 核心,使用 Read-for-Ownership (RFO) 请求来确保数据一致性。
  • 引入透明的 CPU 指令(例如,假设的 rep macb),允许硬件根据数据大小和位置来决定是在缓存中还是在内存中进行计算。

Sources

相关