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

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)支持主机以非缓存的方式访问其他主机管理的设备内存,支持多级交换机,引入节点间一致共享内存。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据化运营09 抓住问题关键:用相关性分析拆解多个影响因素

前一讲,和你探讨了多维分析的方法,通过多维分析来寻找指标变化的原因。当我们找到问题的原因时,自然会进一步思考一个问题:指标变化的原因这么多,决定问题的关键因素又是哪个呢? 需要专栏原数据进行实操的同…

Linux小程序——进度条

前言:哈喽小伙伴们,经过我们对多个Linux基本开发工具的学习之后,对于Linux的使用也算是更上一层楼。 所以这篇文章,我们就尝试使用我们学过的Linux知识来写一个小程序——进度条,达到实践以及加深知识映像的效果。 目…

智能文档处理技术综述

一、 智能文档处理介绍 智能文档处理(Intelligent Document Processing, IDP)是利用人工智能(AI)、机器学习(ML)、计算机视觉(CV)、自然语言处理(NLP)等技术…

POJ3037 + HDU-6714

两道最短路好题 POJ3037 手玩一下 发现每一点的速度可以直接搞出来&#xff0c;就是pow(2,h[1][1]-h[i][j])*V 那么从这个点出发到达别的点的耗费的时间都是上面这个数的倒数&#xff0c;然后直接跑最短路就好了 #include<iostream> #include<vector> #include<…

BeanPostProcessors是什么以及如何使用?

目录 一、BeanPostProcessors是什么&#xff1f;二、如何使用 BeanPostProcessor1、实现 BeanPostProcessor 接口2、注册 BeanPostProcessor3、示例代码 三、使用场景四、注意事项 一、BeanPostProcessors是什么&#xff1f; BeanPostProcessor 是 Spring 框架提供的一个扩展点…

Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

每日一题——LeetCode1748.唯一元素的和

方法一 两次遍历 var sumOfUnique function(nums) {let map new Map()for(let num of nums){map.set(num,map.has(num)?map.get(num)1:1)}let res0for(let num of nums){if(map.get(num)1) resnum}return res }; 消耗时间和内存情况&#xff1a; 方法二 一次遍历 var su…

新书速递——《可解释AI实战(PyTorch版)》

本书旨在帮助你实施最新的可解释AI技术&#xff0c;以构建公平且可解释的AI系统。可解释AI是当今AI研究中的热门话题&#xff0c;但只有少数资源和指南涵盖了所有重要技术&#xff0c;这些技术对实践者来说非常有价值。本书旨在填补这一空白。 本书读者对象 本书既适合那些有兴…

揭秘神秘商业模式:看似赔钱的买卖,如何月赚600万?

你是否曾被一个看似赔钱的买卖所吸引&#xff0c;最终却惊喜地发现它一个月竟然能赚600多万&#xff1f;这样的数字&#xff0c;是否让你感到意外又好奇&#xff1f;如果你仔细品味我们今天的内容&#xff0c;我相信&#xff0c;你也能开启属于自己的赚钱之路。 他们是如何实现…

自学编程的六种方法,你必须知道

随着互联网日趋迅猛&#xff0c;编程已经在我们生活当中无处不在了。众所周知&#xff0c;程序员的工资都很不错&#xff0c;于是越来越多的人&#xff0c;都想加入到编程的行业中来。那么如何加入到程序员的行业当中&#xff1f; PHP从入门到放弃&#xff0c;C语言从入门到放…

【CSDN活动】程序员职业生涯的分水岭:年龄还是经验?

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 程序员职业生涯的分水岭&#xff1a;年龄还是经验&#xff1f;引言技术更新换代…

基于nodejs+vue在线学籍管理系统python-flask-django-php

系统开发主要在 Windows 系统下进行&#xff0c;采用支持跨平台的nodejs语言开发完成&#xff0c;因此可以运行在任意开发环境下。系统采用mysql数据库的方式&#xff0c;按照express框架进行开发。 前端技术&#xff1a;nodejsvueelementui, Express 框架于Node运行环境的Web框…

windows10彻底关闭Windows Defender的4种方法

Windows Defender是windows10系统自带的杀毒软件。默认情况下它处于打开的状态。大多数第三方的杀毒软件都可以识别&#xff0c;并代替它。 但是大多数情况下&#xff0c;我们总是有各种理由需要关闭它&#xff0c;例如 Windows Defender 导致资源使用率高或系统出现其他问题&…

蓝桥杯小白月赛3.23

题目描述&#xff1a; AC代码&#xff1a; #include <iostream> #include<cstring> #include<algorithm>using namespace std;const int N 2e510; string str[N]; //写上&会速度更快一些 bool cmp(const string &s1,const string &s2) {//例…

HTML5+CSS3+JS小实例:原生JS实现全屏滚动

实例:原生JS实现全屏滚动 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial…

【JVM】JVM简介

文章目录 &#x1f334;简介&#x1f332;JVM发展史&#x1f338;Sun Classic VM&#x1f338;Exact VM&#x1f338;HotSpot VM&#x1f338;JRockit&#x1f338;J9 JVMTaobao JVM&#xff08;国产研发&#xff09; &#x1f333;JVM 运行流程⭕总结 &#x1f334;简介 JVM …

win10 禁止谷歌浏览器自动更新(操作贼简单)

禁止谷歌浏览器自动更新 &#xff08;1&#xff09;修改 "C:\Windows\System32\drivers\etc\hosts 文件&#xff0c;在最后增加 127.0.0.1 update.googleapis.com&#xff08;2&#xff09;保存后&#xff0c;winr 快捷键&#xff0c;输入cmd &#xff0c;打开命令行 &am…

学习笔记:MYSQL数据库基础知识

MYSQL数据库基础知识学习笔记 MYSQL基础学习数据库相关概念现主流数据库排名数据模型SQL分类SQL数据库基础操作 2024/3/27 学习资料&#xff1a;黑马程序员:MYSQL MYSQL基础学习 数据库和数据库管理系统(DBMS) 数据库: 是存储数据的集合&#xff0c;包括表、视图、索引等对象…

华为数通方向HCIP-DataCom H12-821题库(多选题:201-220)

第201题 以下关于BGP中Orginator ID属性的描述,正确的是哪些项? A、Originator ID属于公认任意属性 B、当其他BGP Speaker接收到这条路由的时候,将比较收到的0nginator ID和本地的Router ID,如果两个ID相同BGP Speaker会忽略掉这条路由,不做处理 C、当一条路由第一次被RR…

Android客户端自动化UI自动化airtest从0到1搭建macos+demo演示

iOS客户端自动化UI自动化airtest从0到1搭建macosdemo演示-CSDN博客 一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 &#xff5c; macOS &#xff5c; jdk1.8 &#xff5c; 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads …