CXL 概述

这篇具有很好参考价值的文章主要介绍了CXL 概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

CXL协议规范很新,目前没有多少资料,所以在学习过程中,肯定是需要笔记的,准备为此开一个专栏。以后会越来越详细,我尽量少用专业名词口语化去描述,让内容更加容易理解,以CXL 2.0 规范为纲,扩展开来,查漏补缺。点赞,收藏,转发。

1. 什么是CXL

1.1 背景

1.1.1 PCIE 的现状

CXL 概述
首先先看一下当前PCIE中的数据传输,无论是要创建一个PCIE内存扩展设备还是一个PCIE网卡,目前大数据量的传输都是采用生产者消费者模型,上图是说明主机向设备传输数据流程,主机要先把数据写到本地的内存,然后置标志位通知设备我写好了,设备查询标志位之后开始搬运数据到设备的本地内存,反过来是差不多的,这种方式的缺点也是显而易见的,有很多不必要的拷贝;PCIE协议可以实现主机直接访问设备内存,设备内存直接访问主机内存的,但是因为物理路径过长,以及缓存一致性问题,导致延迟很高,这样我们就会产生两个诉求:

  • 第一个就是主机可以向访问本地内存一样访问设备内存 ;
  • 另一个就是设备也可以高效的访问主机内存;

1.1.2 技术背景

这部分就比较书面化了,总结几点就是:

  • 我们处于大数据时代,数据处理需求提升,下一代数据中心性能需求;
  • 服务器等设备需要增加内存容量和带宽;
  • 需要一个工业标准去同意市场,提供更灵活的编程模型;

总之就是一句话,PCIE协议下的主机与设备两个方向的传输可以有上面两个诉求,可以改进。

1.2 特点

就是这么宣传的,目前没有量化数据。为什么会低延时呢,可以参考 CXL 为什么比 PCIe 低延迟高带宽。

  • 低延时
  • 高带宽

1.3 是什么

CXL 概述
那么到底什么是CXL?

  • 首先,CXL 是基于 PCIE5.0发展而来的,运行在 PCIE 物理层上的,具有相同的电器特性,针对缓存和内存优化的一个新协议,也就是说,CXL设备是可以插在PCIE插槽的,底层会协商使用 PCIe 协议;也就是说,现在拿一个 CXL 设备我们插到一个PCIE卡槽上可以在PCIe模式下使用,并不会用 CXL 协议进行通信。
  • CXL功能需要使用一个灵活的端口,这个端口可以根据链路层协商决定是采用PCIE协议还是CXL协议。所以如果一个支持PCIE功能的CXL设备,插到普通的不支持CXL的服务器上时,会协商决定只能使用PCIE协议。

这个端口就是 Flex Bus.

2. Flex Bus

CXL 概述
想具体了解的可以去搜相关资料,这个不太是重点。只需要知道,要使用CXL功能,你的主机或者服务器得有 Flex Bus层,这个是CXL引入的。

2.1 特性

  1. 完全支持 PCIe 规范
  2. 完全支持 CXL 规范
  3. PCIe 和 CXL 可配置协议
  4. CXL 模式下速率 32GT/s, 16GT/s或者 8GT/s
  5. CXL 模式下链接宽度支持 X16, X8,X4,X2以及X1

2.2 Flex Bus 层级

CXL 概述
上图为 CXL 的 Flex Bus(左) 与 PCIE 的层级(右)比较。
可以先不管其中的 .io, .mem, .cache, 后面会涉及。
如图,都分为三层:事务层、链路层、物理层。我们可以用TCP/IP 的七层协议类比一下,只不过这里是三层。
其中:

  • CXL事务(协议)层和链路层 细分为处理 CXL.io 的逻辑和处理 CXL.mem 和 CXL.cache的逻辑;
  • CXL.mem 和 CXL.cache 逻辑在事务层和链路层内组合在一起;
  • CXL 链路层与物理层之间有一个 CXL (仲裁和多路复用)ARB/MUX 接口,交错来自两个逻辑流的流量;
  • 物理层的逻辑子块是可以运行在PCIe模式和CXL模式,在链路训练过程中,模式取决于协商的结果;

3. 协议

既然 CXL 是一种新协议,那么协议的内容就是重点,这边只是入门知识,后续会发布详细介绍。
CXL 概述
主要分为三种:

  • CXL.io
  • CXL.mem
  • CXL.cache

3.1 CXL.io

其中,CXL.io 协议和PCIe协议一样,是一种枚举配置协议,主要用于设备的发现和枚举、报告错误等,这个不算重点,剩下的两个才是。

3.2 CXL.mem

CXL.mem 协议,可以解决开头提出来的两个诉求之一

可以让主机像访问自己本地内存一样访问设备内存。

这个,很好理解,一个典型的例子就是我的CXL设备作为一个扩展内存插到服务器上,主机就通过此协议进行访问,就和其他DDR一样的,不过所用底层协议不一样。

CXL 概述

现在简单提一下协议内容。
CXL.mem 协议中,CPU 称为 Master,负责发送请求,而设备作为 Slave 回复响应。
请求分为有数据请求和无数据请求,响应也分为有数据相应和无数据响应。

下面是一个主机读设备内存的例子:
首先声明,当前设备中只有内存,没有cache, 这很重要。
蓝色部分是 .mem 协议,红色是设备内存的操作流程,可以不用管。能理解了 .mem 协议的以一来一回即可。
CXL 概述

3.3 CXL.cache

CXL.cache 协议,可以解决另一个诉求

可以使设备解决内存一致性,低延时的访问主机内存

PCIe 协议下,设备访问主机内存,无论是使用DMA还是直接访问,都会有cache一致性的问题,这方面不清楚的同学可以查询其他资料,简单地说就是,某一地址数据在主机的cache或者内存中,如果设备还要操作这个地址,那么就会出现很多复杂的操作。

CXL.cache 协议主要是通过维护设备侧Cache一致性, 提供快速访问主机内存的能力;它允许设备参与CPU的一致性缓存协议,就好像在整个系统中他是另外一个CPU而不是一个设备。.cache 协议就像CPU缓存一致性协议的一种延申。
他的目标是用在加速器上,这个加速器没有向系统提供任何资源相关的东西,但是可以直接使用系统内存和本地cache。设备具有一致的内存视图,无需软件干预,同样的,主机也可以从设备的 cache 中获取数据,不用使用内存作为中介了,使用 .cache 协议直接传输数据,保持一致性。
如下,是.cache协议的通道介绍:
H2D 主机到设备
D2H 设备到主机
两个方向,每个方向三种通道:请求、响应、数据,相互独立工作,详情请参考另一篇博文 CXL.cache
CXL 概述
下面是一个 Type 1 设备读主机内存的例子,设备中只有缓存,没有内存:

  1. 设备主动发起读请求命令,缓存操作字段命令码为 RdOwn,表示读缓存行,并独占数据;
  2. 主机缓存命中,写回内存,并返回GO响应,其中的信息指示设备缓存转为E状态;
  3. 紧随GO消息之后,是主机返回数据,传到设备缓存;
    CXL 概述

3.4 Summary

CXL.cache 本质上是设备作为请求发起者,设备必须得有cache;
而 CXL.mem 是 CPU 作为发起者。

4. 设备

上面介绍了三种协议,对于一个CXL设备,.io是必备的,因为他是一个发现配置协议,.cache和.mem是可选的,这样就组合出三种类型的设备: Type 1, Type 2, Type3。

CXL 概述

  • Type 1 设备有cache,没有DDR,或者说他的内存是私有的,主机看不见,比如FPGA的网络接口控制器,他有访问主机内存的需求所以需要实现.cache 协议
  • Type 2 设备既有cache也有内存,是一个带有内存的加速器,.cache和.mem协议都是需要的;
  • Type 3 设备只有内存,没有cache,他作为一个内存扩展卡插到主机上,所以需要 .mem 协议;

4.1 Type 1

  • 1类设备具有完全一致的缓存,可以实现无限数量的原子操作。是一个没有本地内存的加速器,没有本地内存的意思是Host 看不到,设备自己使用的内存可以根据需求添加;
  • coherency Bridge 实现RC 片上一致性总线与 .cache 的转换
  • 典型的应用是一个NIC,网络接口控制器,NIC 将数据从主机内存缓冲区中发送到网络上,或者从链路上把数据挪到主机内存接收缓冲区。PCIe 设备只能是从设备缓冲区拷贝数据包到主机接收缓冲区中,延迟高也占带宽,使用 .cache 协议,就直接写进缓冲区了,省了一步拷贝操作。
    CXL 概述

4.2 Type 2

  • Type 2 设备是一个拥有本地内存的加速器,既有 cache 也有 memory, 缺一不可;
  • CXL实现的是 Device的内存和Host的内存按照统一的编址方式进行寻址,主机可以直接将数据存放在设备内存中供加速器运算,然后直接获取运算结果,这样能够节省数据移动的时间开销;
  • Type 2 设备必须实现自己的 DCOH 引擎(这将根据底层设备的缓存层次结构复杂度),用于维护缓存一致性的; 想象一下,与多个 CPU 相同,每个 CPU 都有自己的 L1/L2,但共享 L3(就像 Intel CPU 一样,L3 是 LLC)。 每个 CPU 都需要跟踪本地 L1 和 L2 之间的转换,以及 L3 到全局 L3 之间的转换。也就是说,对于类型 2 设备,管理本地的缓存状态是一个相对复杂的流程。
  • 使用 Type 2 设备,HOST 把通过 .mem 协议数据放进 HDM, 这个是设备内存,然后设备对数据进行处理,结果可以通过 .cache 协议放进 Host 内存或者其他的,有点子绕;总之一句话,Host 操作设备内存,设备操作 Host 内存,都是低延时高带宽了,具体怎么应用是软件的事了。
    CXL 概述

4.2.1 操作模式

对于设备内存,因为有两个处理器可能会去访问它,并且这两个处理器是有各自的cache的,严格的一致性会对带宽和延迟产生负面的影响,什么叫严格的一致性,就是Type 2 设备有 cache,Host 也有 cache,所有这些 cache 都要保持一致性,比如 Host 访问设备内存的时候,会一直去 snoop 查询设备缓存中有没有这个地址的数据,很明显在做无用功。
对于很多实际场景,比如天气建模,大量数据通过CPU传到加速器设备内存,然后加速器运算处理数据,最后CPU获取结果。这个流程里面其实涉及两种使用场景,第一种就是主机往设备内存读写数据,第二种场景就是设备运算阶段会频繁访问设备内存,那么在某一时段,我们就需要确定设备内存应该与那一块cache一致。
关于这个问题, 会有两种操作模式: Host bias And Device bias。
两种模型的优点:

  • 维护设备内存一致性
  • 保证设备访问自己内存的时候带宽不会受到一致性影响
  • 帮助主机更高效的访问设备内存

为了保证上述模型可以运行, 设备需要实现:
1. 实现一个 bias cache, 以页表为粒度记录 bias 表,一个Bit状态表示主机是否有 cached copy
2. 使用转换代理,主要用于把host cache中属于该页表的缓存刷回内存
3. 实现对设备内存的加载-存储命令的支持

4.2.1.1 Host Bias

这个模式是指,当操作是 Host 提交数据给设备内存的时候;
图中蓝色部分, 指令由主机写入内存,工作完成后从内存中读出,设备内存表现得和 host 内存一样;
这样,Host 对设备内存可以高吞吐量访问,缺点就是设备访问设备内存不是最优的,如果访问这块地址,需要通过主机转发,由主机解决一致性问题,如图中绿色部分。
CXL 概述

4.2.1.2 Device Bias

当数据放入设备内存,接下来设备需要进行计算了,就可使用此模式;
该模式下,设备可以之直接通过片内总线访问自己的内存,而无需再去与 Host 交互,具有较大的带宽,host 向设备保证没有任何缓存中的行, 如红色箭头,一般用于设备运算阶段;
主机仍然可以访问设备的内存,但可能会被加速器强制放弃所有权(如如图中的绿色箭头)
CXL 概述

4.2.2 模式管理

两种状态的切换方式,一种是软件切换,一种是硬件切换;如果设备不做bias切换相关的逻辑,则默认全都是Host Bias。
对于某些运算模式非常规律的加速器,软件可以很明确地知道某个页表上现在正在运行什么任务,那么软件可以基于页表为粒度切换偏置状态,对一致性的性能进行优化,这对于具有分阶段计算的加速器很有用,软件可以通过选择模式获得最好的性能。
这里是软件切换方式的一些特点:

  • 软件协助可用于在加速器计算之前准备好数据
  • 如果数据没有提前移动到加速器内存,一般是继续按需求基于加速器对数据的一些尝试移动
  • 在“按需”数据获取场景中,加速器必须能够找到工作以执行,数据已正确放置,否则必须停止
  • 加速器停滞的每个周期都会侵蚀其在核上运行的软件 add value 能力
  • 简单的加速器通常不能隐藏数据获取延迟

软件切换对于简单的加速器是最好的选择,但实际应用中这种模式基本就是不可用的;
硬件自动切换,不依赖于软件而是由硬件根据给定页面的请求者对偏差模式进行预测
他的特点包括这些方面:

  • 和软件切换一样以页表为粒度维护bias state
  • 不需要软件在执行offload excitation之前去识别页表的bias属性
  • 硬件可以动态切换
  • 虽然这是一种硬件驱动的解决方案,硬件也可以最终由软件触发bias切换

4.3 Type 3

Type 3 设备是一组内存模块,提供持久、易失或者组合的内存;
支持 .io 和 .mem 协议,Type 3 设备的例子是 Host 的内存扩展器;与Type 2 设备的区别就是没有 cache;
因为没有缓存,CPU不需要窥探设备缓存,可以使用精简的 .mem 协议,主要是从主机发送到内存的简单的读写请求,就像前面演示的那个例子一样;
CXL 概述
在 CXL 之前,你发现与此最接近的是 PCIe 的组合基于 NVMe 设备(用于持久容量)、NVDIMM 设备,当然还有,附加DRAM。 通常,DRAM 不能用作扩展卡,因为单个 DDR4 DIMM(内部为双通道),只有 21.6 GB/s带宽。 PCIe 可以跟上,但它需要所有 16 个通道,我猜测是不可扩展的,或成本效益,或其他。但大多数情况下,当基于平台的 interleaving 可以产生每秒数百 GB 的带宽时,DRAM 的使用并不是很好。
CXL 概述
在后 CXL 世界中,从操作系统负责的意义上讲,对于大部分配置情况发生了变化,这就是为什么 Type 3 设备是最从软件的角度来看很有趣。 即使 CXL 目前在 PCIe 上运行5.0,CXL 提供了跨多个设备交错的能力,因此通过交错方式的数量以倍数增加带宽。 当你采用 PCIe 6.0 带宽和交错,CXL 提供了相当强大的替代HBM 方案 ,甚至可以通过 DDR 扩展到 GPU 级别的内存带宽。

CXL 概述文章来源地址https://www.toymoban.com/news/detail-451085.html

到了这里,关于CXL 概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生周刊:目前的 Kubernetes 开源监控方案有没有缺陷?

    目前的 Kubernetes 开源监控方案有没有缺陷? YouTube 频道 OpenObservability Talks 最新一期视频邀请了 VictoriaMetrics 项目的创始人 Aliaksandr Valialkin(同时也是 VictoriaMetrics 的 CTO),讨论了目前现有的 Kubernetes 开源监控方案的缺陷,以及 VictoriaMetrics 如何解决了其中的一部分问题。 在

    2024年01月17日
    浏览(51)
  • 字节面试:索引的设计规范,你知道多少?

    在一线互联网企业种,如网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团等大厂,数据库的面试题,一直是核心和重点的提问点,比如前段时间有位小伙伴面试字节,就遇到了下面这道面试题: 索引的设计规范,你知道那些? 小伙伴虽然用过索引,但是

    2024年01月19日
    浏览(44)
  • Linux tcp/ip 网路协议栈学习-00 前言

    Linux tcp/ip 网路协议栈学习-00 前言 目录 Linux  tcp/ip 网路协议栈学习-00 前言 (1)预备知识  (2)前置知识 (3)学习目标 (4)总结     (1)预备知识  好工具事半功倍,做任何事情都需要有方法和工具,同样,阅读 Linux 内核源码也是如此。由于当前内核源码非常庞大,学习上,不能一

    2024年04月26日
    浏览(45)
  • 「TCG 规范解读」TCG 规范架构概述(下)

     修订历史: 2023.3.4 2023.6.18 2023.7.2 可信计算组织(Trusted Computing Group, TCG)是一个非盈利的工业标准组织,它的宗旨是加强不同计算机平台上计算环境的安全性。TCG 于 2003 年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance, TCPA)所开发的规范。现在的规

    2024年02月12日
    浏览(65)
  • 3D Tiles 规范(一概述)

    3D Tiles 专为流式传输和渲染大量 3D 地理空间内容而设计,例如摄影测量、3D 建筑、BIM/CAD、实例化要素和点云。它定义了分层数据结构和一组提供可渲染内容的Tile格式。3D Tiles 没有定义内容可视化的明确规则;客户可以根据自己认为合适的方式可视化 3D Tiles 数据。    在 3

    2024年04月25日
    浏览(41)
  • 解决一个程序问题需要多少步——确定我们没有在摸鱼

    3 天前,运行的社区系统报告,很多老的历史照片都无法作为附件加载 —— 小鲨鱼,快来解决问题。 很多人都问题,为什么程序员每天不是在调 Bug 就是在调 Bug 的路上。 其实呀,计算机是一个逻辑性非常强的东西,每一步都应该是原因的,所以我们要通过逻辑性找到不同的

    2024年02月09日
    浏览(49)
  • “目前没有可用的登录服务器处理登录请求”停用的Windows Server 2008 R2服务器改域用户登录为本地用户登录

    这两天公司要那台下线有段时间的老服务器里的数据,WinServer08搭建的,头一次接触域控制器(安装了活动目录的主机称为域控制器,域控制器控制每个域)这个东西,打开之前备份的虚拟机,通过域用户登录的时候报错如下,有点懵逼。 联系资源池的老师打开虚拟机远程连

    2024年02月05日
    浏览(61)
  • winform使用SetParent 嵌入excel,打开的excel跟随dpi 25%*125%缩放了两次,目前微软官方没有好的解决方案,为什么

    双重缩放问题在将 Excel 嵌入到 WinForm 中时确实可能会出现,这是因为两个不同的应用程序(WinForm 和 Excel)之间的 DPI 缩放逻辑不一致,导致双重缩放的结果。 在 Windows 操作系统中,DPI 缩放是一种全局的设置,用于适应高 DPI 显示设备,从而提高显示元素的大小。当您将 Ex

    2024年02月14日
    浏览(50)
  • OCP浸没式液冷基本规范(概述和信号完整性部分)

    数据中心行业主要考虑两种类型的液体冷却技术来推动节能和可持续发展,分别是冷板式和浸没式,每一种技术里的液体又包含单相和双相两种规格: 冷板技术与浸没技术的主要区别之一是,在浸没的情况下,液体与 IT 设备直接接触。目前,有大量液体被用于单相和两相浸

    2024年02月08日
    浏览(43)
  • JavaWeb前端/后端开发规范——接口文档概述及YApi平台的使用

    整理下笔记,打好基础,daydayup!!! 什么是接口文档? 目前主流的开发模式为前后端分离式开发,为了方便前后端的对接,就需要使用接口文件进行统一规范。 接口文档记载什么信息? 1,基本信息:请求路径,请求方式,接口描述 2,参数信息:参数名,参数类型,参数样例

    2024年04月17日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包