
CXL协议
文章平均质量分 90
CXL协议翻译及解释
夏天Aileft
莫愁前路无知己,天下谁人不识君!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CXL3.0 256B Flit模式
偶数半 flit 由 2 字节 Flit Header、120 字节 Flit 数据和 6 字节 CRC 组成,CRC 用于保护偶数 128 字节 flit 的一半。对于偶数 flit 的一半,消息的字节 0 到 121 是 flit 的 122 个非 CRC 字节(flit 的字节 0 映射到消息的字节 0,flit 的字节 1 映射到消息的字节 1,依此类推),而字节 122 到 129 为零(这些字节不会在链路上发送,但发送方和接收方都必须在计算 CRC 之前对剩余字节进行零填充)。原创 2025-06-09 11:09:39 · 878 阅读 · 0 评论 -
CXL Early Discovery Table(CEDT)介绍
CEDT(CXL Early Discovery Table)是 CXL 3.1 协议定义的 ACPI 表,用于在操作系统启动早期(无需解析完整的 ACPI 命名空间)快速发现和初始化 CXL 相关硬件资源。其核心功能包括:定位 CXL Host Bridges:通过 CHBS(CXL Host Bridge Structure)描述每个 CXL Host Bridge 的寄存器位置。原创 2025-04-28 15:23:49 · 910 阅读 · 0 评论 -
CXL3.0 CDAT(Coherent Device Attributes Table)
在说明CDAT之前,先讲一下CXL中的DOE类型:CXL协议里定义了两种DOE的类型,一种是Compliance就是合规性测试的内容,还有一种就是CDAT(一致性属性表)Memory_Info_Valid是CXL设备的内存配置完成标志,位于DVSEC(Designated Vendor-Specific Extended Capability)的CXL Range X Size Low寄存器中(X为1或2)。原创 2025-04-11 15:59:59 · 886 阅读 · 0 评论 -
CXL UIO Direct P2P学习
在CXL协议中,UIO(Unordered Input/Output) 是一种支持设备间直接通信(Peer-to-Peer, P2P)的机制,旨在绕过主机CPU或内存的干预,降低延迟并提升效率。● 目标场景:允许CXL设备(如加速器、内存扩展设备)直接访问其他设备的HDM(Host-Managed Device Memory)或主机内存,无需通过主机CPU中转。● 关键能力:○ HDM访问:通过UIO路径直接读写远端设备的HDM。原创 2025-03-28 11:00:43 · 1179 阅读 · 0 评论 -
CXL协议之FM(Fabric Management)解释
FM在CXL生态中扮演“中枢控制器”角色,通过标准化的MCTP接口和隧道机制,实现对复杂CXL拓扑(含交换机、池化设备)的统一管理。其设计兼顾了直接连接的效率与间接连接的灵活性,同时支持事件驱动的异步管理模型,为高性能计算与资源池化场景提供了关键基础设施支持。原创 2025-03-19 15:24:16 · 925 阅读 · 0 评论 -
CXL Hotplug流程
CXL(Compute Express Link)3.0 在 PCIe Hot-Plug 模型的基础上扩展了对缓存一致性(Coherency)和内存语义(Memory Semantics)的支持,同时定义了针对 Hot-Add(热添加) 和 Managed Hot-Remove(受控热移除) 的流程。原创 2025-03-17 10:33:58 · 1034 阅读 · 0 评论 -
CXL协议 Register BIR(Base Indicator Register)解释
在CXL协议中,的作用是指定使用设备功能(Function)的哪个BAR(基址寄存器)或Enhanced Allocation条目来映射CXL寄存器到内存空间。Register BIR是CXL协议中用于定位寄存器映射基址的关键字段,通过选择特定的BAR或EA条目,确定CXL寄存器在内存空间中的位置。原创 2025-02-19 09:00:00 · 1812 阅读 · 0 评论 -
CXL ALMP(ARB/MUX Link Management Packet)理解
ALMP(ARB/MUX Link Management Packet) 是CXL协议中由ARB/MUX层生成和处理的专用管理报文,用于协调链路电源状态切换(如L0s/L1)和虚拟链路状态机(vLSM)同步。ALMP是ARB/MUX层的控制平面报文,专用于以下场景:协调多协议(CXL.io、CXL.cachemem等)的链路状态切换(如L1进入/退出)。维护各协议独立的虚拟链路状态机(vLSM) 状态同步。在物理层(PHY)与链路层(Link Layer)之间仲裁电源管理请求。原创 2025-02-18 14:30:14 · 848 阅读 · 0 评论 -
CXL Virtual Hierarchy (VH) Enumeration理解
在 CXL 3.0 协议中,CXL Virtual Hierarchy (VH) Enumeration 是一种针对 CXL 虚拟层级(Virtual Hierarchy) 设计的设备枚举机制,它允许软件将物理连接的 CXL 设备抽象为多个逻辑层级(虚拟层级),从而实现更灵活的资源管理和拓扑扩展。与传统的 PCIe 枚举相比,CXL VH 枚举在协议特性、拓扑抽象和资源分配机制上有显著差异。本质:VH 是一个逻辑上的设备层级结构,可能与物理连接拓扑不同。原创 2025-02-18 13:48:16 · 638 阅读 · 0 评论 -
CXL 寄存器介绍
无论哪种情况,CXL Device 的 Device0 Function0 配置空间中均应实现 CXL PCIe DVSEC 能力结构,并应用于该 Device 内的所有 Device/Function。PCIe DVSEC for CXL Devices(CXL 1.1 时称为 Flex Bus Devices,协议中有时简称为 CXL PCIe DVSEC),该能力结构中具备实现 CXL 所需的最基本的寄存器,用以指示 CXL 能力、控制相关能力/特性的开关及状态指示。该能力结构寄存器布局如下图所示。原创 2024-11-06 15:05:36 · 1354 阅读 · 0 评论 -
【CXL协议-性能注意事项(13)】
如果 MEC 列指示 ADD,则计数器单元应在每个时钟上添加所有启用事件的发生次数,这可能导致计数器数据在单个时钟内增加超过 1 的值。3. 在 MEC 列中,ADD 表示计数器单元应在每个时钟周期内将所有启用事件的发生次数相加,这可能导致计数器数据在单个时钟周期内增加超过 1 的值。CXL 事件定义为与 CXL 组件操作相关的特定组件活动的发生。用于平均测量的消息的地址应随机分布。但是,如果实现不匹配速率,则需要较快的实现限制其协议流量的速率,以匹配较慢的实现(包括突发),只要没有明确的流量控制循环。原创 2024-10-21 16:32:01 · 838 阅读 · 0 评论 -
如何对CXL Port做Link Disable和Hot Reset
在CXL设备的验证测试中,对CXL设备做Link Disable和Hot Reset对比PCie的Port做相同的操作略有不同。原创 2024-08-01 11:30:10 · 540 阅读 · 0 评论 -
CXL协议中 Register Locator DVSEC详解
Register Locator DVSEC(Designated Vendor-Specific Extended Capability)是一种PCI Express(PCIe)配置空间的能力,专为CXL(Compute Express Link)技术中的设备设计。这包括CXL根端口、CXL下行交换端口、CXL上行交换端口以及非RCD(即非寄存器配置数据)设备。这项能力的主旨是帮助这些设备实现额外的寄存器块,以便更好地配置和管理CXL技术提供的高级功能。原创 2024-06-13 22:35:13 · 1703 阅读 · 0 评论 -
【CXL协议-控制和状态寄存器(8)】
设备 0、功能 0 DVSEC 中的功能、状态和控制字段控制整个 CXL 设备的 CXL 功能。在此过程中应保持向后兼容性。Bit 7: CXL 复位功能:如果设置,表示设备支持 CXL 复位并在此寄存器中实现 CXL 复位超时字段、在 CXL Control2 寄存器中启动 CXL 复位位并在 CXL Status2 寄存器中实现 CXL 复位完成状态。此 DVSEC 还位于 CXL 2.0 根端口、上行交换机端口、下行交换机端口和 CXL 2.0 设备的主要功能(设备 0、功能 0)的配置空间中。原创 2024-06-04 09:30:00 · 1926 阅读 · 0 评论 -
Memory测试工具-lmbench使用详解
什么是lmbench?lmbench 是一个广泛使用的、开源的系统性能测量工具,它能对Unix-like操作系统(包括Linux、BSD等)进行全面的性能测试。这个套件包含了一系列针对不同系统组件(如处理器、内存、文件系统等)的基准测试工具。在内存测试方面,lmbench 主要测量内存的带宽和延迟。原创 2024-06-03 14:36:28 · 4292 阅读 · 0 评论 -
Memory测试工具-stressapptest详解
stressapptest 是一个用于在各种系统组件上施加压力的工具,特别专注于内存和CPU。通过运行各种模式的访问测试,stressapptest 旨在模拟高负载下的系统行为,并帮助发现潜在的错误,比如硬件故障、过热或系统组件的不稳定性。原创 2024-05-31 11:33:44 · 7277 阅读 · 2 评论 -
【CXL协议-RAS(12)】
在了解本章之前,咱们先来了解一下什么是RASRAS是可靠性(Reliability)、可用性(Availability)和服务性(Serviceability)的缩写,这是衡量系统设计和架构质量的关键指标。在CXL协议中,RAS功能被设计来确保数据的准确传输,减少系统错误,提供错误检测与修正机制,以及支持高效的系统管理和维护。原创 2024-03-28 00:00:00 · 1890 阅读 · 0 评论 -
【CXL协议-ARB/MUX层(5)】
在CXL协议中,ARB/MUX层(Arbitration/Multiplexer layer)是负责管理资源共享和数据通路选择的一层。CXL协议包含了几个子协议,主要有CXL.io、CXL.cache 和 CXL.memory。ARB/MUX层在这些子协议之间起到了关键的调度和选择作用,以确保数据流和控制流的正确传输。下面是ARB/MUX层的一些主要职能:仲裁 (Arbitration): 在多个请求同时争用相同资源的情况下,仲裁逻辑确保了系统中的各种请求能够公平且有效地访问到共享资源。原创 2024-03-27 00:00:00 · 2253 阅读 · 13 评论 -
【CXL协议-事务层之CXL.mem(3)】
CXL 内存协议称为 CXL.mem,它是 CPU 和内存之间的事务接口。跨芯片通信时,它使用 Compute Express Link (CXL) 的物理层和链路层。该协议可用于多种不同的内存连接选项,包括当内存控制器位于主机 CPU 中时、当内存控制器位于加速器设备中时或当内存控制器移动到内存缓冲芯片时。它也适用于不同的内存类型(易失性、持久性等)和配置(平面、分层等)。CPU 中的一致性引擎使用 CXL.mem 请求和响应与内存 (Mem) 连接。原创 2024-03-26 08:00:00 · 2346 阅读 · 3 评论 -
【CXL协议-事务层之CXL.cache (3)】
CXL.cache 协议将设备和主机之间的交互定义为许多请求,每个请求至少有一个关联的响应消息,有时还有数据传输。该接口由每个方向的三个通道组成:请求、响应和数据。这些通道根据其方向命名,D2H(设备到主机)和 H2D(主机到设备)以及它们携带的事务、请求、响应和数据,如图 20 所示。独立通道允许不同类型的消息使用专用线路 并实现解耦和每线更高的有效吞吐量。D2H 请求携带从设备到主机的新请求。这些请求通常针对内存。每个请求将接收零个、一个或两个响应以及最多一个 64 字节缓存行数据。原创 2024-03-25 11:41:20 · 2278 阅读 · 0 评论 -
【CXL协议-事务层之CXL.io(3)】
在 PM 初始化期间的第一个 CREDIT_RTN 消息期间,通过 NUM_CREDITS 字段发送的信用表示 CREDIT_RTN 的发起者可以从另一端接收的依赖于信用的 PM 消息的数量。在后续的 CREDIT_RTN 消息期间,NUM_CREDITS 字段表示自同一方向的最后一个 CREDIT_RTN 消息以来释放的 PM 信用数。• 上游端口PMU 必须从从下游端口PMU 接收到的第一条PM2IP 消息中提取TARGET_AGENT_ID 字段,并将其用作未来消息中的PM_AGENT_ID。原创 2024-03-23 08:00:00 · 1617 阅读 · 1 评论 -
【CXL协议-复位、初始化及管理(9)】
CXL设备的三种复位:Hot reset:通过链路触发((LTSSM 或 linkdown))Warm reset:通过外部信号触发 (PERST)Cold reset:通过外部信号触发,并伴随电源开关这三种复位被归纳为传统(Conventional)复位。Function级复位和CXL复位不是传统复位。原创 2024-03-20 12:14:30 · 2727 阅读 · 9 评论 -
【CXL协议-Switching(7)】
交换机禁止从 FM 到绑定 SLD 端口的任何 CXL.io 访问,以及从 FM 到 MLD 组件内绑定 LD 的任何 CXL.io 访问。交换机禁止从 FM 到绑定 SLD 端口的任何 CXL.io 访问,以及从 FM 到 MLD 组件内绑定 LD 的任何 CXL.io 访问。交换机禁止从 FM 到绑定 SLD 端口的任何 CXL.io 访问,以及从 FM 到 MLD 组件内绑定 LD 的任何 CXL.io 访问。因此,绑定到MLD端口的vPPB的特性和行为与绑定到SLD端口的vPPB的特性和行为不同。原创 2024-03-18 22:29:27 · 2414 阅读 · 3 评论 -
【CXL协议-FlexBus 物理层(6)】
在初始链路训练期间,逻辑PHY在PCIe模式下工作,在训练至2.5 GT/s后,根据备用模式协商的结果,在适当的情况下切换到CXL模式。在接收端,Flex Bus物理层对Flex Bus链路上接收的数据进行串并转换,并将其转换为适当的格式,以转发到PCIe链路层或ARB/MUX。对于CXL.io,如果TLP在flit边界上结束,且没有额外的CXL.io数据包要发送,但接收端仍然需要随后的EDB(EnD Bad)指示,或IDLE flit,或DLLP,以在处理TLP之前确认此TLP是完好的还是无效的。原创 2024-03-18 22:11:35 · 2268 阅读 · 10 评论 -
【CXL协议-安全(11)】
CXL协议之安全原创 2024-03-14 09:31:33 · 1693 阅读 · 12 评论 -
【CXL协议-链路层(4)】
• flit 内的消息排序基于 flit 位编号,即最早的消息放置在最低 flit 位位置,随后的消息放置在逐渐较高的位位置。插播一句,flit是flow control unit的缩写,flit是最小的流控单元,也是链路层的传输单元。• 如果有效的数据头被打包在给定的槽中,则下一个可用于数据传输的槽(槽1、槽2、槽3 或全数据片)将保证具有与头相关联的数据。例如,请参阅图 48,其中时隙 H3 可能没有指示空时隙的有效位集,但第一个和第二个通用时隙(示例中的 G1 和 G2)可能具有混合的有效位集。原创 2024-03-14 10:59:28 · 2102 阅读 · 0 评论 -
【CXL协议-电源管理(10)】
举例来说,在设备上可能包含共享高带宽内存 (HBM) 的情况下,当处理器控制系统的 DDR 时,如果设备希望能够进入低功耗状态,则必须考虑 考虑处理器访问 HBM 内存的需要。同样,如果处理器想要进入低功耗状态,则必须考虑设备访问 DDR 的需要等。值得注意的不同的是,对于CXL物理层,物理层电源的进入和退出托管状态由 CXL ARB/MUX 指导。设备传送的 LTR 值标记为 MEM_LTR,代表其对 CXL.cache 访问的延迟容忍度,并且可能与通过 CXL.io 上的 LTR 消息传送的内容不同。原创 2024-03-14 16:23:09 · 1435 阅读 · 2 评论 -
【CXL协议-系统架构】
CXL的关键目标是为主机提供一种将操作数推入设备挂载内存的方法,并为主机提供从设备挂载内存中提取结果的方法,这样就不会增加抵消加速器好处的软件和硬件成本。在设备偏向模式下,设备负责工作提交和完成。但是,设备对此内存的访问效率不是最佳的,因为需要通过主机,如图中的绿色箭头所示,设备先向主机发起请求,然后通过主机来访问HDM。总结来说,Type 1 CXL设备适用于具有完全一致性缓存的设备,通过支持基本缓存一致性和使用CXL.cache协议,加速器可以实现各种排序模型,并且能够执行大量的原子操作。原创 2024-03-15 15:11:14 · 3751 阅读 · 1 评论