转载地址:http://blog.chinaaet.com/justlxy/p/5100057782

前面的文章提到过,PCI总线中定义两个边带信号(PERR#和SERR#)来处理总线错误。其中PERR#主要对应的是普通数据奇偶校检错误(Parity Error),而SERR#主要对应的是系统错误(System Error)。具体如下:

·         普通的数据奇偶校检错误——通过PERR#报告

·         在多任务事务(Multi-task Transaction,又称为Special Cycles)时的奇偶校检错误——通过SERR#报告

·         地址和命令的奇偶校检错误——通过SERR#报告

·         其他错误——通过SERR#报告

一个简单的例子如下图所示:

PCIe作为一种高速串行总线,取消了PCI总线中的这两个边带信号,采用错误消息的方式来实现错误报告。但是,在软件层面上,PCIe仍是兼容PCI总线的,具体后面会详细描述。

在PCIe总线的错误报告机制中,有如下四个比较重要的概念:

·         错误检测(Error Detection):指的是检测某个错误是否存在的过程。

·         错误登记(Error Logging):指的是将相关寄存器(配置空间中的)的对应为置位,以等待软件中的相关错误处理程序来处理该错误。

·         错误报告(Error Reporting):通知系统某个(或多个)错误发生了。在PCIe总线中,发生错误的设备会通过错误消息(Error Message)逐级将错误信息发送至Root,Root接收到错误消息后,会产生对应的中断通知系统。

·         错误发送(Error Signaling):指的是通过发送错误消息(或者带有UR,CA的Completion和Poisoned TLP)来传递错误信息的过程。

注:“带有UR,CA的Completion”在前面的文章中介绍过,不熟悉的可以回顾一下。“Poisoned TLP”是PCIe总线错误报告机制中的Error Forwarding的方式,具体会在后面详细介绍。

PCIe总线Spec定义了两个错误报告等级。第一个为基本的(Baseline Capability),是所有PCIe设备都需要支持的功能。第二个是可选的,称之为高级错误报告(Advanced Error Reporting Capability)。

在基本的错误报告机制中,有两组相关的配置寄存器(配置空间中),分别为:

·         兼容PCI总线的寄存器(PCI-compatible Registers)

·         PCIe总线中新增的寄存器(PCI Express Capability Registers)

高级错误报告机制(AER)中,又使用了一组专用的配置寄存器(配置空间中)。借助AER可以获得更多的错误信息,有助于软件定位错误源和分析错误原因。

PCIe总线的错误可以分为(Correctable Errors)和不可校正错误(Uncorrectable Errors)。其中,可校正错误可以自动地被硬件识别并被自动的校正或恢复。而不可校正错误又被分为非致命的(Non-Fatal)和致命的(Fatal)。非致命的错误一般有设备驱动软件(Device Specific Software)直接处理,且链路(Link)可恢复,甚至链路上的数据有可能得到恢复(不丢失数据)。致命的错误只能由系统软件(System Software)处理,且一般需要进行复位等操作,因此链路上的数据必然会丢失。

最新文章

  1. 使用CSS修改HTML5 input placeholder颜色
  2. php文件上传大小限制设置
  3. C语言对数组取地址
  4. 【nodejs学习】0.nodejs学习第一天
  5. ajax+json+java
  6. PHP把数字ID转字母ID
  7. leetcode415---字符串大数相加
  8. HDOJ1312<DFS>
  9. (转)Linux 下 查看以及修改文件权限
  10. HTML5新增属性data-*和js/jquery之间的交互
  11. 所谓编码--泛谈ASCII、Unicode、UTF8、UTF16、UCS-2等编码格式
  12. 利用阿里云Centos7建站过程
  13. 【VS2015】链接器错误link2001
  14. springboot整合视图层之Thymeleaf
  15. CSS注意点
  16. 记录:工作中用到的Js日期时间方法
  17. tinycc update VERSION to 0.9.27
  18. 【题解】Luogu P1648 看守
  19. tomcat加载web项目报错:bad major version at offset=6
  20. 20145310《网络对抗》Exp2 后门原理与实践

热门文章

  1. Maven专题2——聚合与继承
  2. 可选链运算符、空值合并运算符 --应用到vue项目
  3. Java集合:HashMap
  4. PHP中的文件系统函数(三)
  5. Java基础系列(33)- 计算器
  6. PC+PLC通过Modbus协议构建工控系统
  7. Postman 如何调试加密接口?
  8. 自动化测试报告----allure2(一)
  9. linux环境下,使用Navicat连接mysql时,提示本地IP无法连接虚拟环境下的mysql解决方案
  10. Dapr + .NET Core实战(六)绑定