Compute Express Link (CXL): An Open Interconnect for Cloud Infrastructure——论文阅读

news2024/11/18 7:28:04

DAC 2023 Paper CXL论文阅读笔记整理

背景

Compute Express Link是一种开放的行业标准互连,在PCI Express(PCIe)之上提供缓存和内存语义,具有资源池和织物功能。本文探讨了CXL在解决云基础设施中的一些挑战方面的作用。

CXL主要解决云环境下的三个挑战:

  • 缓存一致性。PCIe上的内存访问是不一致的,整个数据结构需要在设备和系统内存之间来回传输以进行处理。CXL通过添加一致性和内存语义来解决这一问题。

  • 内存带宽不足。即使我们增加了每个套接字的DDR通道数量,每个内核的内存带宽也在减少。CXL基于PCIe的SERDES的引脚,为每个引脚提供了更多带宽(例如,64.0 GT/s的x16 PCIe Gen6提供了256 GB/s的双向原始带宽,具有64个信号引脚,而300引脚DDR-5 6400提供了约50 GB/s的双向带宽)。CXL还有助于实现内存分层,实现了昂贵和廉价内存的混合,因为它支持对分层和异构内存的一致访问。

  • 资源滞留或未充分利用。例如存储器、加速器或使用诸如PCIe、相干链路、DDR总线之类的紧密耦合负载存储互连,连接到CPU的任何I/O设备之类的资源属于该节点或相干域。没有任何机制使用紧密耦合的负载存储访问来汇集这些资源,以满足云基础设施中需求的弹性。CXL通过使负载存储语义能够跨多个节点扩展,同时在CXL 2.0和CXL 3.0中提供服务质量和隔离保证,解决了这个问题。

CXL 1.0:在单个节点上直接连接主机处理器和CXL设备

CXL支持PCIe PHY上I/O(CXL.io,基于PCIe)、缓存(CXL.cache)和内存(CXL.mem)语义的动态复用,数据速率为32.0 GT/s,使用称为Flits[1,2,8,9]的68字节单元。CXL本机支持x16、x8和x4链路宽度,在降级模式下支持x2和x1宽度。除了目标的32.0 GT/s数据速率外,CXL 1.0在降级模式下还支持16.0 GT/s和8.0 GT/s的数据速率。

CXL.io协议基于PCIe,用于各种发现和报告功能,以及使用非一致加载存储语义的直接存储器访问(DMA),以强制执行生产者-消费者订购模型[7,8,9]。

CXL.cache使设备能够缓存主机内存中的数据,采用了一个简单的请求和响应协议。

CXL.mem允许主机处理器访问连接到CXL设备的内存。

低延迟是CXL的一个关键特性,因此在PHY级别复用这些协议。CXL Flits(68B)针对64B的高速缓存线传输大小进行了优化,其中2B用于循环冗余校验(CRC),2B用于PHY层成帧。CXL协议是不对称的,以最大限度地减少设备上的一致性开销。

CXL采用MESI(Modified,Exclusive,Shared,Invalid)一致性协议[2],具有大约十几个缓存行请求命令,包括窥探和写回以及相关响应。

CXL 2.0:跨节点切换和资源池

引入了四个主要领域:跨多个域(节点)的设备池、扇出交换机、对持久内存的支持、安全性。

CXL 2.0支持在连接到多个主机(根端口)的CXL交换机的帮助下(或不支持)对多个逻辑设备(MLD)和单个逻辑设备(SLD)进行池化。

CXL 2.0定义了体系结构流,以确保对内存的持久性[3,4]。支持链路加密,可与设备TLB等现有安全机制无缝配合。

CXL 3.0:支持结构拓扑的可组合系统

提供了扩展的功能,如具有连接结构的内存的结构拓扑、除池外的内存共享、与相关主机的对等内存访问以仅在出现一致性冲突时解决一致性冲突、多级交换机、通过消除树拓扑的约束来提高双段带宽、通过使数据速率加倍同时保持等待时间平坦来使带宽加倍。

CXL 3.0传输速率达到64GT/s,允许x16宽度链路的聚合原始带宽高达256GB/s。利用PCIe 6.0的轻量级前向纠错(FEC)和强CRC的组合,在PAM-4信令上使用256B微片进行无错误传输,以实现64GT/s[6,11]。进一步引入了延迟优化的微片变体,通过在128B子微片细粒度传输中分解CRC来进一步减少2-5ns的延迟,以减轻物理层中的存储和转发开销[5,12]。

无顺序I/O(UIO)。UIO总是在非0的虚拟信道(例如,VC1)上发送,在VC中的3个流控制类(FC)之间的事务内或事务间的互连中没有排序。UIO内存写入被置于“P”FC类中,UIO内存读取被置于“NP”FC类,UIO完成的三种类型(UIO写入完成、有数据的UIO读取完成、无数据的UIO读取完成)被置于“C”FC类。由于没有排序,事务不需要遵循任何源-目的地对的固定路径,支持多个路径来支持结构拓扑。

反向无效(BI),添加到CXL.Mem协议。Type2/Type-3设备中的主机管理设备内存(HDM,映射到可缓存/回写区域的设备内存)可以由其他设备使用对等(p2p)UIO访问直接访问,而无需经过主机。这些访问被称为I/O一致性,因为它们不能使设备缓存HDM存储器,而是使设备每次都能一致地访问位置。在提供p2p访问之前,Type-2/3设备中的存储器控制器检查高速缓存行的目录(或窥探过滤器)状态是否允许事务完成(例如,UIO读取请求处于I或S状态的高速缓存行,或者UIO写入请求是到位于I状态的高速缓冲存储器行)。如果请求可以完成,则设备完成请求并将UIO完成返回给源。如果存在一致性冲突(例如,对处于e状态的高速缓存线的UIO读取),则存储器控制器搁置该请求,并使用BI-Req向主机发出反向无效(BI)请求。主机解决一致性冲突并提供响应(下游的BI-Rsp),之后Type-2/3设备中的存储器控制器完成UIO请求并向源发出UIO完成。通过增强BI的一致性,Type-2设备可以实现HDM地址范围的窥探过滤器,这使其能够比以前更有效地映射和管理更多的内存。窥探过滤器中的任何容量缺失都会导致驱逐先前的条目,并调用BI流为新请求腾出空间。

【就是支持主机以非缓存的方式,访问其他主机管理的设备内存,访问时检查数据状态,等数据一致后返回访问的数据】

支持多级交换机,对内存池提供了增强,可以池化大量的设备,并且可以池化类型3设备的大量主机(最多4095台)。

引入节点间一致共享内存。使用硬件一致性在主机之间一致共享CXL连接的内存的能力,允许多个主机同时访问给定的内存区域,并且仍然保证每个主机都能在该位置看到最新的数据,而不需要软件管理的协调,使用BI流来协调主机之间的缓存一致性。

CXL 3.0支持织物功能,消除了传统树状拓扑的限制,支持多个路径的CXL结构的非树拓扑。CXL结构最多可支持4095个节点,节点使用基于端口的路由(PBR)的可扩展寻址机制进行通信[5,6]。这里,节点可以是CPU主机、带或不带内存的CXL加速器、PCIe设备或全局结构连接内存(GFAM)设备。GFAM设备类似于传统的CXL Type-3设备,不同之处在于它可以由多个节点(最多4095个)使用基于端口的路由以灵活的方式访问。

总结

对CXL技术的介绍,CXL用于解决三个挑战:缓存一致性、内存带宽不足、资源滞留或未充分利用。介绍三代CXL规范的主要创新点:(1)CXL 1.0支持单个节点上直接连接主机处理器和CXL设备,提出三种CXL协议和三种CXL设备;(2)CXL 2.0支持跨节点切换和资源池,利用交换机,支持跨多个域(节点)的设备池、扇出交换机、对持久内存的支持、安全性。(3)CXL 3.0支持织物拓扑的可组合系统,加快传输速率和带宽,提出无序I/O(UIO)支持织物拓扑,提出反向无效(BI)支持主机以非缓存的方式访问其他主机管理的设备内存,支持多级交换机,引入节点间一致共享内存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1525966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python:文件的操作

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) Python的os库主要用于与操作系统进行交互,它提供了多种功能,使得在Python程序中处理操作系统级任务变得容易。这里是一些…

外包干了3个月,技术明显进步。。。。。

在湖南的一个安静角落,我,一个普通的大专生,开始了我的软件测试之旅。四年的外包生涯,让我在舒适区里逐渐失去了锐气,技术停滞不前,仿佛被时间遗忘。然而,生活的转机总是在不经意间降临。 与女…

1.MongoDB的特点与应用场景

什么是 MongoDB ? MongoDB 是基于 C 开发的 NOSQL 开源文档数据库 ,是最像关系型数据库的 nosql,功能也是最丰富的 nosql,它具有所以的可伸缩性,灵活性,高性能,高扩展性的优势。 大致有如下特…

Vulnhub - Morpheus

希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢! 个人博客链接:CH4SER的个人BLOG – Welcome To Ch4sers Blog Morpheus 靶机下载地址:Matrix-Breakout: 2 Morpheus ~ VulnHub 0x01 信息收集 Nmap扫描…

代码随想录算法训练营第二十四天|● 理论基础 ● 77. 组合(JS写法)

回溯理论基础 回溯法解决的问题都可以抽象为树形结构,因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。递归就要有终止条件,所以必然是一棵高度有限的树&#xff…

一篇搞定ECharts的基本使用,赶快收藏起来学习吧~

准备工作 引入 声明一个有宽高的dDOM元素 echarts.init(DOM) option配置对象 echarts.setOptions(option) 基础配置 option类似于一个容器,那么里面的属性就相当于组件: xAxis(直角坐标系 X 轴)、yAxis(直角坐…

关于udp能跨局域网传输的问题

UDP(用户数据报协议)以其独特的传输特性在多种应用场景中都有着极其重要的作用。然而,关于UDP是否能跨局域网(LAN)进行传输,以及这一传输过程中的优缺点,一直是网络技术领域讨论的热点。本文将详…

git基础命令(四)之分支命令

目录 基础概念git branch-r-a-v-vv-avv重命名分支删除分支git branch -h git checkout创建新的分支追踪远程分支同时切换到该分支创建新的分支并切换到该分支撤销对文件的修改,恢复到最近的提交状态:丢弃本地所有修改git checkout -h git merge合并指定分…

Windows系统安装VNC客户端结合内网穿透实现公网远程连接Deepin桌面

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 x11vnc是一种在Linux系统中实现远程桌面控制的工具,它的原理是通过X Window系统的协议来实现远程桌面的展…

1688商品详情API接口采集商品上货

阿里巴巴1688平台并没有直接公开商品详情API接口供普通用户或开发者进行商品采集和上货。1688平台主要服务于批发和采购业务,其API服务通常面向的是有深度合作关系的商家或开发者,且需要经过申请和审核流程。 请求示例,API接口接入Anzexi58 …

Python Web开发记录 Day14:Django part8 订单管理

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1、数据库准备2、添加订单3、订单列表4、删除订…

C#集合:从字典到队列——探索数据结构核心

文章目录 C# 中的集合类型C# Dictionary 字典C# Hashtable:哈希表Hashtable 类中的属性Hashtable 类中的方法 C# SortedList:排序列表SortedList 类的中的属性SortedList 类的中的方法 C# Stack:堆栈Stack 类中的属性Stack 类中的方法 C# Que…

产品经理:前端实现网页防篡改,你会怎么做?

公众号:程序员白特,欢迎一起交流学习~ 如果产品经理要求系统中某个页面的输入框做防止篡改处理,你会怎么做呢? 需求梳理 首先,什么是防篡改? 简单来说,就是用户输入input框值,我们…

静态HTML5接入海康websocket视频流|海康ws视频流接入H5页面

引言 海康提供了vue实现插件播放视频的实例,实现取流失败了之后重新获取新的流播放视频,但是在很多情况下需要在静态HTML项目中进行视频的播放,于是引出此文。 海康开放平台SDK下载地址:https://open.hikvision.com/download/5c6…

Python使用 k 均值对遥感图像进行语义分割

本篇文章介绍K-means语义分割来估计 2000 年至 2023 年咸海水面的变化 让我们先看一下本教程中将使用的数据。这是同一地区的两张 RGB 图像,间隔 23 年,但很明显地表特性和大气条件(云、气溶胶等)不同。这就是为什么我决定训练两个独立的 k-Means 模型,每个图像一个。 首…

vue3 element plus 上传下载

文章目录 上传下载 上传 /* html */ <el-upload v-model"fileId" class"avatar-uploader" ref"exampleUploadRef" :file-list"fileList" :show-file-list"false" action"/ys-three-year/ThreeReport/uploadFile&q…

d3dcompiler_47.dll是什么,软件游戏报错d3dcompiler_47.dll缺失怎么修复?

当你在运行某些程序或游戏时出现"找不到d3dcompiler_47.dll"的错误提示时&#xff0c;不要慌张&#xff01;这是一个常见的问题&#xff0c;但有多种有效的解决办法可以帮助你修复这个文件丢失的情况。今天就来教大家d3dcompiler_47.dll文件丢失的多种解决办法。 一.…

旅游管理系统|基于SpringBoot+ Mysql+Java+Tomcat技术的旅游管理系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 用户功能 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 …

【LeetCode每日一题】310. 最小高度树

文章目录 [310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/)思路&#xff1a;拓扑排序代码&#xff1a; 310. 最小高度树 思路&#xff1a;拓扑排序 首先判断节点数量n&#xff0c;如果只有一个节点&#xff0c;则直接返回该节点作为最小高度树的根节点…

【学习心得】Python数据分析的基本思路

一、什么是数据分析&#xff1f; 数据分析是指通过一些方法&#xff0c;对一些数据进行分析&#xff0c;从中提取出有价值的信息并形成结论进行展示。 &#xff08;1&#xff09;一些方法 数学和统计学方法&#xff1a;例如回归分析、聚类分析、主成分分析、时间序列分析等&a…