CXL 概述

CXL 概述

  • 前言
  • 1. 什么是CXL
    • 1.1 背景
      • 1.1.1 PCIE 的现状
      • 1.1.2 技术背景
    • 1.2 特点
    • 1.3 是什么
  • 2. Flex Bus
    • 2.1 特性
    • 2.2 Flex Bus 层级
  • 3. 协议
    • 3.1 CXL.io
    • 3.2 CXL.mem
    • 3.3 CXL.cache
    • 3.4 Summary
  • 4. 设备
    • 4.1 Type 1
    • 4.2 Type 2
      • 4.2.1 操作模式
        • 4.2.1.1 Host Bias
        • 4.2.1.2 Device Bias
      • 4.2.2 模式管理
    • 4.3 Type 3

前言

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

1. 什么是CXL

1.1 背景

1.1.1 PCIE 的现状

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

这个端口就是 Flex Bus.

2. Flex Bus

请添加图片描述
上图为 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.mem 协议中,CPU 称为 Master,负责发送请求,而设备作为 Slave 回复响应。
请求分为有数据请求和无数据请求,响应也分为有数据相应和无数据响应。

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

CXL 概述
下面是一个 Type 1 设备读主机内存的例子,设备中只有缓存,没有内存:
  1. 设备主动发起读请求命令,缓存操作字段命令码为 RdOwn,表示读缓存行,并独占数据;
  2. 主机缓存命中,写回内存,并返回GO响应,其中的信息指示设备缓存转为E状态;
  3. 紧随GO消息之后,是主机返回数据,传到设备缓存;
    请添加图片描述
    • 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 协议,就直接写进缓冲区了,省了一步拷贝操作。
      请添加图片描述

    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 对设备内存可以高吞吐量访问,缺点就是设备访问设备内存不是最优的,如果访问这块地址,需要通过主机转发,由主机解决一致性问题,如图中绿色部分。

    请添加图片描述

    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 世界中,从操作系统负责的意义上讲,对于大部分配置情况发生了变化,这就是为什么 Type 3 设备是最从软件的角度来看很有趣。 即使 CXL 目前在 PCIe 上运行5.0,CXL 提供了跨多个设备交错的能力,因此通过交错方式的数量以倍数增加带宽。 当你采用 PCIe 6.0 带宽和交错,CXL 提供了相当强大的替代HBM 方案 ,甚至可以通过 DDR 扩展到 GPU 级别的内存带宽。

    CXL 概述

    来源:Happy_Enger

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月26日
下一篇 2022年8月26日

相关推荐