第八章 控制和状态寄存器
略,与DVSEC相关的寄存器描述。不想再解释什么是DVSEC了。第九章 复位,初始化、配置和可管理性
9.1 CXL启动和复位概览
9.1.1 总体
Hot reset:通过链路触发
Warm reset:通过外部信号触发
- Cold reset:通过外部信号触发,并伴随电源开关
这三种复位被归纳为传统(Conventional)复位。Function级复位和CXL复位不是传统复位。9.1.2 对比CXL和PCIe行为
9.2 CXL设备启动流程
CXL设备将沿用PCIe的Warm reset和Cold reset。在系统复位过程中,主机发送下列CXL PM VDM给CXL设备。•PM Logical Opcode[7:0]=RESETPREP
•Parameter[15:0]=REQUEST
•ResetType = Warm Reset
CXL设备应向主机刷新任何相关上下文,清理为主机服务的数据,并将连接到CXL设备的内存置于安全状态。所有复位准备完成后,CXL设备发出下列CXL PM VDM给主机。•PM Logical Opcode[7:0]=RESETPREP
•Parameter[15:0]=RESPONSE
•ResetType = Warm Reset
9.5 Function-level复位(FLR)PCIe的FLR机制使软件能够以Function-level粒度停止和复位Endpoint硬件。CXL设备向主机软件公开一个或多个PCIe Function。这些Function可以向主机呈现FLR能力,从而现有的PCIe兼容软件可以向这些Function发出FLR。9.6 缓存管理
旧有的操作系统或旧有的PCIe总线驱动程序不知道CXL.cache功能。所以,设备驱动程序应该提供CXL.cache功能的支持,以管理CXL缓存。系统软件可能希望在不复位系统或整个设备的情况下,确保支持CXLcache的设备不包含任何有效的缓存行。由于不需要设备通过FLR清除缓存内容,因此为此定义了单独的控制位和状态位。此功能对于所有支持CXL 2.0
CXLcache的设备都是必需的。软件通过下面的步骤保证设备内没有有效的缓存行:9.7.1 对易失性HDM的影响
由于易失性HDM(Host-managed
Device Memory)范围的所有权可能在CXL复位后发生变化,因此必须确保CXL复位之前存在的易失性内存内容没有泄漏。设备继续绑定到同一主机,但是系统软件将易失性HDM分配给其它的软件实体。
9.7.2 软件动作
9.8 全局持久刷新(Global Persistent Flush,GPF)全局持久性刷新(GPF)是一种基于硬件的机制,用于将缓存和内存缓冲区刷新到持久性域(Persistent Domain)。持久性域定义为一个位置,用于保证重新启动设备时保留其数据内容,而不是丢弃数据。比如,当发生突然断电,主机可以启动GPF以确保未完成的数据被写回持久介质中。9.8.1 主机和交换机职责
所有支持CXL 2.0的主机和交换机都需要支持GPF。GPF流程包含两个阶段:GPF Phase
1和GPF Phase 2。在Phase 1,设备停止新的传输,写回缓存;在Phase 2,持久性设备刷新本地的写缓冲区里的数据到持久性域。在两个阶段之间,主机必须确保停止注入新的CXL.cache事务,并在进入Phase 2之前写回到本地缓存。9.8.2 设备职责
所有CXL 2.0及更高版本的设备都需要支持GPF,且应在其AGENT_INFO响应中设置CAPABILITY_VECTOR字段的第1个bit。收到GPF Phase 1请求消息后,CXL设备应按指定顺序执行以下步骤:收到GPF Phase 2请求消息后,CXL设备应按指定顺序执行以下步骤:通常有必要评估系统是否有足够的能量在断电情况下处理GPF。系统软件可能会通过使用各种CXL DVSEC寄存器中的可用信息,和系统其余部分的信息来确定。9.9 热插拔
CXL 1.1主机和CXL 1.1设备不支持热插拔。CXL 2.0根端口、CXL 2.0设备和CXL交换机需要支持Hot-Add和Hot-Remove。9.10 软件枚举
CXL 2.0设备呈现给主机软件的是一个或多个PCIe Endpoint。CXL 1.1设备则呈现为RCiEP(Root Complex Integrated Endpoints)。CXL设备的发现遵循PCIe规范,但CXL
1.1层次结构和CXL 2.0虚拟层次结构之间存在一些差异。9.11 CXL 1.1 层次
9.12 CXL 2.0 枚举
支持CXL 2.0的主机可以在系统软件中表示为零个或多个CXL 2.0主机桥(Host Bridge),零个或多个CXL 1.1主机桥,零个或多个PCIe主机桥。主机桥是一种软件概念,它表示根端口的集合。9.12.1 CXL 2.0根端口(Root Port)
每个CXL 2.0主机桥与基本总线号(Base
Bus Number)关联,该总线号应包含一个或多个支持CXL 2.0的根端口。这些根端口显示在PCIe配置空间中。根端口可以处于以下四种状态之一:1. 断开连接
2. 连接到CXL 2.0设备/交换机
3. 连接到CXL 1.1设备
9.12.2 CXL 2.0虚拟层次
在CXL 2.0模式下运行的根端口可以直接连接到CXL 2.0设备或CXL交换机。这些根端口形成CXL 2.0虚拟层次结构(Virtual Hierarchy,VH)。9.12.3 枚举支持CXL 2.0的下游端口
软件可以使用下游端口配置空间中的Link Status寄存器和CXL DVSEC ID 7结构的组合来确定具有CXL 2.0功能的下游端口处于哪个状态。其它内容暂时略。
HDM作为正常存储呈现给OS/VMM,但是与主机内存相比,HDM可能具有不同的性能/延迟属性。因此,具有CXL.mem设备的系统可以被视为异构存储器系统。ACPI HMAT表是为此类系统引入的,可以报告不同内存范围的延迟和带宽特性。9.13.1 内存交织
内存交织允许以统一的间隔将连续的内存地址映射到不同的CXL设备。9.13.2 CXL内存设备标签存储区
9.14 CXL OS固件接口扩展
9.14.1 CXL Early Discovery Table
(CEDT)
CXL早期发现表(CXL Early
Discovery Table)使操作系统能够在启动期间的早期,即在分析ACPI命名空间之前,找到CXL主机桥和主机桥寄存器的位置。此表中的信息可由早期启动代码用于执行CXL主机的预初始化,例如配置CXLcache和CXLmem。9.15 CXL设备可操作性模型(Manageability Model)可管理性是被管理实体向管理实体公开的一组功能。CXL设备是被管理实体。这些能力通常分为sensor和effector。性能计数器是sensor的一个示例,而更新设备固件的能力是effector的一个示例。Sensor和effector可以在带内(即通过驻留OS/VMM的软件)访问,也可以在带外(即通过运行在独立于OS的管理控制器上的固件)访问。带内软件可以通过发出PCIe配置读/写或MMIO读/写事务来访问CXL设备的可管理性功能。S0状态下的带外可管理性可以在PCI Express基础架构上利用MCTP。