PCIe扫盲——PCIe错误源详解(一)

77 篇文章 83 订阅
74 篇文章 78 订阅

这篇文章来详细地分析一下各种错误源的产生原理,由于内容较多,因此分为两篇文章。第一篇介绍一下ECRC校检错误和Data Poisoning等;第二篇文章介绍事务(Transaction)错误、链路流量控制(Link Flow Control)相关的错误、异常的TLP(Malformed TLP)以及内部错误(Internal Errors)等。

  • ECRC

前面的文章中提到过,ECRC是可选的,主要用于包含有Switch的PCIe总线系统中。且只有支持AER的PCIe设备才有能力支持ECRC功能。配置软件通过检查配置空间,确认PCIe设备的某个功能(Function)支持ECRC后,可以通过向错误功能控制寄存器(Error Capability and Control Register)中的响应为写0或者1来禁止或者使能ECRC功能。

如果使能了ECRC功能,可以通过TLP包头中的TD(TLP Digest,ECRC也被称为Digest)为来标记当前的TLP是否使用ECRC,如下图所示。需要特别注意的是,如果TD为1(表示使用ECRC),但是TLP中却没有ECRC;或者TD为0,TLP中却包含了ECRC,则会被判定为TLP格式错误,即Malformed TLP错误。

image.png

ECRC是基于TLP的包头和数据(Header and Data Payload)计算的,接收端会重新基于这些内容计算并与收到的TLP中的ECRC(发送端计算的)作对比,如果不一致,则认为数据传输过程中发生了问题,数据被破坏了,进而产生ECRC校检错误。需要注意的是,在TLP包头中,有两位实际上是不参与ERCR计算的——Type域的bit0和EP位。这两位通常被称为Variant bits,且在ECRC计算的时候,这两位的对应位置始终被认为是1,而非使用实际的数值。

当接收端(Completer)接收到的请求(Request)TLP中存在ECRC校检错误时,接收端通常会选择不对该请求发送返回TLP(Completion),并将ECRC错误状态位(配置空间中的)置位。发送端由于长时间未接收到Completion,进而会产生Completion超时错误(Timeout Error)。而大部分发送端,会选择重新发送先前的请求Request。

当发送端(Requester)在发送完请求后收到了来自接收端返回的TLP(Completion)时,却发现该Completion TLP中存在ECRC校检错误,会将ECRC错误状态位(配置空间中的)置位。发送端可以选择重新发送先前的请求Request,还可以选择通过特殊功能中断(Function Specific Interrupt)向系统报告错误。

以上两种情况中,如果使能了错误消息报告功能的话,不可校正的非致命错误消息(Uncorrectable Non-fatal Error Message)会被发送至系统。

  • Data Poisoning(Poisoned Data or Error Forwarding)

Data Poisoning也被称为错误传递(Error Forwarding),指的是在已知TLP Data Payload被破坏(Corrupted)的情况下,该TLP仍然被发送至其他的PCIe设备。此时,该TLP包头的EP位(Error Poisoned)被置位为1,表明该TLP已经被破坏。如下图所示:

image.png

有人可能要有疑惑了,你既然都已经知道该TLP Data Payload被破坏了,为什么还要再将其进一步传递呢?实际上,这样做主要是针对某些特殊的应用的:

☆    便于发送端(Request)和系统分析错误:假设发送端(Request)向接收端(Completer)发送了读数据请求,接收端从某个内存设备中读取数据后通过Completion返回数据给发送端。但是在此过程中发生了错误,接收端(Completer)因此不向发送端(Request)返回Completion,则发送端只会产生Completion Timeout错误,却难以分析错误原因。如果接收端返回Poisoned Completion TLP给发送端(TLP包头中EP为1),则发送端至少可以确认接收端正确地接收到了其发出的请求(Request)。

☆    便于发现Switch(或其他桥设备)中的错误:假设TLP中的Data Payload是在Switch中被破坏的,采用错误传递的方式有助于发现该错误。

    有些应用允许接收存在错误的数据:比如实时的音频或者视频传输,其宁可接收到有些许错误的数据,也需要尽量保证数据传输的实时性。

    数据可能通过应用层恢复:有些应用可能采用了特殊的编码 ,该编码可以恢复某些被破坏的数据(如ECC可恢复1位的错误)。

需要特别注意的是,错误传递(Data Poisoning or Error Forwarding)只是针对TLP中的Data Payload是否被破坏,和TLP包头的内容无关。也就是说错误传递只是针对那些带有Data Payload的TLP的,如Memory、Configuration、I/O写或者带有返回数据的Completion。PCIe Spec没有定义对没有Data Payload的TLP,其TLP包头中的EP却为1的情况,应当如何处理。

注:需要注意的是,Poisoning操作只能在事务层进行。原因很简单:数据链路层和物理层在任何情况下,都不会检查TLP包头的内容,更不会修改TLP包头。

注:原文最早发表于本人的ChinaAET博客(http://blog.chinaaet.com/justlxy/

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PCIE是指PCI Express的缩写,即“PCI扩展”或“快速外设接口”。 PCIe是一种高速串行总线技术,用于在计算机系统中连接和传输数据的外部设备。它是PCI(Peripheral Component Interconnect,外围部件互连)接口的一种演进,旨在提供更高的带宽和更快的数据传输速度。 PCIE规范定义了PCIE接口的硬件和软件传输协议。根据规范,PCIE接口可以有不同的物理连接形式,如PCIE x1、PCIE x4、PCIE x8和PCIE x16,它们分别提供不同的带宽和性能。 PCIE接口除了用于连接图形卡外,还可以用于连接其他外设,如硬盘控制器、网络适配器、音频接口等。它提供了高速、可靠的数据传输通道,可以满足现代计算机系统对数据处理和通信的要求。 PCIE接口的特点包括高带宽、较低的延迟、热插拔支持和更强的数据完整性。它采用了差分信号传输、流控制和数据包传输等技术,可以实现更高的数据传输速度和更稳定的连接质量。 PCIE规范不断演进和更新,以适应新的技术和应用需求。当前流行的版本包括PCIE 3.0和PCIE 4.0,它们分别提供更高的带宽和更快的数据传输速度。随着技术的不断进步,PCIE接口将继续发展,为计算机系统提供更强大的外设连接能力。 ### 回答2: PCIe(Peripheral Component Interconnect Express)是一种计算机总线标准,用于连接主板和扩展卡。它是由PCI SIG(Peripheral Component Interconnect Special Interest Group)组织制定的,并于2004年发布。 PCIe规范定义了一套高速、可靠和可扩展的串行接口,用于传输数据和控制信号。它是一种面向点对点连接的总线结构,每个PCIe设备都有自己的独立通信通道,可以同时进行全双工的数据传输。 PCIe规范支持多种速度等级,包括2.5 Gbps、5 Gbps、8 Gbps和16 Gbps等。同时,它还允许多个信道(lane)的并行传输,每个信道可以实现上述速度级别。例如,PCIe x1指的是一个通道,最大传输速率为2.5 Gbps,而PCIe x16则指的是16个通道,最大传输速率为16 Gbps。 PCIe规范还提供了一套灵活的IOV(IO Virtualization)机制,允许虚拟化技术将一个物理设备虚拟为多个逻辑设备,每个逻辑设备都可以独立地访问和控制。这为服务器虚拟化和云计算等场景提供了更高的灵活性和利用率。 此外,PCIe规范还提供了一套强大的错误检测和纠正机制,能够通过校验和、错误码等方式检测和纠正数据传输中的错误,确保数据的可靠性。 总而言之,PCIe规范是一种先进的总线标准,具有高速、可靠、扩展性和灵活性等优点,被广泛应用在计算机系统和其他电子设备中,用于连接各种扩展卡,如显卡、网卡、存储控制器等。 ### 回答3: PCIe(Peripheral Component Interconnect Express)是一种计算机总线标准,用于在计算机系统中连接外部设备和扩展卡。它是由PCI-SIG(PCI Special Interest Group)组织制定和维护的。 PCIe规范定义了一种高速、低延迟的串行数据传输接口,可用于连接图形卡、硬盘控制器、网卡、声卡等各种外设。与之前的PCI(Peripheral Component Interconnect)标准相比,PCIe提供了更高的数据传输速度和带宽。 PCIe规范支持多种不同的物理连接形式,包括x1、x2、x4、x8和x16,并且可以通过使用多个连接口进行扩展。每个连接口都可以提供独立的数据通道,从而实现更高的带宽和并行传输。 PCIe规范还包括一系列电气特性和协议规范,以确保数据的稳定传输和设备的互操作性。其中包括差分信号传输、时钟同步、数据报文格式等。 PCIe规范的发展也在不断推进中,不断增加新的特性和功能。例如,PCIe 4.0增加了数据传输速度,提供更高的吞吐量;PCIe 5.0进一步提升了数据传输速度,达到更高的性能水平。 总之,PCIe规范是一种广泛应用于计算机系统中的高速数据传输接口标准,通过提供更高的速度和带宽,为各种外部设备和扩展卡的连接提供了更好的性能和扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值