第十章 电源管理
10.1 要求声明
CXL电源管理分为特定协议的链路电源管理和CXL物理层电源管理。ARB/MUX层负责管理链路两侧的特定协议的链路电源管理。ARB/MUX还负责协调链路两侧的电源管理状态,整合电源状态,并驱动物理层电源管理。
10.2 基于策略的运行时控制-空闲电源-协议流
10.2.1 概括
CXL提出一种分层电源管理架构。设备在本地完成热(thermal)和电源管理,并与处理器协调状态。设备通过在CXL上发送供应商定义的消息来完成与处理器协调状态转换。主机上的电源管理控制器和设备之间的协调最好通过PM2IP和IP2PM消息来完成。
10.2.2 封装级IDLE(C-state)进入和退出协调
只要系统内的其它组件需要其存储器资源,则设备和处理器都不能单独进入低功率状态。比如,设备中包含有HBM,处理器负责管理系统DDR,在这种情况下,如果设备希望能够进入低功耗状态,则必须考虑处理器是否还需要访问设备中的HBM。同样,如果处理器想要进入低功耗状态,它必须考虑设备访问DDR的需求。CXL利用LTR完成上述需求,设备向处理器通知其关于DDR的LTR,并且处理器向设备通知其关于HBM的LTR。具体规则不展开了。
LTR(Latency Tolerance Reporting)是PCIe规范中的一种电源功率优化机制,留到讲PCIe的时候再说。
1. CXL设备发送PMReq.Req
2. 处理器响应请求,返回PMReq.Rsp
3. 处理器发送PMReq.Go
4. 设备启动CXL转换到L1
5. 处理器确认L1转换
10.2.4 PkgC退出流程
10.2.5 CXL物理层电源管理状态
CXL物理层支持PCI Express基本规范中定义的L1和L2状态。CXL物理层不支持L0s。这些状态的进入和退出条件在PCI Express基本规范中定义。不同的是,对于CXL物理层,物理层电源管理状态的进入和退出由CXL ARB/MUX控制。
10.3 CXL电源管理
CXL链路电源管理支持主动链路状态电源管理(Active Link State Power Management),L1和L2是唯一受支持的两种电源状态。PM进入/退出流程进一步分为3个阶段。
10.3.1 CXL电源管理Entry Phase 1
CXL电源管理进入Phase 1涉及特定于协议的机制,以协商进入PM状态。一旦满足协议部分中定义的进入PM状态的条件,事务层可以进入Phase 2,并指示ARB/MUX进入PM状态。
10.3.2 CXL电源管理Entry Phase 2
当事务层指示进入PM时,Phase 2的进入过程由ARB/MUX启动。PM进入Phase 2包括将链路两侧的ARB/MUX接口置于PM状态。该进入PM状态的过程使用ALMP进行协调。Phase 2是为每个协议独立管理的。物理层继续处于L0状态,直到所有事务层都进入Phase 2状态。
10.3.3 CXL电源管理Entry Phase 3
Phase 3是PM入口的条件阶段,仅当ARB/MUX的所有协议接口都进入相同的虚拟PM状态时才执行。该阶段包括使Tx通道处于电气空闲(Electrical Idle)状态,并且始终由下游部件启动。
电气空闲是PCIe规范中定义的一种低功耗状态。
10.3.4 CXL从ASPM L1退出
链路两端的组件都可以发起ASPM L1退出。ASPM L1退出过程取决于是在Phase 3还是Phase 2.
Phase 3的ASPM L1退出与PCIe基本规范中定义的从L1状态退出相同,遵循这些步骤,直到LTSSM达到L0状态。在ARB/MUX接口上的虚拟LSM退出L1状态之前,不允许交换协议级信息。
Phase 2的退出涉及使ARB/MUX处的协议接口独立地脱离L1状态。
10.4 CXL.io链接电源管理
10.4.1 CXL.io ASPM Phase 1 Entry
10.4.2 CXL.io ASPM Phase 2 Entry
暂时略过
10.4.3 CXL.io ASPM Phase 3 Entry
暂时略过
10.5 CXL.cache CXL.mem链路电源管理
与CXL.io不同,CXL.cache和CXL.mem仅支持主动链路状态电源管理,在链路层之间没有定义PM条目握手。每一方独立地请求ARB/MUX进入L1。链路两侧的ARB/MUX层使用ALMP协调进入PM状态。
总结:这章内容貌似简单,实则内容繁多,大多数的基本概念在PCIe规范中。