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

    文章

    2868

    浏览量

    87991
  • PCIe
    +关注

    关注

    15

    文章

    1224

    浏览量

    82445

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

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

收藏 人收藏

    评论

    相关推荐

    pcie接口类型及其应用

    随着计算机技术的飞速发展,数据传输速度和处理能力的需求也不断提高。PCIe(Peripheral Component Interconnect Express)作为一高效的数据传输接口,已经成为
    的头像 发表于 11-13 10:22 314次阅读

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

    热敏电阻是一利用电阻随温度变化的特性来测量温度的传感器。它们广泛应用于各种电子设备和系统中,用于温度监测、控制和补偿。热敏电阻主要有三种类型:负温度系数(NTC)、正温度系数(PTC)和临界温度
    的头像 发表于 09-06 09:37 1327次阅读

    如何利用CXL协议实现高效能的计算架构

    构建一个可横向扩展的可组合分离架构。众所周知,CXL协议涵盖了type1、type2、type3三种设备类型,而目前学术界和工业界的研究主要集中
    的头像 发表于 09-03 09:14 465次阅读
    如何利用<b class='flag-5'>CXL</b><b class='flag-5'>协议</b>实现高效能的计算架构

    DS320PR1601 32Gbps 16通道PCIe 5.0CXL 2.0线性转接驱动器数据表

    电子发烧友网站提供《DS320PR1601 32Gbps 16通道PCIe 5.0CXL 2.0线性转接驱动器数据表.pdf》资料免费下载
    发表于 06-22 10:40 0次下载
    DS320PR1601 32Gbps 16通道<b class='flag-5'>PCIe</b> <b class='flag-5'>5.0</b>、<b class='flag-5'>CXL</b> 2.0线性转接驱动器数据表

    DS320PR410支持PCIe5.0CXL 2.0的四通道线性转接驱动器数据表

    电子发烧友网站提供《DS320PR410支持PCIe5.0CXL 2.0的四通道线性转接驱动器数据表.pdf》资料免费下载
    发表于 06-21 11:07 0次下载
    DS320PR410支持<b class='flag-5'>PCIe5.0</b>、<b class='flag-5'>CXL</b> 2.0的四通道线性转接驱动器数据表

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

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

    三种实现光模块更高传输速率的技术

    本文介绍三种提高光模块传输速率的技术:波分复用技术、多路并行传输技术和高阶调制技术。波分复用技术利用光的波长特性将不同波长的信号同时传输同一条光纤
    的头像 发表于 03-11 15:31 625次阅读

    LoRa协议层次及应用场景

    Application,MAC,Modulation,其中Application为应用层,用户自定义的基于LoRaWAN技术的应用程序、软件接口等。常见的LoRaWAN协议即为LoRaMAC协议协议定义的终端
    的头像 发表于 03-06 16:39 2826次阅读
    LoRa<b class='flag-5'>协议</b>层次及应用场景

    边缘计算分为哪三种类型?边缘计算这项技术可以应用在哪些领域?

    边缘计算分为哪三种类型?边缘计算这项技术可以应用在哪些领域? 边缘计算是一分布式计算的模式,它将数据处理和存储的功能从传统的集中式云计算中推向网络边缘设备,以便更快速、实时地进行计算和响应。边缘
    的头像 发表于 02-06 14:38 1290次阅读

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

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

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

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

    星携手红帽真实用户环境下验证CXL内存技术

    CXL凭借其统一的接口标准,通过PCIe接口连接各类处理器如CPU、GPU及内存设备,有效解决了当前系统速度、延迟和可扩展性所面临的瓶颈。
    的头像 发表于 12-27 10:45 465次阅读

    雷达的种类有哪三种类型

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

    常见的socket三种类型

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

    拒绝EMI干扰,三种屏蔽类型的多芯导线如何选?

    拒绝EMI干扰,三种屏蔽类型的多芯导线如何选?
    的头像 发表于 12-07 16:30 502次阅读
    拒绝EMI干扰,<b class='flag-5'>三种</b>屏蔽<b class='flag-5'>类型</b>的多芯导线如何选?