CXL系统架构

 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支持。

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

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

相关文章

Deconstructing Denoising Diffusion Models for Self-Supervised Learning解读(超详细)

论文题目:Deconstructing Denoising Diffusion Models for Self-Supervised Learning 原文链接:https://arxiv.org/html/2401.14404v1 本文是对何凯明老师的新作进行的详细解读,其中穿插了一些思考,将从以下四个方面对这篇工作进…

3723. 字符串查询:做题笔记

目录 思路 代码 注意点 3723. 字符串查询 思路 这道题感觉和常见的前缀和问题不太一样,前缀和的另一种应用:可以统计次数。 这道题我们想判断一个单词的其中一段子序列A是否可以通过重新排列得到另一段子序列B。 我看到这道题的时候想着可能要判…

Gitlab 实现仓库完全迁移,包括所有提交记录、分支、标签

1 方案一&#xff1a;命令 cd <项目目录> git fetch --all git fetch --tags git remote rename origin old-origin #可以不保留 git remote add origin http://***(项目的新仓库地址) #git remote set-url origin <项目的新仓库地址> git push origin --all git…

Qt 多线程QThread的四种形式

重点&#xff1a; 1.互斥量&#xff1a;QMutex配套使用&#xff0c;lock(),unlock(),如果一个线程准备读取另一个线程数据时候采用tryLock()去锁定互斥量&#xff0c;保证数据完整性。 QMutexLocker简化版的QMutex,在范围区域内使用。 QMutex mutex QMutexLocker locker(&…

达梦数据库新手上路排坑

数据库安装 这个没啥说的&#xff0c;按照官网教程操作&#xff0c;我使用的是docker进行安装 下载文件docker文件 官方下载地址- load -i dm8****.tar (注意修改为当前下载的文件)达梦官方文档注意修改为当前版本 docker run -d -p 5236:5236 --name dm8 --privilegedtrue -…

程序员口才提升技巧:从技术到沟通的进阶之路

程序员口才提升技巧&#xff1a;从技术到沟通的进阶之路 在数字化时代&#xff0c;程序员作为推动技术发展的关键角色&#xff0c;其专业能力的重要性不言而喻。然而&#xff0c;除了编程技能外&#xff0c;良好的口才同样是程序员职业生涯中不可或缺的一部分。本文将探讨程序…

学透Spring Boot — [二] Spring 和 Spring Boot的比较

欢迎关注我们的专栏 学透 Spring Boot 一、创建一个简单Web应用 本篇文章&#xff0c;我们将会比较 Spring 框架和 Spring Boot 的区别。 什么是 Spring? 也许你在项目中已经可以很熟练的使用 Spring 了&#xff0c;但是当被问到这个问题时&#xff0c;会不会犹豫一下&#…

2024-3-28 市场情绪强修复

这一轮退潮负反馈都修复了&#xff0c; 艾艾精工 博信股份 安奈尔 永悦科技 大理药业 &#xff0c;高新发展 也补跌了&#xff0c;收尸队也干活了&#xff0c;情绪不修复不接力得最好写照。这轮周期 宁科生物 已经7板&#xff0c;已经追平了 博信股份7板&#xff0c;看明天溢…

永磁同步电机速度环滑膜控制(SMC)

文章目录 1、前言2、滑膜控制基本原理2.1 滑膜控制的定义2.2 趋近率 3、滑膜控制器的设计与参数4、二阶滑膜速度控制器的设计5、二阶速度环滑膜控制仿真5.1 模型总览5.2 电机及系统参数5.3 滑膜控制模块5.4 控制效果对比 参考 写在前面&#xff1a;本人能力、时间、技术有限&am…

广场舞团系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 目录 1. 系…

明天线上见!DPU构建高性能云算力底座——DPU技术开放日最新议程公布!

算力&#xff0c;是数字经济时代的新质生产力。随着人工智能、智算中心建设等需求不断拓展&#xff0c;DPU在各行各业数据中心的应用逐步深入。异构算力代表DPU在新质生产力建设中&#xff0c;能否给出别开生面的答案&#xff0c;应战算力难题&#xff1f;DPU技术在不同行业中的…

详细解析记忆泊车的顶层技术原理

详细解析记忆泊车的顶层技术原理 附赠自动驾驶学习资料和量产经验&#xff1a;链接 相对于记忆行车而言&#xff0c;记忆泊车 MPA&#xff08;Memory Parking Assist&#xff09;可以看成是停车场区域内的一个自动驾驶功能&#xff0c;可帮助用户按记忆的路线自动巡航并泊入车…

Vue2 与 Vue3的面试题

1.Promise有几种状态 pending(进行中) fulfilled(已成功) rejected(已失败) data(){return{}},create(){const result this.ganaretor()result.next.value.then((res)>{console.log(res);}) // 解决一直.then()方法问题},methods:{* ganaretor(){yield axios.get(httpts)…

vulnhub靶场之driftingblues-3

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email for troubleshooting or questions. This works better with VirtualBox rather than VMware 2.靶场…

【前端面试3+1】01闭包、跨域、路由模式

一、对闭包的理解 定义&#xff1a; 闭包是指在一个函数内部定义的函数&#xff0c;并且该内部函数可以访问外部函数的变量。闭包使得函数内部的变量在函数执行完后仍然可以被访问和操作。 特点&#xff1a; 闭包可以访问外部函数的变量&#xff0c;即使外部函数已经执行完毕。…

天锐绿盾|公司如何防止员工拷贝电脑资料?

#天锐绿盾# 天锐绿盾是一款针对企业数据安全设计的终端安全管理软件&#xff0c;用来防止员工拷贝电脑资料的具体措施包括&#xff1a; www.drhchina.com PC地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 1. **文件透明加密…

10.对象的使用,遍历

什么是对象 其实就是map那种键值对的存储形式&#xff0c;别的语言也有&#xff0c;老规矩&#xff0c;和别的语言差不多的就在给pink老师打一波广告。 常见的对象操作&#xff0c;其实没啥直接上代码吧 <!DOCTYPE html> <html> <head><meta charset&…

网络套接字补充——UDP网络编程

五、UDP网络编程 ​ 1.对于服务器使用智能指针维护生命周期&#xff1b;2.创建UDP套接字&#xff1b;3.绑定端口号&#xff0c;包括设置服务器端口号和IP地址&#xff0c;端口号一般是2字节使用uint16_t&#xff0c;而IP地址用户习惯使用点分十进制格式所以传入的是string类型…

【常见面试题】JS 发布者、订阅者模式

面试中经常出现问到如何实现JS 发布者、订阅者模式。下面是ES5实现发布订阅模式。 1、直接上代码。 function EventEmitter() {this.events {}; }; // 订阅者 EventEmitter.prototype.on function(ename, callback) {if (!this.events[ename]) {// 初始化创建订阅&#xff…

C++ 控制语句(二)

一 break continue和goto语句 1 break语句 在switch语句中&#xff0c;分隔case子句&#xff0c;跳出switch语句。 在循环语句中可以立即终止循环语句的执行。 2 continue语句 功能:在一次循环过程中,跳过continue语句以下的语句,直 接进入下一次循环操作。 3 goto语句 …