在传输端,flex bus物理层准备从pcie链路层或cxl arb/mux接收的数据,以便通过flex bus链路进行传输。在接收端,flex bus物理层对flex bus链路上接收的数据进行串并转换,并将其转换为适当的格式,以转发到pcie链路层或arb/mux。
在初始链路训练期间,逻辑phy在pcie模式下工作,在训练至2.5 gt/s后,根据备用模式协商的结果,在适当的情况下切换到cxl模式。在cxl模式下,正常操作在本机链路宽度和32 gt/s链路速度下进行。降级运行模式包括8 gt/s或16 gt/s链路速度,和较小的x2和x1链路宽度。下表总结了协议支持的cxl链路宽度和链路速度组合。
6.2 flex bus的cxl帧和数据6.2.1 有序集块和数据块有序集块(ordered set block)和数据块(data block)是pcie里面的概念。有序集块用于训练、进入和退出电气空闲、转换到数据块,以及时钟容差补偿等,这个放到讲pcie的时候再说。数据块用于传输从cxl链路层接收的flit。16-bit协议id字段与从链路层接收到的每个528-bit(512-bit数据负载+16-bit crc) flit相关联。
6.2.2 protocol id[15:0]16位协议id字段指定传输的flit是cxl.io、cxl.cache/cxl.mem还是其他有效负载。
当链路层没有有效flit时,物理层插入null flit到数据流中。
6.2.3 x16数据包下图显示了x16链接的数据包布局。首先,16-bit传输协议id被分成两个8-bit,在lane 0和lane 1上传输;随后是528-bit flit的传输,同样是按照8-bit粒度拆分。
6.2.4 x8数据包
6.2.5 x4数据包
6.2.6 x2数据包x2数据包布局与x4数据包布局非常相似,协议id与通道0对齐。16-bit协议id和528-bit flit以8-bit粒度在两条lane上传输。
6.2.7 x1数据包x1数据包布局仅在降级模式下使用。16-bit协议id后跟528-bit flit在一条lane上传输。
6.2.8 特殊情况:cxl.io – 何时tlp在flit边界上结束对于cxl.io,如果tlp在flit边界上结束,且没有额外的cxl.io数据包要发送,但接收端仍然需要随后的edb(end bad)指示,或idle flit,或dllp,以在处理tlp之前确认此tlp是完好的还是无效的。
下图展示了这种场景,第一个cxl.io flit刚好封装了一个tlp。为保证接收端正确处理,发送端需要在发送一个包含pcie idle令牌的cxl.io flit。
6.2.9 帧错误物理层负责检测帧错误,并随后启动recovery以重新训练链路。以下是物理层检测到的帧错误:
同步头错误协议id帧错误eds插入错误528-bit的cxl.io flit中存在pcie帧错误6.3 链路训练6.3.1 pcie vs flex bus.cxl当ltssm从detect状态退出后,flex bus链路开始训练,并根据pcie ltssm规则完成链路宽度协商和速度协商。在链路训练期间,下游端口通过pcie备用模式协商机制启动flex bus模式协商。在以2.5 gt/s的速度进入l0之前,完成flex bus模式协商。
flex bus模式的动态硬件协商发生在ltssm的configuration状态下的链路训练期间,通过交换pcie 5.0基本规范定义的modified ts1和ts2有序集来促进。
6.4 recovery.idle和config.idle转换到l0pcie规范要求从recovery.idle切换到l0,或从config.idle切换到l0,链路双方需要传输和接收特定数量的连续空闲数据符号。当flex bus的逻辑phy处于cxl模式时,会监测null flits而不是空闲字符来启动到l0的转换。当处于cxl模式下recovery.idle或config.idle时,如果接收到四个连续的null flit并且在接收到一个null flit之后发送了八个null flit时,则下一个状态为l0。
第七章 交换机(switching)7.1 概览7.1.1 单vcs(virtual cxl switch)交换机
图中的vppb是virtual pci-to-pci bridge。单vcs交换机指的是有一个上游端口,若干个下游端口。单vcs交换机须遵守规则:
必须有一个上游端口(upstream switch port,usp)必须有一个或多个下游端口(downstream switch port,dsp)dsp必须支持pcie模式和cxl模式所有non-mld(包括pcie和sld)端口都支持vppb下的单个虚拟层次结构dsp必须能够支持cxl 1.1链路必须支持cxl 2.0扩展dvsecdvsec定义了寄存器,支持cxl.io解码和cxl.mem解码fabric manager是可选的解释一下,fabric manager是一个独立于交换机或主机固件的实体,它控制与端口和设备的绑定和管理相关的系统方面。
7.1.2 多vcs(virtual cxl switch)交换机
多vcs交换机须遵守规则:
多于1个usp每个vcs有一个或多个dsp上游vppb到物理端口的绑定和vcs的结构取决于交换机供应商具体实现每个dsp必须绑定到ppb或vppbfabric manager是可选的配置时,每个usp及其关联的dsp形成一个vcs交换机dsp必须支持在cxl或pcie操作模式下运行。所有non-mld端口都支持下游交换机端口下方的单个虚拟层次结构。dsp必须能够支持cxl 1.1链路7.1.3 具有mld端口的多vcs交换机具有mld端口的多vcs交换机由多个上游端口交换机和一个或多个下游mld端口的组合组成。
具体规则不再列出。
7.2 交换机配置和组成7.2.1 cxl交换机初始化选项cxl交换机三种初始化方法:
1.静态
2.fm在主机前启动
3.fm和主机同时启动
7.2.1.1 静态初始化下图是静态初始化的例子,下游vpb静态绑定到端口,使用标准的pcie机制支持设备热插拔。
静态交换机特性:
不支持mld端口不支持将端口重新绑定到不同的vcs不需要fm在交换机启动时,使用特定的机制(例如spi闪存中的配置文件)静态配置所有vcs和下游端口绑定支持cxl 1.1、cxl 2.0或pcie下游端口vcs(包括vpbs)的行为与pcie交换机相同,同时添加了对cxl协议的支持当主机启动时,每个vcs都准备好进行枚举支持热插拔不支持异步移除cxl 2.0设备7.2.1.2 fm先启动在fm先于主机启动的情况下,允许按照以下示例所述初始化交换机。
switch和fm启动在本例中,下游vppb静态绑定到端口,使用标准pcie机制支持设备的热插拔所有下游端口都没有绑定到vcs,它们归fm所有dsp链路建立,交换机通知fmfm向交换机发送bind命令(vcs0、vppb1、phy_port_id1)。交换机配置虚拟到物理绑定,如项中所述交换机将vppb虚拟端口号重新映射为物理端口号交换机将vppb连接器定义(perst#、prsnt#)重新映射到物理连接器交换机禁用链路所有物理的下游ppb功能都直接映射到vppbfm拥有的ppb不再存在于该端口当主机启动时,交换机已准备好进行枚举。
7.2.1.3 fm和主机同时启动fm和主机同时启动:
1.vcs是静态定义的
2.每个vcs内的vppb被解除绑定,并作为链路断开呈现给主机
3.交换机发现下游设备并将其呈现给fm
4.主机枚举vh并在上游ppb中配置dvsec
5.fm执行到vppb的端口绑定
6.交换机执行虚拟到物理的绑定
7.每个被绑定的端口都产生对主机的热添加指示
7.2.2 边带信号操作下表表提供了支持热插拔的最小边带信号集,其它边带信号可选。这些边带信号的行为与pcie协议中定义的一致。
7.2.3 绑定和解绑本节是关于cxl设备到vppb的绑定和解绑。
7.2.4 mld端口ppb和vppb行为mld端口提供虚拟化接口,以便多个vppb可以通过共享物理接口访问lds。因此,绑定到mld端口的vppb的特性和行为与绑定到sld端口的vppb的特性和行为不同。本节定义了它们之间的区别。
7.2.5 mld acs扩展功能cxl.io的请求事务和完成事务被路由到usp。
7.2.6 mld pcie扩展功能vppb的pcie扩展能力结构(capability structure)中的所有字段的行为应与pcie相同,但以下小结中的情况除外。
7.2.7 mld aer(advanced error reporting)扩展功能mld端口中的aer分为triggering、notification和reporting。
7.2.8 mld dpc扩展功能
7.3 cxl.io, cxl.cache/cxl.mem解码和转发7.3.1 cxl.io在vcs中,cxl.io流量必须遵守pci express规范中定义的交换机的相同请求、完成、地址解码和转发规则。
7.3.1.1 cxl.io解码当tlp由ppb解码时,它根据pcie基本规范中定义的规则,确定要路由tlp的目标ppb。除非另有规定,pcie基本规范中定义的所有规则都适用于cxl.io tlp的路由。
7.3.1.2 cxl 1.1 支持fm拥有的ppb端口不支持cxl 1.1设备。cxl 1.1设备连接到交换机的话,在软件中必须显示为rciep设备。
7.3.2 cxl.cache仅允许启用vcs中的一个cxl sld端口来支持type 1或type 2设备。usp上接收到的请求和响应被路由到相关的dsp,反之亦然。因此,cxl.cache不需要额外的解码寄存器。
7.3.3 cxl.memhdm解码dvsec功能包含定义内存地址解码范围的寄存器。cxl.mem请求来自主机/rp,并通过交换机向下游流向设备,响应来自设备,并向上游流向rp。
7.3.4 fm owned ppb cxl handling暂时略过。
7.4 cxl交换机电源管理(pm)7.4.1 cxl switch aspm l1对aspm l1的支持在第十章中描述。
aspm(active state power management)是pcie协议中的一种硬件电源管理机制。
7.4.2 cxl switch pci-pm and l2vcs中的vppb对pme消息的处理规则与pcie vppb相同。
7.4.3 cxl switch message managementcxl vdm属于“local – terminate at receiver”类型。当层次结构中存在交换机时,该交换机实现消息聚合功能。所有主机生成的消息都终止于该交换机,交换机聚合功能负责向下游端口重新生成这些消息。cxl设备生成的所有消息和响应都由交换机聚合和合并,合并后的消息或响应由交换机的上游端口生成,发送给主机。
pm消息信用交换发生在主机和交换机聚合端口之间,并且分别发生在交换机聚合端口和设备之间。
7.5 cxl交换机ras
7.6 fabric manager应用程序编程接口暂时略过,留给软件开发人员去头疼吧。
总结:本章中的很多概念是基于pcie基本规范的,不过在pcie基本规范中并没有专门为switch设立一章。但是在cxl协议中,switch承担了很多事情。
直流/力矩电机调速器的调整及改进
最新研究:量子计算仍在影响企业,或将颠覆全球
基于Xilinx Zynq SoC的解决方案
红米5Plus最新消息:小米首款千元全面屏新机即将发布,配置一般,价格良心
半导体行业正在大幅提高其晶圆厂产能利用率
Flex Bus物理层的CXL帧和数据概述
全球手术数量增长,医疗行业粘合屏障市场规模不断增长
智能显示屏的应用,带来更惬意便捷的智能家居体验
“工业大国”传丑闻 中国制造或乘势而起!
基于C8051F350冷阴极荧光观片仪调光系统设计
五分钟了解单涡轮双涡管增压原理
学习STM32时为什么要学习汇编?
5G网络的发展趋势分析
释放三相电机的创新潜能,了解下Qorvo的磁场定向控制(FOC)方案
启用可信传感器和用于物联网应用
国星光电成功入选广东省智能制造生态合作伙伴
人工智能需要法律走在前面吗
如何防止区块链行业的诈骗手段空手套
平板电脑实现三大领域融合趋势
CV-CUDA 助力腾讯云音视频 PaaS 平台实现视频增强 AI 全流程 GPU 加速