当前位置: 首页 > news >正文

CXL-Enabled Enhanced Memory Functions——论文阅读

IEEE Micro 2023 Paper CXL论文阅读笔记整理

问题

计算快速链路(CXL)协议是系统社区的一个重要里程碑。CXL提供了标准化的缓存一致性内存协议,可用于将设备和内存连接到系统,同时保持与主机处理器的内存一致性。CXL使加速器(例如,GPU和DPU)既能直接加载/存储对主机存储器的访问,又能使它们自己的设备上存储器同样可由CPU访问。CXL允许在内存数据平面上插入技术,所以它允许将功能实现到内存子系统中的可能性。

本文方法

本文中介绍了增强内存功能(EMF)的概念。描述了两个用例,其中一个使用基于现场可编程门阵列(FPGA)的智能存储控制器平台实现原型。

有效的EMF将利用以下一个或多个属性来实现其功能:(1) 接近内存介质本身。(2) 能够在数据平面上插入内存读/写命令。(3) 主机处理器缓存层次结构外部。(4) 独立于主机ISA限制。(5) 与虚拟内存子系统分离。(6) 能够与主机处理器复合体进行交互,以保持数据一致性。

设想的EMF:

访问热图

访问热图提供了更好的源数据,操作系统和管理程序可以使用这些数据来决定数据应该放在多个内存设备的何处。

CXL的使用带来了异构内存域,这些异构内存可能具有不同的容量、性能(延迟、带宽)、能耗和耐久性(寿命)特性,因此需要仔细管理数据的放置。例如对内存页进行预测,区分冷热页,将热页放置到性能更高的存储设备。

现有方法包括:页表监视、内存访问采样、性能计数器,但在CXL场景下,增加总容量和内存硬件共享会带来更高的性能开销。

图3展示了如何实现访问热图EMF。应用程序发送注册感兴趣的地址范围和跟踪参数的配置命令。读写请求照常进行。IMC识别被监视的地址,并增加存储在控制器芯片或存储器的保留部分中的读写计数器(元数据)。主机可以根据需要读取或重置计数器,该主机运行页面调度策略并协调迁移。

分开跟踪读取和写入很重要,因为读取延迟通常对性能更具影响,而写入可能会导致NVM磨损,因此会有不同的处理方式。这种组织下,IMC与存储器芯片接近,减少了更新访问计数器所需的CXL链路上的带宽需求,并以尽可能低的延迟利用了完整的内部设备带宽。该设备还可以将访问计数器的操作与实际数据路径重叠,从而不存在性能损失。

内存回滚

内存回滚允许在崩溃一致的版本中使用具有持久内存的未经修改的软件库。与仅使用软件实现崩溃一致性的方法相比,它还显著减少了写入放大。

现有方法的问题:

  • 使用编译器的指令实现崩溃一致性,现有的持久存储器编程框架需要有效地重写应用程序代码,以使用框架的数据结构和控制接口。

  • 使用软件实现崩溃一致性,在内存使用和性能方面都非常昂贵。对于树和哈希图数据结构,持久化和日志记录一起会导致63%-72%的插入性能开销和61%-68%的删除性能开销。

本文的回滚EMF设计基于识别与事务相关联的内存区域,采用微堆,以更精细的粒度管理堆内存。

IMC的回滚功能(图5)通过三种方式增强了正常的控制器功能:(1)跟踪其任何缓存行在主机缓存中处于修改状态的可能性;(2) 响应回滚事务启动和停止请求;(3)执行高速缓存行写入的在线处理。

基于FPGA实现,实验结果表明,EMF回滚优于软件解决方案。

总结

介绍了增强内存功能(EMF)的概念,提供了如何在智能内存控制器(IMC)中实现两个用例(访问热图和内存回滚)的EMF。本质来说是利用近数据处理的思路,在CXL设备端通过IMC获取更多数据,例如访问跟踪、缓存行状态,并响应来自主机的请求,实现更高的性能。

提出了EMF设计思路,利用以下一个或多个属性来实现其功能:(1) 接近内存介质本身。(2) 能够在数据平面上插入内存读/写命令。(3) 主机处理器缓存层次结构外部。(4) 独立于主机ISA限制。(5) 与虚拟内存子系统分离。(6) 能够与主机处理器复合体进行交互,以保持数据一致性。

相关文章:

  • 第十四届蓝桥杯省赛真题 Java 研究生 组【原卷】
  • 神策分析 Copilot 成功通过网信办算法备案,数据分析 AI 化全面落地
  • 栈与队列|232.用栈实现队列
  • 音频数据如果在中断中会随机给的那就放入队列或者缓冲区;队列缓冲区对音频的作用
  • RabbitMQ基础
  • 在 Mac 上通过“启动转换助理”安装 Windows 10
  • swiftUI中的可变属性和封装
  • huawei services HK华为云服务
  • mysql启动报错:ERROR! The server quit without updating PID file
  • 从0开始回顾MySQL --- 三范式与表设计
  • 腾讯云对象存储的在Java使用步骤介绍
  • Vue学习日记 Day7 —— json-server工具、基于VueCli自定义创建项目、postcss插件
  • C语言中volatile关键字的用法
  • 华为配置敏捷分布式SFN漫游实验
  • 【Golang】golang使用三方SDK操作容器指南
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • centos安装java运行环境jdk+tomcat
  • fetch 从初识到应用
  • Linux下的乱码问题
  • spring学习第二天
  • supervisor 永不挂掉的进程 安装以及使用
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 前言-如何学习区块链
  • 如何用vue打造一个移动端音乐播放器
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 数组大概知多少
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务入门【系列视频课程】
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​configparser --- 配置文件解析器​
  • ​flutter 代码混淆
  • #define用法
  • (2)nginx 安装、启停
  • (附源码)springboot教学评价 毕业设计 641310
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (接口封装)
  • (四)Android布局类型(线性布局LinearLayout)
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET BackgroundWorker
  • .Net core 6.0 升8.0
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [100天算法】-不同路径 III(day 73)
  • [20150707]外部表与rowid.txt
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [BJDCTF2020]The mystery of ip1
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C#小技巧]如何捕捉上升沿和下降沿