CXL协议

文章探讨了异构计算中CPU与GPU、FPGA等加速器通过PCIe存在的通信瓶颈,指出PCIe缺乏缓存一致性导致的性能问题。为解决这一问题,引入了CXL(ComputeExpressLink)协议,这是一种基于PCIe但提供缓存一致性的接口,允许硬件加速器直接、高效地访问内存,减少了内存拷贝和延迟,提高了数据访问效率和系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异构计算

异构计算是计算机体系结构中目前最引人注目的技术之一,它通过高速网络互连接口将加速器集成到计算机系统中,CPU负责处理逻辑密集型任务,拥有较高计算能力和存储带宽的协处理器(如GPU/FPGA等)负责处理计算密集型和数据密集型任务,充分发挥各个硬件性来满足计算的需求,实现系统整体计算能力的最优化。CPU+GPU、CPU+FPGA等异构计算组合效能更好,通用计算被迫向异构计算演进。近年来,越来越多的研究人员开始研究基于多种硬件处理器的异构体系结构.。

PCIe

PCIe已经存在多年,最近完成的 PCIe 基础规范 5.0 版本现在能够以高达 32GT/s 的速度实现 CPU 和外设的互连。然而,在具有大型共享内存池和许多需要高带宽设备的环境中,PCIe 受到了一些限制。PCIe 没有指定支持一致性的机制,并且不能高效地管理隔离的内存池,因为每个 PCIe 层级都要共享一个 64 位地址空间。此外,PCIe 链路的延迟可能过高,无法高效管理系统中多个设备的共享内存。这种以PCIe互联的异构架构的主要缺点和限制是以CPU为计算中心,CPU与协处理器是通过 PCIe 总线的紧耦合连接,不利于协处理器的扩展。PCIe总线缺乏缓存一致性机制,导致内存访问性能低下。使用这种通信方式,需要经过多次地址映射,建立的通信上下文路径比较长,导致延时过大。协处理器需要通过CPU中转访问系统内存数据,源数据和结果数据存在多次内存拷贝的情况,不仅占用额外的存储器带宽,而且使整个加速过程的延迟增加,效率降低,算力瓶颈问题依然无法突破。对于数据密集型数据库来说,这种复杂的内存访问模式带来了巨大的通信开销。

异构缓存一致性加速接口

异构计算的关键在于打破CPU和外部设备(如硬件加速器)之间数据传输的瓶颈。为了提高通信带宽,各大厂商也提出异构缓存一致性协议,如IBM提出的CAPI(Coherent Acceleration Processor Interface)、OpenCAPI和CCIX(Cache Coherent Interconnect for accelerator)[1]和最新的Intel提出的CXL(Compute Express Link)协议[4]等。在共享内存编程模型下,可以通过用户空间虚拟地址对它们进行一致的主机内存访问﹐因此不再需要内核进行缓存一致性方面的处理,简化了加速器的内存访问管理,降低了内存访问延迟。

异构缓存一致性加速接口的设计思路是将加速设备作为CPU 的对等体(Full Peer to CPU),可直接与应用通信,是一种允许外部设备(I/O)和处理器 CPU共享内存的接口技 术,以实现CPU与诸如GPU、FPGA等专用加速芯片间的快速互联。借助异构缓存一致性接口,FPGA等硬件加速器可以像 CPU一样直接访问内存。相对于通过PCIe 的I/O协议进行加速的方案,减少I/O驱动程序的开销,简化了地址的转换,实现了内存零拷贝。

CXL 是Intel最早在Interconnect Day 2019上提出,基于PCIe协议(PCIE 5.0 ),与PCIe标准插槽兼容,为了解决异构设备的缓存和内存访问的一致性问题,让设备(GPU/FPGA)的内存,服务器的内存和CPU的缓存在全局上可以被所有支持CXL协议的设备快速访问到[10]。CXL 技术在 CPU 内存空间和连接设备上的内存之间保持内存一致性,这支持资源共享(或内存池)以获得更高的性能,降低软件堆栈的复杂性,并降低整体系统成本。因此,通过CXL接口使CPU与GPU、FPGA加速器进行通信,通过CXL接口无需进行地址映射等额外的内存管理操作,即可与FPGA和GPU进行通信,带来更高的数据访问效率和更低的局部数据访问延时。
CXL由单个链路上的三个动态多路复用子协议组成,包括类似于PCIe的IO协议(即 CXL.io)、缓存协议(即CXL.cache)和内存访问协议(即 CXL.memory)。根据特定的加速器使用模式,可以启用所有子协议或仅启用一个子协议,但对于发现和枚举、错误报告和主机物理地址(HPA)查找等操作,必须启用CXL.io协议。CXL 的一个主要优势是它为加速器访问系统提供了一个低延迟、高带宽的路径[7]。CXL 的内存缓存一致性允许在 CPU 和加速器之间共享内存资源。
在这里插入图片描述

图1CXL将硬件加速器(FPGA/GPU)和CPU互联

如图1所示,CXL协议包含了CXL.io、CXL.cache、CXL.memory这3种子协议,这三个协议被动态的复用在一起之后,通过标准PCIe 5.0的物理层以32 GT/s的速度进行传输。
CXL.io子协议是具有某些增强功能的PCIe 5.0协议,主要用于初始化、链接、设备识别和中断以及寄存器访问,它为I/O设备提供了非一致性的加载/存储接口。
CXL.cache子协议定义了处理器与设备之间的交互,从而允许连接的硬件加速器(FPGA/GPU)设备使用请求和响应方法,以极低的延迟高效地缓存处理器内存。
CXL.memory子协议使用加载和存储命令,允许CPU处理器访问硬件加速器(FPGA/GPU)的设备内存,能够支持易失性和持久性的存储器架构。

参考文献:
Stuecheli, J.: A new standard for high performance memory, acceleration and networks. http://opencapi.org/2017/04/opencapi-new-standard-high-performance-memoryacceleration-networks/. Accessed 3 June 2018

https://www.computeexpresslink.org/download-the-specification

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值