每项新 DRAM 技术都逼出一次重新设计
DRAM 仍在限制现代系统的性能、能效与稳健性,许多已发表的技术正是针对这些限制:在 DRAM 内部计算、更低开销的维护操作、更高的并行度,以及更低的访问延迟。障碍在于落地。论文自己对七大类 32 项技术的分析发现,32 项全部需要改动内存控制器,11 项还需要改动 DRAM 接口,15 项需要改动 DRAM 芯片。由于接口和控制器是刚性的,每项技术往往都带着自己的一套重新设计而来。
Terracotta 的目标比让 DRAM 无限可扩展要窄:它要减少反复的接口与控制器改动。其背后的观察是,许多技术使用相似的 DRAM 命令和相似的内存控制器结构。Terracotta 把这些相似之处提炼成一组原语,于是新技术变成对已有柔性硬件的一次配置,而不是又一轮接口与控制器改动。
自定义命令加可编程控制器
Terracotta 有两个组成部分。第一,自定义命令扩展让 DRAM 厂商在一个标准化的接口内定义新命令。第二,可编程内存控制器让系统设计者在硅片制造完成后支持新的 DRAM 技术。两者结合,使部署方式变成配置内存控制器,而不是修改接口和控制器。
该设计面向基于 DDR5 的系统。它的原语是触发器、更新和动作。触发器在不支持任何技术的内存控制器关键路径上增加两个周期。对于最小时序约束超过两周期元数据读改写延迟的技术,更新不在关键路径上;动作也不在关键路径上,因为自定义命令与标准命令的发射路径并行工作。在 DRAM 一侧,自定义命令解码逻辑被限制在芯片中央条带:一个只有一位状态的状态机、一个跟踪每条自定义命令最多 16 个载荷的 4 位载荷计数器,以及少于 24 个门的组合控制逻辑。论文指出,单个 8 位 DDR5 模式寄存器就已经需要八个触发器,而标准定义了 256 个这样的寄存器。
四个领域各一项技术检验该框架
评估要回答的是:Terracotta 能否保留 DRAM 技术在自定义实现下所提供的收益。作者从每个领域选出一项代表性技术:processing-using-DRAM 选 PRADA,低开销 DRAM 维护操作选 MoPAC-C,子阵列级并行选 MASA,访问延迟降低选 ChargeCache。
性能与能耗来自周期级仿真,使用 Ramulator 2.0 并集成 DRAMPower。基线是 4.2 GHz 处理器,1 核或 4 核,4 发射宽度,256 项指令窗口;64B 缓存行,16 路组相联,每核 2 MiB;64 项读/写请求队列,采用 FR-FCFS 调度且列上限为 4;RoBaRaCoCh 地址映射;DDR5-3200,1 通道,1 个 rank,8 个 bank group,每 bank group 4 个 bank,每 bank 128 个子阵列,每 bank 64K 行。Ramulator 2.0 被扩展以建模基于 Terracotta 的实现、自定义硬件实现,以及在适用情况下的理想实现。对自定义实现,作者纳入各技术内存控制器 RTL 模型的延迟开销,并乐观地假设其非标准 DRAM 命令为 2 个周期;对基于 Terracotta 的实现,他们使用自身 RTL 综合得到的 2 周期控制器延迟,并按载荷数量确定命令延迟。
工作负载是来自 SPEC CPU2006、SPEC CPU2017、TPC、MediaBench 和 YCSB 的 57 个单核工作负载,按每千条指令的行缓冲未命中数(RBMPKI)分为低(RBMPKI 小于 2)和高(RBMPKI 不小于 2)两个内存密集度组;另有 60 个四核多程序混合负载,分属 HHHH、HHHL、HHLL、HLLL 和 LLLL 五类,每类 12 个。PRADA 使用五个专门设计的微基准。单核性能以每周期指令数衡量,多核性能以加权加速比衡量。
保留逾 96% 加速且开销很低
对来自四个不同领域的这四项技术,Terracotta 保留了自定义实现几乎全部的性能收益,超过 96%。这个数字是相对自定义实现的保留比例,并不是说 Terracotta 比它们更快;比较发生在基于 Terracotta 的实现与针对特定技术的自定义实现之间,且处于同一套仿真系统上。
各项成本分别报告,不应合并。Terracotta 在高端的服务器级处理器上带来 0.6-3.2% 的 DRAM 能耗开销、0.03% 的面积开销和 0.56% 的功耗开销。面积数字指该处理器的芯片面积,功耗数字指其功耗预算;能耗数字则是 DRAM 能耗。这些是框架自身的开销,与相对自定义实现测得的性能保留是两回事。
两项技术组合胜过各自单独使用
基于 Terracotta 的两项技术组合,优于这两项技术各自基于 Terracotta 的实现。这是论文对“无需反复改动接口与控制器即可增加技术”这一好处的演示:一旦柔性接口和可编程控制器存在,第二项技术就能通过配置叠加,而不必再来一次重新设计。
该组合结果是在多个基于 Terracotta 的实现之间做的比较,因此它说明的是当技术共享同一基底时框架能带来什么。它本身并不能证明任意两项技术都能良好组合,而论文在讨论扩展 Terracotta 时也指出,当前的触发器逻辑并不支持跨 bank 的协调。
芯片、处理器与资源限制依然存在
Terracotta 覆盖的是一项技术中接口与控制器的部分,而不是整项技术。许多 DRAM 技术还需要改动 DRAM 芯片本身,而这些改动因技术而异;把所有这些都放进单一 DRAM 架构,可能加入个别产品并不需要的电路。论文把这些留给 DRAM 厂商,由厂商实现自己认为合适的技术,并通过自定义命令扩展暴露出来。有些技术还需要改动核心或存储层次,以便把工作卸载到 DRAM,这些仍属系统设计者的责任,不过 Terracotta 仍能支持其中需要接口与控制器支持的部分。
实现约束对每个 Terracotta 实例是固定的:给定实现提供固定数量的元数据存储和固定数量的定时器。只有当一项技术的最小时序约束超过元数据表的读改写延迟时,它的更新才不在关键路径上。需要更多资源、或时序约束比该延迟更紧的技术,可能需要重新设计控制器。这些原语是从七大类 32 项技术中提炼的,未必能覆盖所有可能的 DRAM 技术;论文提出了若干可能的扩展,例如用于多 bank 协调的通道级或 bank group 级触发器,以及供那些根据 DRAM 操作结果自适应调整的技术使用的反馈路径,并把它们的设计与评估留给未来工作。
该主张关乎落地成本而非峰值速度
论文表示,据其所知,Terracotta 是首个减少为促成 DRAM 技术落地而反复改动接口与控制器的研究。因此真正相关的比较不是 Terracotta 与自定义实现在原始性能上的对比——在那里自定义版本仍是参照,而 Terracotta 保留了它 96% 以上的收益——而是 Terracotta 与“每来一项新技术就改一次接口和控制器”这条替代路径的对比。
对权衡这项工作的读者来说,与决策相关的划分依据是技术所属领域,以及该技术的需求落在哪里。如果一项技术的需求落在内存控制器和接口,Terracotta 的原语正是其目标,而所报告的高端服务器级处理器上 0.6-3.2% DRAM 能耗、0.03% 面积和 0.56% 功耗开销,就是这种柔性的代价。如果一项技术还需要改动 DRAM 芯片、处理器侧改动、超出给定实例所提供的元数据或定时器,或者时序约束比元数据读改写延迟更紧,Terracotta 并不能免除这些工作。组合结果是该框架前提最清晰的证据:在同一基底上加入第二项技术可以胜过任何一项单独使用,而这正是反复重新设计接口与控制器会使其代价高昂的结果。
本文引用的文献
Terracotta: Enabling the Adoption of New DRAM Techniques via a Flexible DRAM Interface and Memory Controller
Terracotta 把标准化接口内的自定义命令扩展与可编程内存控制器结合起来,使 DRAM 技术可以通过配置部署;对来自四个领域的四项技术,它保留了自定义实现 96% 以上的性能收益,两项技术的组合胜过各自单独使用,其开销为高端服务器级处理器上 0.6-3.2% 的 DRAM 能耗、0.03% 的面积和 0.56% 的功耗。
