CXL系统架构

news2024/11/25 18:33:03

 CXL系统架构

CXL支持三种设备类型,如下图。Type 1支持CXL.cache和CXL.io;Type 2支持CXL.cache,CXL.mem和CXL.io;Type 3支持CXL.mem和CXL.io。无论哪种类型,CXL.io都是不可缺少的,因为设备的发现,枚举,配置等都是由CXL.io来负责。

传统的非一致I/O设备主要依赖于标准的生产者-消费者订单模型(Producer-Consumer Ordering Model),并针对主机连接的内存执行。此类设备除了工作提交和工作完成边界上的信号外,很少与主机进行交互。此类加速器还倾向于处理数据流或大型连续数据对象。这些设备通常不需要CXL提供的高级功能,而传统PCIe足以作为加速器连接介质。

插播一句,生产者-消费者模型是一种为了加快系统响应数据的异步模型,系统中一些慢速操作(例如网络I/O,数据统计等)会阻塞主进程的运行,从而使得系统的吞吐量大大降低。如果我们不需要即时得到这些慢速操作的返回结果,那么我们可以使用异步的方式来解决这个问题。生产者-消费者模型通常是多对多的关系,即多个生产者对应多个消费者,他们之间通过共享一个队列来实现通信和同步。生产者负责把请求放到队列中,消费者负责从队列中出去请求并作响应的处理。生产者-消费者模型的核心思想,把数据的生产者和消费者进行解耦,使二者不直接交互,从而使二者的处理速率相对来说互不影响。

2.1 Type 1 CXL设备

Type 1设备的典型应用是网卡这类高速缓存设备。

Type 1 CXL设备,应用于拥有完全一致性缓存的设备。对于这种设备,标准的生产者-消费者模型效果一般,比如,设备需要执行复杂的原子操作,而这些原子操作又不属于PCIe的标准原子操作。基本缓存一致性允许加速器实现它选择的任何排序模型,并允许它实现无限数量的原子操作。它们往往只需要少量的缓存,可以很容易地通过标准的处理器监听过滤(Snoop Filter)机制轻松跟踪。

Type 1设备支持的缓存大小取决于主机的监听过滤能力。CXL使用CXL.cache链接支持此类设备,加速器可以通过该链接使用CXL.cache协议进行缓存一致性事务。

2.2 Type 2 CXL设备

Type 2设备的典型应用是GPU,FPGA,AI这类的加速器。

Type 2设备除了一致性高速缓存外,还具有连接到设备的内存,例如DDR、高带宽内存(High Bandwidth Memory,HBM)等。这些设备的性能依赖于加速器和设备挂载内存(Device-attached Memory)之间的巨大带宽。CXL的关键目标是为主机提供一种将操作数推入设备挂载内存的方法,并为主机提供从设备挂载内存中提取结果的方法,这样就不会增加抵消加速器好处的软件和硬件成本。CXL将一致的系统地址映射设备连接内存称为“主机管理的设备内存“(Host-managed Device Memory,HDM)。

HDM和传统IO/PCIe专用设备内存(Private Device Memory,PDM)之间有一个重要区别。用带有GDDR的GPGPU来举例,GPGPU往往将其GDDR视为私有。这意味着主机无法访问GDDR,并且与系统的其余部分不一致。它完全由设备硬件和驱动程序管理,主要用作具有大型数据集的设备的中间存储。这种模型的明显缺点是,在引入操作数并将结果写回时,它涉及大量从主机内存到设备连接内存的来回拷贝。HDM虽然也是挂载在设备端,但可以被主机直接访问。

2.2.1 偏向性一致性协议

再次强调,HDM是附属于设备的内存,也就是说HDM在设备端,而不是主机端。

偏向性一致性模型(Bias Based coherency model)定义了设备挂载内存(Device-attached Memory)的两种状态:偏向主机(Host Bias)还是偏向设备(Device Bias)。当设备挂载内存偏向主机时,该内存就像常规的主机连接内存一样。也就是说,如果设备需要访问该内存,设备需要向主机发送一个请求,主机将解析请求的一致性。当设备挂载内存处于偏向设备时,要保证主机中没有对应的缓存行副本。这样设备可以随意的访问设备挂载的存储,而不需要向主机发送任何的请求事务。

需要注意的是,主机本身可以看到与设备连接的内存的统一视图,而不考虑偏向状态。在这两种模式中,设备连接的内存都可以保持一致性。

带有偏向性的一致性模型的优点:

  • 有助于维护映射到系统一致性地址范围内的设备挂载内存的数据一致性。

  • 帮助设备以高带宽访问其本地连接的内存,同时不会产生显著的一致性开销(例如,对主机的监听)。

  • 帮助主机以一致的统一的方式访问设备挂载的存储,就像挂载在主机自己下面一样。

为了维护偏向性一致性模型,Type 2的设备需要:

  • 实现偏向表,该表跟踪页面粒度上的偏向性(例如1b/4KB页面),该表可被缓存在设备中。

  • 使用转换代理(Transition Agent,TA)支持偏向性转换。这本质上看起来像是一个用于“清理”页面的DMA引擎,会清空该页中对应主机里所有的缓存行。

  • 构建对加速器本地内存的基本load/store访问。

2.2.1.1 主机偏向性

主机偏向模式通常是指在工作提交期间主机将操作数据写入内存,或在工作完成后从内存读取数据。如下图所示,内存挂在设备端。在主机偏向模式下,一致性数据流从主机到设备挂载内存,如图中的蓝色箭头所示。但是,设备对此内存的访问效率不是最佳的,因为需要通过主机,如图中的绿色箭头所示,设备先向主机发起请求,然后通过主机来访问HDM。

2.2.1.2 设备偏向性

在设备偏向模式下,设备负责工作提交和完成。在此模式下,设备需要对设备挂载内存完成高带宽和低延迟访问。设备无需询问主机的一致性引擎,而直接发起访问,如图中的红色箭头所示。主机仍然可以访问设备挂载的内存,但可能会被加速器强制放弃所有权,如图中的绿色箭头所示。设备访问HDM内存实现了延迟低,带宽高,但是主机访问HDM会却相反。

2.2.1.3 模式管理

有两种HDM偏向性模式管理方案:软件辅助和硬件自主。

2.2.1.4 软件辅助偏向模式管理

在软件辅助管理模式下,依靠软件来管理某页面的状态。通过选择适当的主机或设备偏向模式,软件可以在页面粒度上优化一致性性能。

软件辅助偏向性管理的特点如下:

  • 这种方式适用于,在执行计算操作前,加速器内的数据已经准备好。

  • 如果未提前将数据移动到加速器内存中,加速器通常会根据对数据的一些尝试引用来控制移动数据。

  • 在“需要的”数据提取场景中,加速器必须能够找到要执行的工作,对于这些工作,数据已经正确放置,否则它必须暂停。

  • 加速器停顿的每个周期会影响软件运行性能。

  • 简单的加速器通常无法隐藏数据预取的延迟。

2.2.1.5 硬件自主偏向模式管理

软件辅助方式通常适用于简单的加速器。对于复杂的加速器,比如GPU,用软件去管理偏向性将会很复杂,并不适用。硬件自主偏向性管理模式,不依赖软件来管理页面级的一致性偏向。相反,是硬件根据给定页面的请求者对偏向模式进行预测,并相应地进行调整。这种模式的主要好处是:

  • 提供与软件辅助模型中相同的页面粒度一致性偏向功能。

  • 无需软件在卸载执行之前识别和安排页面偏向转换。

  • 为卸载执行期间的动态偏向转换提供硬件支持。

  • 此模型的硬件支持可以是软件辅助模型的简单扩展。

  • 链路流和主机支持不受影响。

  • 影响主要限于当主机接触到设备偏向页面时在加速器上采取的操作,反之亦然。

  • 注意,尽管这是一个表面上看来是硬件驱动的解决方案,但硬件不需要自动执行所有转换(尽管如果需要,也可以这样做)。

2.3 Type 3 CXL设备

Type 3的典型应用是内存缓冲器,常用作内存带宽或者是容量的扩展。

Type 3 CXL设备支持CXL.io和CXL.mem协议。由于这些设备不是加速器,所以它们不会通过CXL.cache发出任何请求。该设备主要通过CXL.mem运行,为主机发送的请求提供服务。CXL.io协议主要用于设备发现、枚举、错误报告和管理。CXL.io协议允许设备用于其它特定于I/O的应用用途。

2.4 多逻辑设备(Multi Logical Device,MLD)

CXL 2.0仅支持Type 3的多逻辑组件。MLD组件最多可以将其资源划分为16个独立的逻辑设备(Logical Device,LD)。在CXL.io和CXL.mem协议中,每个逻辑设备都由逻辑设备标识符(LD-ID)标识。每个逻辑设备都作为Type 3设备运行,对虚拟层次结构(Virtual Hierarchy,VH)可见。LD-ID对访问VH的软件是透明的。MLD组件对于所有逻辑设备中的每个协议都有公共事务层和链路层。

MLD组件有一个为FM(Fabric Manager)保留的LD和最多16个可用于主机绑定的LD。FM拥有的LD(FMLD)允许FM跨LD配置资源分配,并管理与多个VCS(Virtual CXL Switch)共享的物理链路。

插播一句,VH是PCIe MR-IOV(Multiple Root I/O Virtualization)里面的一个概念。MR-IOV扩展了SR-IOV规范,允许PCIe设备在多个有独立PCI根的系统之间共享,这些系统通过基于PCIe转换器的拓扑结构与PCIe设备或者PCIe-PCI桥相接。每个VH(一个VH就是一个虚拟独立的SR-IOV设备)拥有独立的PCI Memory,IO,配置空间。

2.4.1 LD-ID for CXL.io and CXL.mem

LD-ID是一个16位逻辑设备标识符,适用于CXL.io和CXL.mem请求和响应。MLD设备返回的所有目标请求和响应必须包括LD-ID。

2.4.1.1 LD-ID for CXL.mem

CXL.mem仅支持LD-ID的低4位,因此可以通过链路支持多达16个唯一的LD-ID值。通过MLD端口转发的请求和响应用LD-ID标记。

2.4.1.2 LD-ID for CXL.io

CXL.io支持为通过MLD端口转发的所有请求和响应携带16位LD-ID。LD-ID 0xFFFF是保留的,始终由FM使用。CXL.io利用供应商定义的本地TLP前缀来携带16位LD-ID值。供应商定义的本地TLP前缀格式如下所示。

2.4.2 内存池设备配置寄存器

每个LD作为一个或多个PCIe EP(End Point) Function对软件可见。虽然LD Function支持所有配置寄存器,但影响常见链路行为的几个控制寄存器被虚拟化,对链路没有直接影响。LD的每个Function都必须实现PCIe规范中所述的配置寄存器。

下表列出了一组寄存器字段,与PCIe基本规范相比,这些字段的行为发生了修改。

2.5 CXL设备扩展

CXL设备扩展限制只允许每个VH(Virtual Hierarchy)启用一个Type 1或Type 2设备。

本章总结:这一章主要定义了3类CXL设备,Type 1支持CXL.cache和CXL.io;Type 2支持CXL.cache,CXL.mem和CXL.io;Type 3支持CXL.mem和CXL.io。这三类设备都需要支持CXL.io协议,不同的是对CXL.cache和CXL.mem支持。

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

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

相关文章

c实现猜数游戏(猜不对可是要自动帮你电脑关机)

接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧 前言 猜数字游戏作为一个基础的C程序小项目,实现简单,可以帮助我们巩固很多知识,作为扩展接下来我们实现一个自定猜数次数,用完次数电脑自动…

测试开发(测试用例篇)

一 测试用例篇 1.测试用例的概念: 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素 2.测试用例的好处 测试执行者的依据 使得工作可重复&#xf…

STM32CubeIDE基础学习-RS232通信

STM32CubeIDE基础学习-RS232通信 文章目录 STM32CubeIDE基础学习-RS232通信前言第1章 工程配置第2章 代码编写第3章 实验现象总结 前言 RS232也是串口的一种,RS-232是由电子工业协会(Electronic Industries Association, EIA)所制定的异步传输标准接口。在1962年发布…

常用类(比较器、System类、Math类、BigInteger与BigDecimal)

目录 一、Java比较器1.1、概述1.2、Comparable自然排序举例1.3、自定义类实现Comparable自然排序1.4、使用Comparator实现定制排序 二、System类、Math类、BigInteger与BigDecimal2.1、System类2.2、Math类2.3、BigInteger与BigDecima 一、Java比较器 1.1、概述 Java中的对象…

物联网实战--入门篇之(五)嵌入式-IIC驱动(SHT30温湿度)

目录 一、IIC简介 二、IIC驱动解析 三、SHT30驱动 四、总结 一、IIC简介 不管是IIC还是串口,亦或SPI,它们的本质区别在于有各自的规则,就是时序图;它们的相同点就是只要你理解了时序图,你就可以用最普通的IO引脚模…

P6学习:Oracle Primavera P6 OBS/责任人解析

前言 Primavera P6 EPPM 责任人用于管理 P6 企业项目组合管理 (EPPM) 系统中的项目所有权和权限。 Primavera P6 EPPM 中的所有项目都至少围绕三个结构进行组织:称为企业项目结构 (EPS) 的用于组织项目的结构、称为工作分解结构 (WBS) 的用于组织项目内活动的结构…

书生·浦语全链路开源开放体系 第二期

文章目录 大模型背景大模型开发流程InternLM 2.0SFT与RLHFInternLM2主要亮点 书生浦语全链路开源开放体系数据-书生万卷InternLM-Train微调 XTuner评测工具 OpenCompass部署 LMDeploy智能体 Lagent智能体工具箱 AgentLego 大模型背景 专用模型:针对特定的任务&…

亚马逊测评新策略:解决底层环境防关联,提升下单成功率

对于做测评的环境系统,确保稳定性和成功率是非常重要的。市面上有各种环境方案,如虚拟机、模拟机、gcs、云手机、VPS等。然而,这些方案不仅成本高,而且成功率很低。因此,一个好的环境系统是成功的基础。 亚马逊平台的…

算法学习——LeetCode力扣动态规划篇5(198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III )

算法学习——LeetCode力扣动态规划篇5 198. 打家劫舍 198. 打家劫舍 - 力扣(LeetCode) 描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统…

echarts 图表/SVG 图片指定位置截取

echarts 图表/SVG 图片指定位置截取 1.前期准备2.图片截取3.关于drawImage参数 需求&#xff1a;如下图所示&#xff0c;需要固定头部legend信息 1.前期准备 echarts dom渲染容器 <div :id"barchart id" class"charts" ref"barchart">&…

动态规划-----背包类问题(0-1背包与完全背包)详解

目录 什么是背包问题&#xff1f; 动态规划问题的一般解决办法&#xff1a; 0-1背包问题&#xff1a; 0 - 1背包类问题 分割等和子集&#xff1a; 完全背包问题&#xff1a; 完全背包类问题 零钱兑换II: 什么是背包问题&#xff1f; 背包问题(Knapsack problem)是一种…

jsp中设置动态时间

第一步 在head中写入meta <head><meta charset"UTF-8" http-equiv"Refresh" content"1"> </head> 第二步在head中写入函数 <head><meta charset"UTF-8" http-equiv"Refresh" content"…

Mac m1 Flink的HelloWorld

首先在官方下载Downloads | Apache Flink 下载好压缩包后解压&#xff0c;得到Flink文件夹 进入&#xff1a;cd flink-1.19.0 ls 查看里面的文件&#xff1a; 执行启动集群 ./bin/start-cluster.sh 输出显示它已经成功地启动了集群&#xff0c;并且正在启动 standalonesessio…

基于YOLOV8+Pyqt5光伏太阳能电池板目标检测系统

1、YOLOV8算法 YOLOv8 是当前效果较好的目标检测 算法&#xff0c;它的核心网络来源于 DarkNet-53&#xff0c;该网络初次在 YOLOv3[11] 中被引入&#xff0c;并深受 ResNet[12] 的影响。DarkNet-53 使用了残差机制&#xff0c;并连续添加了卷积模块来加强其功能性。 这 53 层…

AI 音乐的 “ChatGPT“ 时刻,SunoV3简介和升级教程

一句话总结 Suno AI音乐平台发布了V3版本&#xff0c;标志着AI音乐创作领域的一个重要进步&#xff0c;类似于ChatGPT在文本生成领域的影响。 关键信息点 Suno AI是专注于生成式AI音乐的平台&#xff0c;最新发布的V3版本在音质、咬字和节奏编排上有显著提升。V3版本的AI音乐…

集成百兆,千兆,万兆网络变压器等电子元器件的RJ45 Jack连接器在屏显控制系统中的应用

Hqst华轩盛(石门盈盛)电子导读&#xff1a;集成百兆&#xff0c;千兆&#xff0c;万兆网络变压器等电子元器件的RJ45 Jack连接器在屏显控制系统中的应用 一 ﹑集成百兆&#xff0c;千兆&#xff0c;万兆网络变压器等电子元器件的RJ45 Jack连接器在屏显控制系统中的应用前景 近年…

SQL Server 数据库常见提权总结

前面总结了linux和Windows的提权方式以及Mysql提权&#xff0c;这篇文章讲讲SQL Server数据库的提权。 目录 基础知识 权限判定 系统数据库 存储过程 常见系统存储过程 常见扩展存储过程 xp_cmdshell扩展存储过程提权 xp_dirtree写入文件提权 sp_oacreate提权 xp_re…

【吊打面试官系列】Redis篇 -Redis 如何做内存优化?

大家好&#xff0c;我是锋哥。今天分享关于 【Redis 如何做内存优化&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Redis 如何做内存优化&#xff1f; 尽可能使用散列表&#xff08;hashes&#xff09;&#xff0c;散列表&#xff08;是说散列表里面存储的数…

[ESP32]:基于esp-modbus实现serial从机

[ESP32]&#xff1a;基于esp-modbus实现serial从机 开发环境&#xff1a; esp idf 5.1esp-modbus 1.0.13 使用如下指令添加组件&#xff0c;或者访问esp-modbus idf.py add-dependency "espressif/esp-modbus^1.0.13"1.mb_register_area_descriptor_t 对于slave…