9.5 功能级重置 (Function Level Reset, FLR)

  1. FLR 是什么?(PCIe 的标准机制)

功能级重置 (FLR) 是 PCIe 基础规范中定义的一种软件机制,它允许软件以“功能 (Function)”为粒度,对一个物理设备(Endpoint)中的特定硬件功能进行隔离和重置,而无需重置整个设备。

由于 CXL 设备会向主机软件暴露一个或多个标准的 PCIe 功能,因此这些功能也可以支持 FLR。这意味着,现有的、与 PCIe 兼容的软件(如操作系统驱动)可以像对待普通 PCIe 设备一样,对 CXL 设备中的某个功能发起 FLR。

  1. FLR 在 CXL 中的核心限制:不影响 CXL.cache 和 CXL.mem

这是本章节最关键的架构性说明。对于一个同时支持 CXL.io、.cache、.mem 的复杂 CXL 设备来说,FLR 的作用范围是有限的

一个 FLR 不会影响 CXL.cache 和 CXL.mem 协议层。

具体来说,以下部分不受 FLR 的影响:

这个限制是 CXL 引入新的“CXL Reset”机制 (在 9.7 节中描述) 的根本原因。因为仅靠 FLR,软件无法重置和恢复设备的缓存和内存一致性逻辑。

  1. FLR 的实际影响

既然 FLR 不影响 .cache 和 .mem,那它究竟做了什么?

  1. FLR 用于错误恢复的范围

软件有时会尝试使用 FLR 来从错误中恢复设备。在 CXL 环境下,其适用范围非常明确:

  1. 强制性设计要求

为了确保软件总有一种方法来重置功能,规范提出了一个强制要求:

总结

总而言之,9.5 节 明确了 FLR 是一种仅作用于 CXL 设备中 PCIe 功能层 (CXL.io) 的重置机制。它对于管理和恢复 CXL.io 域非常有用,并且保持了与现有 PCIe 生态的兼容性。然而,它的核心局限在于完全无法触及 CXL.cache 和 CXL.mem 的协议状态和逻辑。因此,系不能依赖 FLR 来处理与内存一致性或设备端内存相关的任何问题,而必须使用 CXL 规范中定义的其他特定机制,如 CXL Reset。

zood