关于这个计算世界的一个关键的未来要素是移动数据。移动数据需要功率,以至于从内存中调用数据要比实际对其进行“计算”消耗更多的功率。这就是我们有缓存的原因,但即使有缓存,也需要对 CPU 进行广泛的管理。对于简单的操作,如位转移或和操作,目标是将计算能力转移到主 DRAM 本身,这样它就不必来回穿梭。今年在 Hot Chips, UPMEM 是第一批展示新技术的公司之一。

 


对于任何已经完成任何形式的通用计算的人来说,通过算法推送一堆输入来获得结果,对于编写代码的人来说,通常有两个高级的心理阶段需要克服:首先是让它工作,其次是优化它。算法需要产生正确的结果,越快越好 - 慢速正确的结果通常是无用的,而快速的错误的结果也是无用的。如果能够以更低的功率完成,那么也会减少开销。

 

In-Memory Processing 或“Processing In-Memory”背后的想法是,当内存仍在 DRAM 中时,应该完成一些简单的整数或浮点运算 - 无需将其推送到 CPU 操作,然后将其发回。如果数据可以保留在那里并进行更新,则可以节省时间和功耗,而不会影响结果。或者,如果结果被发送回主存储器并且最终的 XOR 应用于存储器中的数据,则可以减少 CPU 上的计算。这可以释放主 CPU 核心来执行其他与计算相关的事情,或者如果它是一个限制因素,则会减少有效内存带宽。

 

UPMEM 所做的是在 DRAM 工艺节点上开发内置于 DRAM 芯片本身的数据处理单元(DPU)。每个 DPU 可以访问 64 MB 的 DRAM,并且相当于该内存的 1 GB / s 带宽。DPU 构建在一个干净的 32 位 ISA 上,具有大量优化功能,例如 0 循环条件 jmps,组合 SHIFT + X 指令(如 SHIFT + ADD 或 SHIFT + SUB),基本逻辑指令,SHIFT 和 rotate 指令。编程模型使得基于 c 语言的库能够处理所有常见问题,UPMEM 预计大多数应用程序需要几百行代码,少数人组成的团队只需 2-4 周就可以更新软件。

 

UPMEM 所报的大数字包括更好的 TCO、更好的 ROI,以及潜在的 100 亿美元目标市场。我们会在适当的时候讨论这些。

 

(我个人更喜欢 PIM-DIMM 这个名字)

UPMEM 提出的是一种类似于 DDR4 RDIMM 的标准产品,每个 64MB 的内存都可以访问它的一个 DPU。DPU 内置于 DRAM 本身,使用内存制造节点。例如,UPMEM 正在宣传它正在制作一个 4 Gb DDR4-2400 芯片,用于嵌入 8 个 DPU 512 MB 的模块, DPU 以 500 MHz 运行。UPMEM 计划将这 4 个 Gb 芯片中的 16 个放入单个 DDR4 RDIMM 模块中,提供 8 GB 模块,内置 128 个 DPU。

 

 

目标是最终生产 128 GB 模块,总共 2048 个 DPU。在 DPU 与其 64 MB 内存之间的有效 1 GB / s 带宽下,这意味着 DPU 与内存之间的有效带宽为 2 TB / s。由于 DPU 的工作方式,这是必需的,这将在下面解释。 


 
处理器和技术已获得专利,但 UPMEM 表示,他们正在与内存供应商合作开发 20nm 级工艺。添加 DPU 内核可以增加非常小的裸片面积,并且可以在 2-3 个金属层内启用,因为逻辑的密度小于前沿逻辑实现的密度。与领先的 CPU 实现相比,我们的想法是实现 10 倍的总能效和可扩展性。

 

目前,UPMEM 为客户提供软件模拟和硬件 FPGA 验证模拟器 - 实际上,感兴趣的各方可以在 AWS f1.16x 大型实例上模拟 UPMEM 平台。实际的 PIM-DRAM 模块样品将在第三季度向高端客户发货,随着更多公司对此感兴趣并加入,我们计划在明年继续推广。UPMEM 引用性能示例表示,他们已经看到基因组模式匹配的速度提高了 22x-25x,数据库索引搜索的吞吐量提高了 18 倍,延迟为原来的 1/100,索引搜索应用程序的 TCO 提高了 14 倍。

 

在成本方面,UPMEM 没有说明计划以多少价格出售其技术,但与其他解决方案相比,UPMEM 有望成为一个边际成本。在一次演示中,该公司表示,他们的解决方案可以用一个 400 美元的增强内存解决方案替代一个潜在的 40000 美元的服务器,并指出使用 PIM 在软件许可、数据中心空间和功耗 / 效率方面产生了连锁反应。

 


UPMEM 提供了一些关于电力消耗的数据。在这张幻灯片中,该公司比较了两台服务器,一台带有 pimm - dram,另一台没有。在这种情况下,“DRAM 到处理器的 64 位操作数”召回需要在常规服务器上运行 3000 个 pJ,将数据从 DRAM 中取出,并传递到缓存中,而在 PIM-DRAM 上,只需将数据移动到 DPU 上,同样的操作只需要 150 个 pJ 的能量。DPU 上的操作本身实际上需要 2 倍的功率(20 pJ 与 10 pJ 相比),但是总的功率效率增益是 170 pJ vs 3010 pJ,或者略低于 20x。

 

这张幻灯片指出的一件可能令人困惑的事情是服务器的功耗——常规服务器列出的功耗只有 300W,但是 PIM 解决方案的功耗高达 700W。这是因为在 UPMEM 的解决方案下,每个 DRAM 模块的功耗将会增加。

 


UPMEM 提出的第一个产品模块是前面提到的 8 GB DDR4-2400 模块,其中 128 个 DPU 各自覆盖 64 MB 内存并以 500 MHz 运行。对于单个 4 Gb 裸片(其中 16 个在 8 GB 模块中,18 个用于 RDIMM ECC),我们仍然处于 1 cm2 的常规裸片尺寸,但每个芯片所需的功率约为 1.2 瓦。

 

如果我们研究所有 16/18 芯片,我们可以看到每个 8GB 的模块将是 19.2-21.6 瓦。对于 DRAM 来说,这是一个很大的功耗,而且实际上超过了 DDR4 插槽的额定范围。从这个角度来看,Intel 的 512GB Optane 模块有一个 18w 的运行模式,服务器可以冷却到 18w,但是也可以低到 12w。UPMEM 并没有说明它是否能够通过降低 DPU 频率来降低每个模块的功率。

 

UPMEM 的目标是用 PIM-DRAM 模块替换服务器中的 DRAM 模块。该公司表示,DDR4 接口并不适合这类事情,但他们已经解决了这个问题。在一份简报中,该公司指出,目前至少需要为一个操作系统安装非 PIM-DRAM。