Memory Sharing with CXL: Hardware and Software Design Approaches——论文阅读

arXiv Paper CXL论文阅读笔记整理

问题

Compute Express Link(CXL)是一种基于PCI Express(PCIe)接口的开放式、行业支持的互连,可实现主机处理器和终端设备(例如加速器、内存扩展器、智能I/O设备等)之间的高速、低延迟通信。CXL允许在相同的物理地址空间中使用字节可寻址内存对连接的设备进行缓存线细粒度访问。从操作系统的角度来看,CXL内存在系统中看起来是一个独立的NUMA节点,其中内存访问延迟略高于远程NUMA访问延迟(50-100 ns)[4,5]。

CXL为内存池和共享提供了机会。内存共享是一种成熟的软件功能,通过避免不必要的数据移动来提高内存利用率。

本文方法

本文讨论了使用不同CXL协议实现内存共享的多种方法,CXL 2.0通过基于软件的解决方案实现内存共享,CXL 3.0通过软硬件协同设计实现内存共享。

软件支持的内存共享

自定义框架:操作系统层的CXL驱动程序为CXL设备提供了支持,包括启动设备、填充硬件的内存地址空间、低级CXL协议实现、支持多头设备等。用户空间中的Verb层提供了底层CXL协议的抽象,向应用程序开发人员公开API,以实现更高级别的共享语义,如原子操作、同步、消息排序和调度等。上层协议为应用程序提供了内存共享。

为每个应用程序创建上下文,在多个进程之间分离,并隔离通信资源。在一个上下文中,可以有多个工作人员负责共享内存访问请求生成、消息排队、资源监控、内存地址空间管理等。工作人员可以在本地和远程相互通信,以跟踪任何共享内存操作的进度。

基于OpenSHMEM实现:OpenSHMEM是一种开源且广泛使用的分区全局地址空间(PGAS)库接口规范,在为应用程序提供标准的API,以便在共享内存区域之间进行通信。OpenSHMEM实现为原子的、远程内存访问(RMA)、集体、对称内存和Utils组件提供接口,这些组件负责通过共享内存网络进行所有数据传输。OpenSHMEM实施中的对象可以是每个处理引擎(PE)专用的,也可以在远程主机中运行的所有PE之间全局共享。可远程访问的对象在所有主机上都是对称的,所有PE都有具有相同名称、类型和大小的相应对象。它提供指针,用于向远程可访问的数据对象查询本地地址。OpenSHMEM实现公开了围栏和屏障功能,用于在共享内存区域上实现原子操作的不同编程功能。

硬件支持的内存共享

考虑双头CXL type3设备,通过CXL.io内存映射I/O(MMIO)区域实现共享内存访问控制,图5a。

硬件设计支持地址重映射,以将主机物理地址映射到设备HDM地址,驱动程序负责地址管理并提供对硬件逻辑的抽象。图5b显示了共享内存操作期间应用程序、设备驱动程序和FPGA之间的控制流程。

当应用程序出现在系统中时,共享内存驱动程序会对其进行注册,并公开对硬件功能接口的访问。然后,共享内存驱动程序授予应用程序可共享的内存区域的访问权限,并存储所有元数据,包括虚拟到物理地址转换、访问粒度、权限类型等。当用户空间应用程序请求写入访问权限时,驱动程序向硬件发送消息以启动硬件原子。一旦获取了访问权限并设置了相应的标志,驱动程序就会返回到应用程序。所有写访问请求都是基于到达序列来排序和服务的。写访问释放机制遵循类似的例程,发出硬件原子并重置标志,通知应用程序,然后可以执行下一个写访问请求。

共享粒度

内存共享通过减少不必要的数据移动来提高应用程序级性能,并提高内存利用率。但共享大的存储器地址空间可能会导致系统的显著开销和复杂性,比如在TB甚至更大的系统中,跨多个具有高访问频率的主机共享整个地址空间可能会导致高开销。此外,缓存行或页面细粒度锁管理可能不切实际,因为元数据管理会带来内存开销。如果考虑更小的存储器区域,例如1GB区域,则可以减少这种开销。然而,如果多个主机具有频繁的写入请求率,那么这种大的粒度区域可能会增加其他主机获取锁的高等待时间。支持CXL的多头共享内存系统将是具有高读取和低写入需求的应用程序的理想选择。

总结

基于CXL设备支持内存共享,分为基于软件和基于硬件两种方式。基于软件需要多层间协议的支持和实现,或通过OpenSHMEM实现。基于硬件则利用硬件内的驱动程序支持共享内存访问、重映射、访问粒度等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妙BOOK言

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

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

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

打赏作者

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

抵扣说明:

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

余额充值