0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CXL在PCIe 5.0的基础上复用三种类型的协议

安芯教育科技 来源:安芯教育科技 作者:安芯教育科技 2022-09-06 10:05 次阅读

前言:

CXL的全名是Compute eXpressLink。CXL是Intel在2019年提出的,希望用CXL来实现计算、内存、存储和网络的解耦,并在CXL总线上提供持久内存。

CXL发展到现在已经有几十家的会员。目前CXL协议共有个版本,分别是1.0,1.1,2.0和刚刚发布的3.0,协议规范可以在官网上下载(https://www.computeexpresslink.org/)。关于CXL,协议里面是这样说的“CXL is alow-latency, high-bandwidth link that supports dynamic protocol muxing ofcoherency, memory access, and IO protocols, thus enabling attachment ofcoherent accelerators or memory devices”。从协议给出的定义可以看出,CXL是一种低延时,高带宽的连接技术,主要支持一致性缓存,内存和IO扩展。

CXL是基于PCIe 5.0实现的连接技术,复用了很多PCIe协议的东西,这一点上与CCIX比较像,但又不完全一样。说起CCIX和CXL,难免要相互对比。其实与其说是两种技术对比,不如说是ARM和Intel两大阵营的对抗。Intel具有一定的技术优势(至少在PCIe上);但是ARM如日中天,客户群体巨大。本文旨在一窥CXL协议,无意探讨CCIX和CXL的路线之争。相信大家经过学习,会对两种技术有自己的认识。孰优孰劣,谁会笑到最后,那是大佬们的事情。

沧海一声笑,滔滔两岸潮

浮沉随浪,只记今朝

苍天笑,纷纷世上潮

谁负谁胜出,天知晓

扯完闲话,书归正传。接下来的内容是基于CXL 2.0协议的学习笔记。由于是第一次刷CXL协议,就还是按照协议的章节来。内容主要是三方面,一是对协议的翻译,由于英语水平和技术水平都有限,有些地方会不通顺;二是自己的理解,直白说就是中翻中,把不通顺的或者难懂的描述转成大白话,这里可能会有一些不太准确;三是一些基础知识的补充,前面提到,CXL是在PCIe的基础上发展而来,因此有不少复用PCIe协议的地方,但是CXL协议里面又不会阐述这些。我把暂时看不懂或者不太关心的部分都略过了,尤其是后半部分章节,日后如果有需要,二刷三刷的时候再补上。

背景知识之PCIe:

既然CXL是以PCIe 5.0为基础,我们还是有必要先简单了解一下PCIe协议。

PCIe是点到点的传输,采用的是低压差分技术,一条通道(Lane)在发送(TX)和接收(RX)方向上共有四条信号线。PCIe 5.0的最大传输速率是32GT/s,也就是说单通道的最大速率是32Gb/s。如果想要提高PCIe的带宽,就需要多条通道,就像高速公路要提高交通流量就需要扩展更多的车道。所以经常会看到x32,x16,x8这些描述,后面的数字就代表通道数。通道数不是随意的,PCIe 5.0支持x1,x2,x4,x8,x12,x16和x32。简单计算可以得知,PCIe5.0最大的带宽是32*32/8=128GB/s,但这只是理论值,实际应用中需要考虑编码,数据包头等开销,有效带宽肯定要小于理论值。

PCIe的拓扑结构如下图。

2ebbec9a-2d86-11ed-ba43-dac502259ad0.png

Rootcomplex:简称RC,root complex主要负责PCIe报文的解析和生成。RC接受来自CPU的IO指令,生成对应的PCIe报文,或者接受来自设备的PCIe TLP报文,解析数据传输给CPU或者内存。

Endpoint:简称EP,PCIe终端设备,是PCIe树形结构的叶子节点。EP可以分为三类,legacy endpoint,PCI Express endpoint和Root Complex IntegratedEndpoints (RCiEPs)。

Switch:PCIe的转接器设备,提供扩展或聚合能力,并允许更多的设备连接到一个PCle端口。它们充当包路由器,根据地址或其他路由信息识别给定包需要走哪条路径。

PCIe可以分为三个独立的逻辑层:事务层(TransactionLayer),数据链路层(Data Link Layer)和物理层(Physical Layer)。

2edc0a02-2d86-11ed-ba43-dac502259ad0.png

在发送端,PCIe传输的数据从上到下,都是以数据包(packet)的形式传输的,每个都是有其固定的格式的。事务层负责创建TLP(Transaction Layer packet);数据链路层接收事务层发来的TLP并创建DLLP(Data LinkLayer packet);物理层接收DLLP,然后加上帧头和帧尾,把数据分发到各个Lane传输。在接收端,物理层接收Lane上传输的数据,去掉帧头和帧尾信息,发给数据链路层;数据链路层提取出TLP发给事务层;事务层解析TLP,取出有效负载数据。

2eeae5ea-2d86-11ed-ba43-dac502259ad0.png

这些是PCIe最基本的知识,后面用到啥再介绍。

第一章 介绍 1.1– 1.2 略。

1.3参考文档

PCI Express Base Specification Revision 5.0 or later

ACPI Specification 6.3 or later

UEFI Specification 2.8 or later

PCI Firmware Specification 3.2 or later

MCTP Base Specification (DSP0236) 1.3.1 or later

Security Protocol and Data Model Specification 1.1.0 or later

1.4 概述 1.4.1 CXL

CXL在PCIe 5.0的基础上复用三种类型的协议,分别 CXL.io,CXL.cache,CXL.memory。CXL.io用来发现,配置,寄存器访问、错误报告,主机物理地址(Host Physical Address,HPA)查找,中断等。CXL.cache用来扩展系统缓存。CXL.memory 用来扩展系统存储。其中CXL.cache和CXL.memory是备选的。三种 CXL 协议分别对应一个接口

2efb3aa8-2d86-11ed-ba43-dac502259ad0.png

如上图中,右侧的主机可以通过CXL连接左侧的加速芯片,其中CXL.io扩展外部I/O设备,CXL.cache扩展缓存,CXL.memory扩展存储。

CXL2.0支持热插拔、安全增强、持久内存支持、内存错误报告和遥测。CXL 2.0还支持多扇出(Fan-out)单级交换,以及跨多个虚拟层次结构共享设备的能力,包括对内存设备的多域支持。如下图,每种颜色标识一个虚拟层次结构。其中的MLD是多逻辑设备(Multi-Logic Device),是一个Type 3的设备,后面会讲什么是Type 3设备。

2f0c663e-2d86-11ed-ba43-dac502259ad0.png

1.4.2Flex Bus

关于Flex Bus,协议里面的原话是这样说的“A Flex Bus port allowsdesigns to choose between providing native PCIe protocol or CXL over ahigh-bandwidth, off-package link; the selection happens during link trainingvia alternate protocol negotiation and depends on the device that is pluggedinto the slot.“

CXL也采用的是PCIe的物理层,所以对于同一个插槽上的设备,到底是CXL设备还是传统PCIe设备呢?在上电启动时,主机识别出是PCIe设备还是CXL设备,之后FlexBus就像是一个二选一,选择采用哪个协议。这样插槽就可以兼容CXL卡或是PCIe卡。在CPU和设备之间可以插入一个或两个可选的重定时器(Retimer),以延长通道长度。下图是Flex Bus的示意电路。

插播一句,关于PCIe Retimer。随着PCIe协议的不断升级,频率越来越高,对数据在线路中的传输长度提出了强烈挑战。为了解决这一问题,PCIe协议在4.0版本中提出了Retimer。Retimer实际上是一种协议感知设备,能更好地将信号传输到更远。

2f2f43de-2d86-11ed-ba43-dac502259ad0.png

下图中显示,通过此端口可将一致性加速器或智能I/O设备连接到主机处理器

2f3e5bee-2d86-11ed-ba43-dac502259ad0.png

下图显示了如何通过Flex Bus.CXL来扩展内存系统。

2f583140-2d86-11ed-ba43-dac502259ad0.png

下图显示了CXL下游端口(Downstream Port)支持的连接。

2f69f40c-2d86-11ed-ba43-dac502259ad0.png

1.5 Flex Bus链接功能

FlexBus提供了一种点对点互连,可以传输原始PCIe协议或动态多协议CXL,以支持I/O、缓存和内存协议。主要的链接属性包括对以下功能的支持:

原始的PCIe模式,支持PCIe协议的全部功能

CXL模式

PCIe或CXL配置

信号速率32GT/s,降级速率16GT/s和8GT/s(CXL模式)

CXL链路宽度x16,x8,x4,x2(降级模式)和x1(降级模式)

CXL模式下对x4的分叉支持

1.6 Flex Bus 分层概述

CXL事务(协议)层分为两个部分:处理CXL.io的逻辑和处理CXL.cahce和CXL.mem的逻辑。CXL链路层以相同的方式细分。如下图所示,CXL.io近似PCIe协议的事务层和链路层,但是CXL.cache和CXL.mem走的是自己单独的事务层与链路层(这是CXL延迟低的原因之一)。CXL ARB/MUX接口将来自两个通路的流量交织。

2f84532e-2d86-11ed-ba43-dac502259ad0.png

此外,CXL可以选择是否实现PCIe事务层和数据链路层,如果实现,则允许分别与CXL.io事务层和链路层聚合。作为链路training过程的结果,事务层和链路层被配置为在PCIe模式或CXL模式下运行。

1.7 文档范围 略。

本章总结:这一章介绍了CXL的基本概念,CXL协议可以分为三个部分,分别是CXL.io,CXL.cache和CXL.mem。从Flex Bus分层结构能够看出来,CXL也是在PCIe的分层架构上做了扩展。但是和CCIX不同,CXL为CXL.cache和CXL.mem增添了新的事务层(Transaction Layer)和链路层(Link Layer),所以也可以认为CXL.cache和CXL.mem是两个全新的协议。

【待续】

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 总线
    +关注

    关注

    10

    文章

    2731

    浏览量

    87372
  • PCIe
    +关注

    关注

    13

    文章

    1102

    浏览量

    81213

原文标题:技术分享 | CXL学习(一)

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    多路复用技术主要有几种类型?它们各有什么特点?

    多路复用技术主要有几种类型?它们各有什么特点? 多路复用技术主要有以下几种类型:进程多路复用、I/O多路
    的头像 发表于 03-28 15:36 727次阅读

    差分晶振的输出波形解析:三种类型要知道

    差分晶振的输出波形解析:三种类型要知道  差分晶振是一种常见的电路元件,用于产生高稳定性的方波信号。它采用了一个振荡电路,包含了一个典型的集成晶体振荡器和两个反向耦合的输出信号。 差分晶振的输出波形
    的头像 发表于 01-24 13:46 499次阅读

    什么是CXL技术?CXL三种模式、类型、应用

    CXL的目标:解决CPU和设备、设备和设备之间的内存鸿沟。服务器有巨大的内存池和数量庞大的基于PCIe运算加速器,每个上面都有很大的内存。内存的分割已经造成巨大的浪费、不便和性能下降。CXL就是为解决这个问题而诞生。
    的头像 发表于 01-11 16:53 938次阅读
    什么是<b class='flag-5'>CXL</b>技术?<b class='flag-5'>CXL</b>的<b class='flag-5'>三种</b>模式、<b class='flag-5'>类型</b>、应用

    雷达的种类有哪三种类型

    雷达是一种利用电磁波进行目标探测和跟踪的设备。它在军事、航空、海洋、天文和气象等领域具有广泛的应用。雷达的种类可以按照不同的分类方式进行划分。在本文中,我们将按照雷达的工作方式,将雷达分为三种类型
    的头像 发表于 12-21 11:38 2855次阅读

    常见的socket三种类型

    常见的socket三种类型  Socket是计算机网络中常用的通信机制,在网络编程中起到了非常重要的作用。Socket可以分为三种类型:流套接字(Stream Socket)、数据报套接
    的头像 发表于 12-08 11:18 1876次阅读

    关于CXL的功能与特性详解

    CXL.io 和CXL.cache 是CXL 协定中的两个子协定,它们的功能和用途有所不同,主要是为了引入非对称的概念;CXL.io 类似于PCIe
    的头像 发表于 11-22 15:43 660次阅读
    关于<b class='flag-5'>CXL</b>的功能与特性详解

    什么是PCIePCIe有什么用途?PCIe 5.0有何不同?

    随着英特尔Alder Lake CPU的发布,以及AMD 7000 Ryzen CPU的即将发布,PCIe 5.0 硬件终于成为现实。但什么是 PCIe 5.0
    的头像 发表于 11-18 16:48 2046次阅读
    什么是<b class='flag-5'>PCIe</b>?<b class='flag-5'>PCIe</b>有什么用途?<b class='flag-5'>PCIe</b> <b class='flag-5'>5.0</b>有何不同?

    CXL技术的三种模式 CXL技术与其他技术的对比

    CXL的目标:解决CPU和设备、设备和设备之间的内存鸿沟。服务器有巨大的内存池和数量庞大的基于PCIe运算加速器,每个上面都有很大的内存。内存的分割已经造成巨大的浪费、不便和性能下降。CXL就是为解决这个问题而诞生。
    发表于 10-30 14:30 7090次阅读
    <b class='flag-5'>CXL</b>技术的<b class='flag-5'>三种</b>模式 <b class='flag-5'>CXL</b>技术与其他技术的对比

    什么是CXL技术?CXL三种模式、类型、应用

    更快的数据传输速度:CXL技术可以实现高达25GB/s的数据传输速度,比目前常用的PCIe 4.0技术还要快。这意味着在数据中心等高性能应用场景下,可以更快地进行数据处理和传输。 更低的延迟
    发表于 09-27 09:26 3289次阅读
    什么是<b class='flag-5'>CXL</b>技术?<b class='flag-5'>CXL</b>的<b class='flag-5'>三种</b>模式、<b class='flag-5'>类型</b>、应用

    PCIe引脚定义和PCIe协议层介绍

    本文我们将向大家介绍PCIe引脚定义以及PCIe协议层。
    发表于 09-26 11:39 9438次阅读
    <b class='flag-5'>PCIe</b>引脚定义和<b class='flag-5'>PCIe</b><b class='flag-5'>协议</b>层介绍

    PCIe 5.0 SSD不用风扇会怎么样?

    PCIe 4.0 SSD初期就面临严重的发热问题,但至少被动散热片都可以搞定。PCIe 5.0 SSD更是直接飞起,首批产品几乎清一色都用上了主动风扇,性能也无法满血。
    发表于 09-15 10:38 268次阅读
    <b class='flag-5'>PCIe</b> <b class='flag-5'>5.0</b> SSD不用风扇会怎么样?

    热敏电阻主要有哪三种类型

    热敏电阻主要有哪三种类型  热敏电阻是利用材料温度变化引起电阻变化的一种元件,随着科学技术的进步和应用领域的不断扩大,热敏电阻的种类也不断增加。目前市面上常见的热敏电阻有三种类型,分别是铂热敏电阻
    的头像 发表于 09-08 10:50 4276次阅读

    电压表的符号是什么样的,电压表分几种类型

    的符号表示   电压表由圆圈内的字母 V 以及两个端子表示。      电压表的类型   电压表分为三种方式。电压表的分类如下图所示。      结构的基础上,电压表有以下几
    发表于 09-01 16:43

    PCIe AMBA集成指南

    本文档旨在提供关于将PCIe接口集成到基于AMBA的片系统(SoC)的指导。 假设PCIe接口通过基于AXI或ACE协议的互连连接到SoC的其余部分。 读者应熟悉
    发表于 08-17 07:25

    功率放大器的种类有哪三种类型

    功率放大器是一种能将输入信号转换为更高功率输出的电子设备。在电子工程和音频领域中,功率放大器通常被分为三种类型:A类、B类和AB类。下面安泰电子将详细介绍这三种类型的功率放大器及其特点
    的头像 发表于 08-02 17:45 1138次阅读
    功率放大器的<b class='flag-5'>种类</b>有哪<b class='flag-5'>三种类型</b>