Synth Daily

Xcena 携手三星推出近内存计算 CXL 设备

XCENA 与三星合作推出了一款名为 MX1 的新型 CXL 设备,该设备集内存扩展、SSD 存储和近内存计算功能于一体。MX1 的核心设计是通过板载的大量 RISC-V 核心,在靠近内存的地方处理数据,从而克服传统内存扩展带来的带宽和延迟瓶颈。它不仅能将高达 2 TB 的 DDR5 内存和 SSD 存储提供给主机系统,还能利用其计算能力直接在扩展卡上执行并行任务,为机器学习等内存密集型应用提供了一种高效的解决方案。

MX1:内存、存储与计算三合一

MX1(Memory Xcelerator)是一款 PCIe 扩展卡,旨在解决现代计算中对内存容量的巨大需求。它通过一个集成的解决方案,提供了多种功能。

  • 内存扩展: 该设备可容纳高达 2 TB 的 DDR5 内存,并通过 PCIe 6.0 / CXL 3.2 x8 接口连接到主机,提供 64 GB/s 的双向带宽。
  • SSD 集成: MX1 提供了额外的 PCIe 通道,用于连接 SSD。这些 SSD 存储可以被虚拟为内存,并由板载的 DDR5 DRAM 作为高速缓存,这一功能被称为 “无限内存”(Infinite Memory)
  • 板载计算: 最引人注目的特点是其内置的计算能力。MX1 芯片集成了 3072 个 RISC-V 核心,专为数据并行工作负载设计。

这种将计算单元放置在内存旁边的设计,可以利用远高于 CXL 接口带宽的内部内存带宽,从而有效缓解数据传输瓶颈。

计算架构:专为并行处理设计

MX1 的计算核心设计理念是通过大量低功耗的小核心来最大化能效和内存带宽利用率,而不是追求单核性能。

核心与缓存设计

  • 大量小核心: 3072 个 RISC-V 核心以 1.1 GHz 的频率运行。这种设计类似于英特尔早期的 Xeon Phi,适用于高度并行的任务。
  • GPU 般的缓存结构: 缓存系统为了降低地址转换的开销而进行了优化。
    • L1 数据缓存: 每个核心拥有 4 KB 的虚拟地址 L1 缓存,命中时无需进行地址转换。
    • L2 缓存: 每 32 个核心组成的“集群”共享 128 KB 的 L2 数据缓存和 L2 指令缓存。
    • 指令获取: 指令直接使用物理地址,不经过虚拟内存系统,从而避免了地址转换和 TLB 的开销。

编程模型与内存共享

MX1 的编程模型与 OpenCL 或 CUDA 非常相似,允许主机和 MX1 上的核心共享指针和相同的虚拟地址空间,极大地简化了编程。

内核(Kernel)被多次调用,每次调用通过一个索引来确定其处理的数据部分。这种模型天然适合共享代码,因此多个核心共享指令缓存的设计非常合理。

向量处理引擎 (VPE)

为了加速浮点运算,MX1 在“子系统”(128 个核心)级别集成了定制的向量处理引擎 (VPE)

  • 每个 RISC-V 核心都可以向 VPE 发送指令,以加速向量运算。
  • VPE 支持 FP32 和 FP16 格式,全芯片可提供约 3 TFLOPS 的点积吞吐量。
  • 有趣的是,VPE 似乎不加速整数运算,这些操作可能由 RISC-V 核心直接处理。

“无限内存”:将 SSD 用作内存

MX1 的一项关键功能是能够将连接的 SSD 呈现为 CXL 内存,并通过板载 DDR5 进行缓存,以弥补 SSD 的高延迟。

  • DRAM 缓存: 使用 64 KB 页面大小来缓存 SSD 的内容。当访问的数据不在 DRAM 缓存中时,MX1 上的固件会触发页面错误,从 SSD 中获取数据并更新映射。
  • 固定前缀 (Pinned Prefix): 用户可以将一部分 SSD 支持的地址空间“钉”在 DRAM 中,确保高频访问的数据始终驻留在高速的 DRAM 里。
  • 预取: MX1 还可以从 SSD 预取数据,通过重叠数据传输和计算来进一步隐藏延迟。

优势与前景

与 LPDDR5X-PIM 等其他近内存计算方案相比,MX1 将计算单元作为独立的加速器,展现出更清晰的优势。

软件开发不必面对 PIM 模式切换的复杂性,并且 MX1 上的计算不会阻塞主机对内存的访问。主机线程和 MX1 核心理论上可以使用标准的锁机制在同一个数据缓冲区上协同工作。

MX1 的真正价值不在于提供顶级的原始计算吞吐量,而在于它能够有效缓解内存扩展带来的两大问题:带宽限制和访问延迟。通过在数据所在地进行计算,MX1 避免了数据在主机和扩展卡之间来回传输的开销。这种近内存计算的思路显示出巨大的潜力,为未来解决内存墙问题提供了一个有前景的方向。