← 返回 PaperDaily 大模型与智能体

告别C++!ETH Zurich新DRAM模拟器代码量狂砍96%

ETH Zurich的SAFARI团队升级了它们的DRAM模拟器Ramulator,新版本不仅支持了HBM3、LPDDR5等最新标准,还通过Python接口把代码量砍掉了惊人的96%,堪称内存系统研究者的又一把瑞士军刀。

告别C++!ETH Zurich新DRAM模拟器代码量狂砍96%
🐉 龙哥读论文知识星球来了!
公众号每日8篇拆解不够看?星球无上限更AI领域论文、资讯、招聘、招博、开源代码,一站式干货,每日2分钟刷完即赚! 👇扫码加入「龙哥读论文」知识星球,前沿干货、实用资源一站式拿捏~ xingqiu_header

龙哥推荐理由:
ETH Zurich的SAFARI团队升级了它们的DRAM模拟器Ramulator,新版本不仅支持了HBM3、LPDDR5等最新标准,还通过Python接口把代码量砍掉了惊人的96%,堪称内存系统研究者的又一把瑞士军刀。


原论文信息如下:
论文标题:
Ramulator 2.1: A Composable Memory System Simulator for Modern DRAM Systems
发表日期:
2026年06月
发表单位:
ETH Zurich
原文链接:
https://arxiv.org/pdf/2606.13844v1.pdf
开源代码链接:
https://github.com/CMU-SAFARI/ramulator2
大家好,我是龙哥。
如果你做过体系结构方向的研究,一定对 Ramulator 这个名字不陌生。从2016年第一版开始,它就一直是最受欢迎的DRAM模拟器之一。如今,ETH Zurich的SAFARI团队带着它的新版本回来了——Ramulator 2.1
这可不是什么缝缝补补的小修小改,而是一次彻头彻尾的“动力系统升级”。老规矩,咱们先上个图感受一下,Ramulator 2.1在性能验证上的成果。
图1:Ramulator 2.1 模型中多种DRAM标准的延迟-吞吐量曲线
图1:Ramulator 2.1 模型中多种DRAM标准的延迟-吞吐量曲线
看到没?图上那些彩色的曲线平滑地逼近理论峰值(橙色竖虚线),这正是模拟器模型精准的证明。它能跑出和真实硬件一致的“膝盖曲线”,说明这个模拟器,真的有两把刷子!

现代DRAM模拟器的突破:Ramulator 2.1的三大改进

咱们直接说重点。Ramulator 2.1相较于之前的版本,主要在三个方向上做了“颠覆性”的改进,可以说是直接解决了DRAM模拟领域的三大痛点。

痛点一:跟不上时代。 之前的老版本主要支持DDR3/DDR4这些比较旧的协议。但现在HBM3、LPDDR5、GDDR7这些“新贵”已经普及了,它们引入了很多复杂的新特性,比如并行命令、分裂激活、时钟同步,老模拟器根本招架不住。Ramulator 2.1第一个改进就是——全面支持现代和新兴的DRAM标准及内存控制器特性

痛点二:编程太痛苦。 以前要在Ramulator里加个新命令或者改个时序,得在C++的汪洋大海里反复横跳,代码量巨大,光是定义个新标准就能写大几百行。Ramulator 2.1 的解法很优雅——引入基于Python的建模和配置接口。利用一个“双向代码生成框架”,把开发者从C++的泥潭里解放出来,让你用Python写的高层规格,自动为你生成底层的C++代码,堪称懒人福音。

痛点三:结果不可信。 模拟器跑出的结果到底准不准?全靠人工凭感觉看,没有系统性的校验。Ramulator 2.1 针对这个问题,构建了一套全面的测试和验证基础设施。它既能做细粒度的DRAM时序约束验证,又能通过延迟-吞吐量曲线帮你做系统级的性能评估,让你的模拟结果有据可查。

插图
这三个改进,直接让Ramulator 2.1从“能用”变成了“好用、想用、敢用”。

如何优雅地模拟HBM3与LPDDR5?模块化架构解析

新出的DRAM标准到底有啥不一样的?咱们挑几个有代表性的,看看它们有多“折腾”开发者,以及Ramulator 2.1是怎么“四两拨千斤”的。

并行命令发射。 像HBM3/4和GDDR7这种高带宽存储器,它们把行命令列命令的通道分开了。也就是说,当你打开行(ACT命令)的时候,完全不影响你同时进行读写(RD/WR命令)。从模拟器角度看,这意味着控制器要能“左右互搏”。Ramulator 2.1的实现极其聪明:它设计了一个基础的调度流程,然后通过传入不同的过滤谓词(Filtering Predicate),让这个流程跑两次,一次只看行命令,一次只看列命令。妙啊!

分裂的两相激活。 移动端新秀LPDDR5/6为了省电,把一次激活拆成了两步:先发送ACT-1让Bank进入中间态,再在限定时间tAAD内发送ACT-2完成激活。这个机制处理起来就很头疼,因为ACT-2是“限时任务”,错过就凉凉。Ramulator 2.1的LPDDR5/6控制器通过过滤谓词,强制要求只有发过ACT-1的请求才能发ACT-2,并且禁止其他请求插队打断这个“限时任务”的提交。这逻辑,简直像一个尽职尽责的排队管理员。

数据时钟同步。 为了省电,LPDDR5/6的WCK和GDDR7的RCK这些高频数据时钟,只在有数据传输时才开启。这就意味着控制器得像个管家一样,在读写操作前先去“打开”时钟。Ramulator 2.1通过精确追踪时钟的有效窗口,自动把这些必需的同步命令(像LPDDR5/6的CAS_RD/WR,GDDR7的RCKSTRT)作为前置条件插入。机制复用了基础调度流程,逻辑清晰,代码优雅。

所以你看,Ramulator 2.1的底层思想是“分而治之”。它抽取所有标准共有的机制,放到一个共享的控制器基类里,再通过组合式的过滤谓词,让各个标准“定制”自己的调度策略。这架构,清晰得让人想哭。

告别C++繁琐编程:Python接口如何让DRAM建模更简单?

这是最让我兴奋的部分。Ramulator 2.1的团队做了一个非常“善解人意”的决定:把底层复杂的细节藏起来,给用户一个无比亲切的Python接口。
之前如果想在传统C++框架下的Ramulator 2.0里创建DDR5的一个变体,你可能需要手写400多行C++代码,定义命令、时序约束、层级关系,一不小心就是“加不完的班,改不完的bug”。
现在,Ramulator 2.1把这个过程简化到了极致。它提供了一个“双向代码生成框架”,你只需要做下面几件事:
首先,你想在DDR5的基础上加一个新命令,比如“VRR”(受害者行刷新),只需要继承DDR5基类,然后在它的基础上追加你的新命令和约束。听起来是不是像给一棵树嫁接新枝一样自然?

核心概念解释: 这里的VRR(Victim Row Refresh,受害行刷新)是一种缓解行锤击(RowHammer)攻击的技术,通过刷新被频繁激活行的相邻行来保护数据安全。但在我们继续之前,先看一个更直观的东西——Ramulator 2.1相比于2.0版本,在代码量上的巨大优势。

表1:Ramulator 2.1(Python)与Ramulator 2.0(C++)中DRAM标准源代码行数的减少情况
表1:Ramulator 2.1(Python)与Ramulator 2.0(C++)中DRAM标准源代码行数的减少情况
对,你没看错。DDR5标准用C++要写402行,换成Python只需要132行。更夸张的是DDR5-VRR这个变体,加个新命令和约束,仅仅需要18行代码和参数配置,相比C++版本的445行,减少了惊人的96%。这就是Python接口的威力。你操作的对象不再是晦涩的指针和模板,而是Python的字典和列表,就像在写操作手册,而不是在造机器。
Ramulator 2.1还提供了一个自动代码生成工具,可以把这个Python配置脚本直接转译成一个纯文本的YAML配置文件,让Ramulator 2.1的C++后端可以直接解析。同时,Python包也可以无缝集成到gem5等使用Python配置系统的模拟器中。这设计,简直体贴到家了。

可信赖的模拟结果:测试与验证基础设施详解

工具再酷,结果不靠谱也是白搭。为了让你用的放心,Ramulator 2.1专门搞了一套“体检流程”。

细粒度验证。 基于pytest的单元测试框架。你可以创建一个待测试的DRAM设备,发送命令,然后精确地在某个时钟周期去“探测”设备的状态。比如,你可以检查一个读命令是不是被正确地延迟到了满足时序条件。这相当于给模拟器装了显微镜,能看到每一个时钟周期内部发生了什么。

系统级性能评估。 利用前文展示的“延迟-吞吐量曲线”。这个曲线是由一个改进过的流量生成器前段跑出来的。它可以产生不同间隔的流式请求和串行随机访问探针请求,来测量在不同负载下的延迟拐点。你能看到,这些曲线完美地、优雅地逼近了理论峰值。这说明模拟器的结果和真实硬件的表现是吻合的。

更要命的是,Ramulator 2.1还提供了一个基于Web的 DRAM命令追踪可视化器。它既可以离线分析记录好的trace,也可以连接到正在运行的Ramulator 2.1模拟器,实时观察DRAM命令的执行情况。想象一下,当你的模拟器在后台跑时,你打开浏览器就能看到命令、时序、地址、总线利用率的实时瀑布图,这调试体验简直是“Eureka”级别的!
下图就是追踪可视化器的两张截图,左边是总线利用率视图,右边是命令追踪视图,感受一下这种“一切尽在掌控”的感觉。
图2:Ramulator 2.1 的DRAM命令追踪可视化器:(a) 总线利用率视图 (b) 命令追踪视图
图2:Ramulator 2.1 的DRAM命令追踪可视化器:(a) 总线利用率视图 (b) 命令追踪视图

开源生态与未来展望:从模拟到内存计算

Ramulator 2.1已经全部开源(MIT许可证),在GitHub上已经收获了575颗星,社区非常活跃。除了前面说的这些,它还有几个让人期待未来的发展方向。
团队明确表示,会将PUD(Processing-Using-DRAM,使用DRAM进行计算)PIM(Processing-In-Memory,存内处理)的支持功能纳入未来的开发版图。这意味着Ramulator将不仅仅是一个存储模拟器,它将成为计算型内存系统(Memory-Centric Computing)的顶级实验平台。这种“内存即算力”的趋势,正在被Ramulator的开发者们敏锐地把握住。
插图
龙哥只能说,这是目前这个星球上,对DRAM标准支持最全面、最现代、最好用的开源模拟器,没有之一。如果你正在做内存系统的相关研究,不看看Ramulator 2.1,就像厨子不看新菜谱一样,有点暴殄天物了。

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:

Ramulator 2.1和 Ramulator 2.0有什么本质区别? 简单来说,Ramulator 2.1是2.0的全面“Plus”版。2.0奠定了模块化、可扩展的基础,而2.1则在这个基础上,对最新DRAM标准(HBM3/4, LPDDR5/6, GDDR7)提供了开箱即用的支持。更重要的是,它引入了Python双向代码生成框架,极大地降低了用户扩展和定制DRAM标准的门槛。用更少的时间写代码,用更多的时间去思考创新,这就是两者最大的区别。

除了加新命令,Python接口还能做什么? 除了扩展DRAM标准,Python接口主要用于配置和驱动整个模拟流程。你可以在一个Python脚本中完成:配置内存控制器、地址映射器、调度器;运行模拟;收集分析数据(带宽、延迟等)。而且,这个Python包与gem5等使用Python配置的全系统模拟器可以实现无缝集成。

文中的tAAD、nRCD等术语代表什么意思? 这些是JEDEC标准中定义的DRAM时序参数,是模拟器能否精确工作的重要门槛。tAAD (ACT-1 to ACT-2 Delay):LPDDR5/6中从ACT-1命令到ACT-2命令必须遵守的最大延迟。nRCD (RAS to CAS Delay):激活行(ACT)到列命令(读/写)必须等待的最小周期数。

如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

龙哥点评

论文创新性分数:★★★★✰

这是一款工具软件,而非算法创新。它的价值在于工程实现上的精巧。用Python双向代码生成框架取代纯C++的手工编写,大幅提升了生产效率,这是对开发者体验的极致优化。

实验合理度:★★★★★

实验设计逻辑闭环。从细粒度单元测试验证每个时序,到系统级的延迟-吞吐量曲线比对,再到支持实时trace的可视化器,整个验证流程非常扎实、令人信服。对比11款DRAM标准的曲线和理论峰值完全吻合,证明模拟器模型极其精准。

学术研究价值:★★★★✰

极高。它为对现代DRAM系统进行仿真和创新的研究者提供了最先进的实验平台。尤其对于HBM、LPDDR、GDDR等前沿标准的研究,它是目前开源的、最可行的方案。其推动的“可组合、易扩展”的思想也给工具类论文树立了新标杆。

稳定性:★★★★★

作为一个经过广泛验证的开源模拟器,其稳定性已经过社区和论文的双重检验。单元测试+系统级验证的双重保险,确保了模拟结果的可靠。

适应性以及泛化能力:★★★★★

完美适配。无论是新型内存标准还是老的DDR3,它都支持。Python接口让用户可以轻松“制造”任何想到的标准变体,适应几乎所有DRAM模拟场景。

硬件需求及成本:★★★★★

对运行硬件无特殊要求,任何现代CPU+充足内存即可。它的设计目标是在用户侧零成本增加的前提下,提供最大化的生产力。

复现难度:★★★★★

毫无难度。开源、MIT许可证、C++20+CMake构建,有详细的文档和强大的单元测试保证,只需git clone后cmake && make即可。

产品化成熟度:★★★★★

极高的产品化成熟度。它已经是一个开箱即用的工具,可以方便地集成到其他系统模拟器中(如gem5)。对于工业界而言,硬件开发前期的体系结构探索,直接用它来评估DRAM性能,是个非常成熟可靠的方案。

可能的问题:虽然已很强大,但处理复杂内存架构(比如PIM、CXL)的全面验证还需要进一步完善。此外,对于新手而言,虽然Python接口简化了操作,但DRAM本身的复杂性依然存在,深入理解其概念并写出正确配置仍需一定学习成本。


主要参考文献

[1] SAFARI Research Group, "Ramulator 2 — GitHub Repository." https://github.com/CMU-SAFARI/ramulator2, 2023.
[2] H. Luo, Y. C. Tuğrul, F. N. Bostancı, A. Olgun, A. G. Yağlıkçı, and O. Mutlu, "Ramulator 2.0: A Modern, Modular, and Extensible DRAM Simulator," CAL, 2023.
[3] H. Luo, F. N. Bostancı, A. Olgun, M. Makeenkova, Z. Malik, I. Akdeniz, O. Mutlu, "Ramulator 2.1: A Composable Memory System Simulator for Modern DRAM Systems," arXiv, 2026.

💙 想要持续获取最新、最前沿的AI论文解读,欢迎扫码关注「龙哥读论文」!


*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

end
想要上手机模拟最新 DRAM?Ramulator 2.1 已开源,扫码入群 Get 一手代码和经验!
欢迎加入龙哥读论文粉丝群,扫描下方二维码或者添加龙哥助手微信号加群:kangjinlonghelper。一定要备注:研究方向+地点+学校/公司+昵称(如 图像处理+上海+清华+龙哥),根据格式备注,可更快被通过且邀请进群。
『龙哥读论文』微信群目前包含:图像处理、大模型及智能体、自动驾驶及机器人、AI医疗及AI金融5个群
wechat_helper dianzan
转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。