发布网友
共1个回答
热心网友
PCI Express(PCIe)的错误报告和处理机制包括两种范式:baseline capability 和 Advanced Error Reporting Capability。baseline范式是所有PCIe设备必须具备的最低限度错误报告能力,而Advanced范式则提供了更强大的错误报告功能,通过特定的PCIe能力结构实现。
PCIe错误分为两类:不可纠正错误和可纠正错误。不可纠正错误又细分为致命和非致命两种。致命错误影响特定链路和相关硬件的可靠性,可能需要对链路上的组件进行复位。非致命错误则导致特定事务变得不可靠,但链路本身仍可用。将错误分类有助于系统更有效地处理和恢复。
致命错误与非致命错误的区别在于,前者导致硬件不可靠,可能需要复位,而后者可能导致某个事务不可靠,但不影响整个链路的正常运行。这一区分允许系统在不干扰其他正在进行的事务的情况下,从错误中恢复。
PCIe错误信号通过三种机制实现:完成状态、内部错误消息和错误转发(数据中毒)。完成状态是通过完成头部完成的,其中包含请求完成状态的信息,用于指示请求是否成功完成或出现了错误。内部错误消息用于报告检测到的错误情况,而错误转发机制允许将错误与特定的请求或完成关联,从而提高错误报告的精确度。
在高级错误报告功能中,“不可纠正错误严重性”寄存器允许将每个不可纠正的错误设置为致命或非致命。这为设备提供了更灵活的错误处理能力。同时,错误可以通过屏蔽寄存器地被屏蔽,以控制哪些错误需要报告,满足特定的错误处理需求。
错误污染是当给定事务的错误未被隔离时发生的现象。数据链路层和事务层会避免报告同一数据包的后续错误,以避免错误传播并导致上层出现错误。已纠正的内部错误不会导致错误污染,且应报告。优先级顺序指导错误报告,例如在检测到非致命错误时应使用Advisory Non-Fatal Error Cases处理。
在特定情况下,如软件尝试执行配置读取操作时,非致命错误的检测器可能不确定错误是否可恢复,或是否需要任何恢复动作。此时,错误应该根据严重性分类进行处理。
在发送Completion时,如果包含Unsupported Request或Completer Abort状态,则表示non-post请求的不可纠正错误。对非致命错误,系统应将之作为Advisory Non-Fatal Error Cases处理。错误转发机制允许将错误与特定请求或完成关联,提高错误报告的精确度。
PCI Express错误报告和处理机制通过上述详细分类和机制实现高效、灵活和精确的错误管理,确保系统在遇到错误时能够快速识别、隔离和恢复,从而提高整体系统性能和可靠性。