Polaris: Enhancing CXL-based Memory Expanders with Memory-side Prefetching——论文泛读

APPT 2024 Paper CXL论文阅读笔记整理

问题

由于控制和传输开销,与本地内存相比,基于CXL的内存扩展器会增加延迟,并对延迟敏感的任务产生负面影响。虽然缓存预取可以减少内存延迟,但需要提高CPU预取覆盖率。然而,为CXL内存调整CPU预取器需要昂贵的CPU修改,并且可能导致缓存污染和内存带宽浪费。

本文方法

本文提出了Polaris,将硬件预取器集成到CXL内存控制器芯片中。

  • 分析传入的内存请求,并将缓存行预取到专用SRAM缓冲区,而无需修改CPU或软件。

  • 在预取命中时,从预取缓冲区中读取数据,大大缩小了CXL和本地DDR内存之间的性能差距。有几个优势:(1)硬件修改仅限于内存扩展器,有助于将兼容的方案引入现有的数据中心服务器。(2) 使用专用的预取缓冲区,可以在不污染CPU缓存的情况下,通过积极的预取,解锁比CPU预取器更多的预取覆盖范围。(3) 可以获得比CPU端更高的设备端DRAM带宽用于预取。(4) 与CPU侧预取器相比,独立芯片中的存储器侧预取机在复杂的预取器方面有更多的预算,以获得更高的预取精度。

  • 如果允许对CPU进行更改,例如扩展Intel的数据直接IO(DDIO)。Polaris可以主动将高置信度预取推送到CPU的最后一级缓存(LLC),进一步减少CXL内存访问开销。

运行流程:

  • 如图6(a),解码后的内存地址同时发送到Q2(正常读取队列)和Q4(PFB读取队列),即路径1。如果地址在PFB中命中,而同一请求仍在Q2中等待,则它将从Q2(路径2)中删除,以节省DRAM带宽。命中缓存线通过Q5(PFB返回队列)从PFB中读出,并发送回CXL控制器进行分组(路径3)。如果请求在PFB中命中,但其分支请求已被发送到内存控制器(不在Q2中),CXL控制器将两次接收同一缓存行,一次来自PFB,另一次来自DRAM,并直接丢弃后一个。

  • 如果CPU读取请求在PFB中未命中,设备内存会像往常一样返回未命中的缓存行,如图6(b)中的路径4。存储器访问请求由存储器控制器提供服务,读取的数据通过Q1(DRAM返回队列)反馈到CXL控制器。

  • 接收到的读取请求由预取器进行分析,如图6(c)所示。预取器获取Q4中存储的读取地址,分析并向存储器控制器发出预取请求。如路径5所示,要预取的缓存行地址被放入Q3(预取队列)。仲裁器调度来自Q2和Q3的请求,以保证正常的存储器读取具有更高的优先级。预取的数据通过PFB填充队列Q6(路径6)存储在PFB中。这些队列在逻辑上是分开的,其中一些可以在物理实现中合并。对于CPU写入,在收到内存写入请求时,Polaris会更新PFB(如果命中)和DRAM中的缓存行,以保持一致。

实验表明,结合各种CPU端预取器,Polaris能够有效地容忍高达85%的常见工作负载(平均43%)的CXL内存较长的延迟。

实验

实验环境:ChampSim模拟器

数据集:SPEC2006[21]、SPEC2017[14]、PARSEC-2.1[1]、GAPBS[8]

实验对比:减速比

总结

针对CXL内存的预取,本文提出Polaris,将硬件预取器集成到CXL内存控制器芯片中。在CXL中增加额外缓存区,将预取数据存入缓存区中,预取命中时降低CXL内存访问延迟。支持将预取结果主动推送到CPU的LLC,进一步降低延迟。

优势:(1)在硬件修改,兼容现有数据中心服务器;(2)避免预取污染CPU缓存,具有更大预取范围;(3)利用设备端DRAM带宽进行预取;(4)可以利用硬件性能实现更高预取精度。

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙BOOK言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值