Error Classification
PCI Express错误可分为两类:不可纠正错误(Uncorrectable errors)和可纠正错误(Correctable errors)。
这种分类将导致功能故障的错误与导致性能下降的错误区分开来。
无法纠正的错误(Uncorrectable errors)可进一步分为致命错误(Fatal)或非致命错误(Non-Fatal)
错误严重性分类为致命、不可纠正和可纠正,为平台提供了将错误映射到适当处理机制的机制。
例如,平台可能会选择使用低优先级的性能监控软件来响应可纠正的错误。
这样的软件可以计算可纠正错误的频率并提供链路完整性信息。
另一方面,平台设计者可能会选择将致命错误映射到系统范围的重置。
将这些PCI Express严重性级别映射到平台级严重性是平台设计者的决定
Correctable Errors
可纠正的错误包括硬件可以在没有任何信息丢失的情况下恢复的那些错误条件。硬件纠正这些错误,不需要软件干预。
例如,TLP中的LCRC错误可能会通过数据链路级别重试进行更正,该错误被视为可更正错误。测量链路级可纠正错误的频率可能有助于分析链路的完整性。
可纠正的错误还包括事务级别的情况,其中一个代理检测到TLP的错误,但另一个代理负责在需要时采取任何恢复操作,例如使用单独的后续事务重新尝试操作。检测代理可以被配置为报告错误为可纠正的,因为恢复代理可能能够纠正错误。
如果确实需要恢复操作,则如果恢复代理决定不尝试恢复,则恢复代理必须将错误报告为不可纠正。
下游端口控制(DPC)的触发不作为错误处理,但可以将其作为可纠正错误来发送信号,因为利用DPC的软件有时可以从触发DPC的不可纠正错误中恢复。
Uncorrectable Errors
不可纠正的错误是那些影响界面功能的错误条件。
范中没有定义任何机制来纠正这些错误。报告不可纠正的错误类似于在PCI/PCI-X中的SERR#。
为了使系统能够更稳健地处理错误,将不可纠正的错误分为致命错误和非致命错误。
Fatal Errors
致命错误是指导致特定链路和相关硬件不可靠的无法纠正的错误情况。对于致命错误,可能需要重置链路上的组件才能恢复可靠运行。平台对致命错误的处理,以及限制这些错误影响的任何努力,都是特定于平台实现的。
Non-Fatal Errors
非致命错误是指无法纠正的错误,这些错误会导致特定事务不可靠,但链路在其他方面是完全正常的。将非致命错误与致命错误隔离为设备或系统管理软件中的请求方/接收方逻辑提供了从错误中恢复的机会,而无需重置链路上的组件和干扰正在进行的其他事务。与出错事务无关的设备不受该错误的影响。