• PCIE笔记--PCIe错误定义与分类


    转载地址: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#报告

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

    image.png

    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)处理,且一般需要进行复位等操作,因此链路上的数据必然会丢失。

  • 相关阅读:
    git 使用规范
    备忘 Sim联合Python仿真接口
    HMM 隐马尔可夫模型 MATLAB
    Smoothed Zscore Algorithm 数据异常点算法
    服务器部署备忘
    关于string的indexof方法的试验
    关于命令模式的一些理解
    关于字符串效率问题
    随记一下 关于域用户的AD验证
    关于异步委托的部分理解
  • 原文地址:https://www.cnblogs.com/jason20/p/13176360.html
Copyright © 2020-2023  润新知