PCIe错误报告机制

news2024/11/24 19:18:30

1 PCIe两种错误报告机制

Baseline Error Reporting (基线错误报告):
这是所有PCIe设备必须支持的基本错误报告机制。基线错误报告提供了一组基本的错误检测和报告功能,它包括的功能有:

错误检测:能够检测到不同类型的错误,例如数据传输错误、信号完整性问题和协议违规等。
错误日志记录:捕获错误发生时的相关信息,并将这些信息存储在设备的配置空间的特定寄存器中。
错误指示:使用PCIe能力结构中的Status位来指示已检测到一个或多个错误。
该机制主要关注在系统中的关键和必须报告的错误,从而确保系统具有最基本的错误处理能力。

Advanced Error Reporting (AER,高级错误报告):
AER是一种可选的错误报告机制,为了能更详尽地检测、报告和管理错误而设计。AER提供了比基线错误报告更细粒度的错误检测和报告能力,这包括:

更详细的错误分类:AER能够识别和区分更多种类的错误,比如不可靠的数据传输、内部错误、头部日志信息等。
准确的错误定位:它能帮助系统确定错误发生在哪个具体的端点或链路上,这使得故障排除和维护工作更为直接和高效。
错误源标识:记录和报告引发错误的具体设备。
错误日志扩展:提供比基线错误报告更多的错误日志和信息记录,这有助于后续分析和问题解决。
可控的错误响应:允许系统管理员或管理软件来配置错误响应策略,比如根据情况决定是否忽略某些错误,或执行特定的恢复操作。

2 PCIe错误报告分类

在这里插入图片描述
由上图可知PCIe错误报告分类可分为可更正错误 (Correctable Errors) 和不可更正错误 (Uncorrectable Errors)。这两种错误类型反映了错误的严重性以及系统能否在不影响运行的情况下修复错误
可更正错误 (Correctable Errors):
可更正错误是指那些不会对系统的数据完整性造成影响,可以在不通知操作系统的情况下自动修复的错误。PCIe设备或交换机检测到这类错误后,通常会尝试自我修正,并可能记录错误事件以供之后分析。这种错误通常是由于瞬态问题,比如电磁干扰或小的信号完整性问题所引起的。PCIe中一些可更正错误的例子包括:

接收器错误 (Receiver Errors)
恢复的数据链路层错误 (Recovered Data Link Layer Errors)
坏的TLP (Bad TLP):Transaction Layer Packets传输结构错误,但被接收方成功解决。
坏的DLLP (Bad DLLP):Data Link Layer Packets传输结构错误,但被成功解决。
REPLAY_NUM Rollover:来自发出方的REPLAY_NUM计数器溢出,但成功被管理。
即使这类错误被认为是可更正的,设备仍会记录这些错误的发生,通常在相应的状态寄存器或错误日志中。这些日志信息可以帮助系统管理员识别和解决潜在的问题。

不可更正错误 (Uncorrectable Errors):
不可更正错误是指那些不能自动修正,且可能影响系统数据完整性或正常运行的错误。这些错误是更为严重的错误类别,通常需要操作系统或系统管理员介入来解决。不可更正错误会被系统记录下来,并通过中断或其他方式报告给操作系统或错误管理软件来采取恰当的错误恢复措施。根据PCIe规范,不可更正错误可以进一步细分为可致命 (Fatal) 和不可致命 (Nonfatal) 错误。以下是一些不可更正错误的例子:
数据包完整性错误 (Packet Integrity Errors)
流控制协议错误 (Flow-Control Protocol Errors)
坏的TLP (Bad TLP):传输结构错误,且未被接收方成功解决。
坏的DLLP (Bad DLLP):传输结构错误,且未被成功解决。
超时错误 (Timeout Errors):需要的响应在指定时间内未被接收。
已完成的TLP缓冲器溢出 (Completion Timeout on Buffered TLPs)
ECRC (End-to-end CRC) 错误:所检测到的CRC与传输的数据不匹配。

3 PCIe错误转发和报告

PCIe总线有三种错误报告方式,分别是:
Completions(完成):
在PCIe传输中,当一个设备向另一个设备发出请求 (Request) 后,响应 (Response) 通常以Completion TLP (Transaction Layer Packet) 的形式返回给请求者 (Requestor)。如果在处理请求过程中发生错误,Completion TLP将包含状态位,指示请求无法成功完成。例如,当被请求的数据无法被读取或写入时,或者请求的地址无效时,可能会返回带有错误指示的Completion TLP。请求者会检查Completion TLP中的状态位来确定操作是否成功或失败。

Poisoned Packet(中毒数据包,又称为错误传递,Error Forwarding):
当设备检测到一个数据错误(如由于信号问题引起的数据损坏),它可以标记相关的Transaction Layer Packet (TLP) 为"Poisoned"。中毒标记意味着在TLP的数据有效载荷中检测到潜在的错误,并将这一信息传递给TLP的接收端。接收设备在接收到中毒TLP后,可以采取适当的措施,这通常意味着不使用这些可疑的数据有效载荷,并根据错误报告策略来处理错误情况,例如向操作系统报告错误。

Error Message(错误消息):
当检测到错误时,设备可以生成一个特殊的TLP,称为错误消息,并将其发送给主机处理器。这些错误消息根据错误类型和严重性分为不同的类别,例如:Correctable Error Message(可更正错误消息)、Nonfatal Error Message(非致命错误消息)和Fatal Error Message(致命错误消息)。错误消息被直接发送到PCIe的Root Complex,并最终由主机处理器处理这些消息。错误消息使得错误能够以标准化的方式被上报给系统软件,由软件进行进一步处理,如记录错误,通知系统管理员,或采取恢复操作。
这些错误报告方式中,Completions 和 Poisoned Packets 更多用于通讯两端之间的错误通知,而 Error Messages 则提供了一种方法,允许设备将错误信息直接报告给操作系统或硬件错误管理体系。这使得PCIe能够适应不同的错误情况,并提供了丰富的错误处理能力,确保系统的稳定性和数据的可靠性。
错误消息的格式和对应的消息编码如下所示
在这里插入图片描述
在这里插入图片描述

4 PCIe高级错误报告(AER)

高级错误报告(Advanced Error Reporting, AER)是PCIe(Peripheral Component Interconnect Express)规范中一项可选功能,它允许设备提供比基线错误报告机制(Baseline Error Reporting)更详细和全面的错误检测、报告和处理能力。

4.1 AER寄存器结构

配置空间中的AER相关寄存器结构如下图所示:
在这里插入图片描述
ECRC的产生于校检需要AER的支持,相关控制bit位于高级错误功能控制寄存器中,如下图所示:
在这里插入图片描述
其中,最低5bits为当前错误指针(First Error Pointer),当相关错误状态更新时,该指针由硬件自动更新。一般情况下,当前错误指针指向的错误是优先级最高的错误,需要最先被处理的,往往也是其他错误的根源。PCIe Spec V2.1还支持多个错误的追踪(Tracking Multiple Errors)。
图中的ROS、RWS、RO等字符的意义如下:
· RO——只读(Read Only),由硬件控制
· ROS——只读且不被复位(Read Only and Sticky)
· RsvdP——保留且不可以用于其他用途
· RsvdZ——保留且只能被写0
· RWS——可读可写且不被复位(Readable,Writeable and Sticky)
· RW1CS——可读,写1清零,且不被复位
不被复位是指该bit的内容不会因为复位(断电后的上电复位除外)而发生改变。PCIe总线中有多种复位概念,Sticky bit(不被复位的位)不会受到功能层复位(Function Level Reset, FLR)、热复位(Hot Reset)和暖复位(Warm Reset)的影响,甚至不受冷复位(Cold Reset)的影响(当主电源切断后,Vaux等二级电源仍保持正常供电)。

4.2 AER 功能概览:

增强的错误检测:
AER 增加了对不同类型错误的检测能力,允许更精细地检查和区分错误。
详细的错误日志:
当检测到错误时,AER 支持的设备可以记录更多关于错误的上下文信息,包括错误类型、发生位置、涉及数据和可能的原因。
错误状态寄存器:
AER 定义了一系列的寄存器用于记录不同类型的错误状态。这些状态信息有助于系统管理员或软件确定错误的性质和位置。
错误信号:
如果发生错误,设备将发出信号(通常是通过错误消息或中断)来告知主机处理器错误的发生,需要进行错误处理。
AER 错误分类:
AER 将错误分为两大类:
不可更正错误(Uncorrectable Errors):
这种类型的错误通常表明硬件故障或其他严重问题,可能会影响系统的稳定性或数据的完整性。具体包括但不限于以下几种情况:

数据包解码错误(例如,无效的PCIe请求)
传输错误(例如,坏的TLP或DLLP)
响应接收超时
流控制协议违规
完成超时(无法在期望的时间内收到响应)
数据包有效负载的CRC错误(如果启用了端到端ECRC校验)
可更正错误(Correctable Errors):
这些错误可被硬件透明地修正,而不影响数据完整性或系统操作。这些错误可能包括信号或传输间歇错误。例如:
信号错误
数据链路层重传
报头日志溢出
AER 寄存器组成:
AER 定义了一组特定的寄存器来记录错误和协助错误处理,其中包括:
Uncorrectable Error Status (不可更正错误状态)
Uncorrectable Error Mask (不可更正错误屏蔽)
Uncorrectable Error Severity (不可更正错误严重性)
Correctable Error Status (可更正错误状态)
Correctable Error Mask (可更正错误屏蔽)
Advanced Error Capabilities and Control (高级错误能力和控制)
错误日志寄存器,比如 Header Log Register,记录引发错误的数据包头部信息
Root Error Command/Status,用于Root Port记录和管理错误

总结

PCIe的错误报告机制旨在确保系统在错误情况发生时能够迅速反应,减少数据损失和系统中断的可能性。通过结合硬件能力和软件逻辑,它为构建高可靠性计算环境提供了坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV从入门到精通实战(四)——答题卡识别判卷系统

基于OpenCV的答题卡识别系统,其主要功能是自动读取并评分答题卡上的选择题答案。系统通过图像处理和计算机视觉技术,自动化地完成了从读取图像到输出成绩的整个流程。下面是该系统的主要步骤和实现细节的概述: 1. 导入必要的库 系统首先导入…

三、fpga对完成过滤和校验的有效包数据进行有效像素提取、MATLAB对数据源进行处理与下发(完整实现pc机→显示器通信链路)

前言:上篇文章实现了MATLAB模拟发送UDP以太网协议数据包到fpga,能实现双沿数据→单沿数据转换,并将转换后的数据进行包过滤和crc校验,本篇内容要实现真正的从pc机下发视频数据,经过千兆以太网传输存储到fpga 的ddr3中,然后通过hdmi读出到显示屏上。 文章目录 一、模块设…

偏微分方程算法之一阶双曲差分法

目录 一、研究目标 二、理论推导 2.1 引言 2.2 迎风格式 2.3 完全不稳定差分格式 2.4 蛙跳格式(Leapfrog) 2.5 Lax-Friedrichs格式 2.6 Lax-Wendroff格式 2.7 Beam-Warming格式 2.8 隐格式 2.9 Courant-Friedrichs-Lewy条件(CFL条…

apache是什么

​Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译…

【GDAL-Python】3-在Python中使用GDAL处理数字高程模型DEM

文章目录 1-介绍1.1 主要内容1.2 坡度、坡向、山体阴影 2-代码实现2.1 数据介绍2.2 代码实现2.3 效果显示 3.参考资料3.1 使用richdem库中的TerrainAttribute计算坡度、坡向、山体阴影 1-介绍 1.1 主要内容 (1)教程内容:使用GDAL处理数字高…

安装Milvus的可视化工具Attu教程

提供两种方式来安装可视化工具Attu 一、docker安装 # 执行命令,加个 -d 在后台运行 docker run -d -p 8000:3000 -e MILVUS_URL127.0.0.1:19530 zilliz/attu:v2.2.8 至此安装完成! 浏览器输入地址 http:127.0.0.1:8000即可访问 Attu主页 如果拉取最新…

初识若依-项目介绍与部署(前后端分离版)

1-介绍 RuoYi-Vue 是一个 Java EE 企业级快速开发平台, 基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue), 内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码…

Py深度学习基础|Numpy基础总结

注:本文来自菜鸟教程学习总结 一、数组属性 NumPy 的数组中比较重要 ndarray 对象属性有: 注意:使用reshape后,数组的结构(即元素的排列顺序和内在连接)没有改变,但因为返回的是一个视图&#…

修改npm全局安装模式的路径

修改npm全局安装模式的路径 由于之前安装过nodejs,并且配置环境变量以及cache 、prefix 的信息; 由于项目需求安装最新版本的Nodejs,把环境变量的path相关目录进行调整,然后使用一下命令进行安装cnpm命令; npm insta…

ctfshow web入门 SQl注入web171--web179

从这里开始SQl建议大家去看这篇文章学习一下先 MySQl web171 法一联合查询 题目 $sql "select username,password from user where username !flag and id ".$_GET[id]." limit 1;";爆数据库名 -1 union select 1,database(),3 -- 爆表名 -1 union s…

Next.js多页布局getLayout使用方法

目录 官网解释 直接上代码使用方法展示 1.page页面​编辑 2._app.js页面,也放在pages中​编辑 效果展示 有getLayout展示getLayout返回的页面布局 无getLayout展示默认布局 官网解释 如果需要多个布局,可以添加一个属性getLayout添加到您的页面,允…

试驾小米SU7后,我准备退了我的订单

文 | AUTO芯球 作者 | 雷歌 我真想退了我之前大定的小米SU7Pro版! 前两天我不是和朋友三人一起开着问界M9去试驾SU7了嘛, 说实话,这一圈下来,有欣喜有失望。 SU7的优点特别明显,也很突出, 就是它的底…

SpringMVC(五)【拦截器】

前言 今天来把 SpringMVC 最后一部分学完,虽然课时很短,但是学起来还是很慢的,不过确收获很大。不得不感慨学大数据确实有必要把 SSM、SpringBoot 等各种 JavaEE 技术好好学一学,收获很大,尽管我们到现在 Java 代码写了…

HTML5+JavaScript实现本地视频/音频播放器

HTML5JavaScript实现本地视频/音频播放器 HTML5 提供了本地视频和音频播放器的支持&#xff0c;通过 <video> 和 <audio> 标签&#xff0c;这些标签支持多种媒体格式&#xff0c;并且可以通过 JavaScript 进行控制&#xff0c;实现功能比较完整的本地视频音频播放器…

HTTP/HTTPS详解

HTTP/HTTPS详解 1. HTTP1.1 HTTP基础知识1.2 HTTP建立和断开连接 2. HTTPS 1. HTTP 1.1 HTTP基础知识 HTTP是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用 于从WWW服务器传输超文本到本…

Day09 React———— 第九天

ReactRoter 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 基础用法 import { createBrowserRouter, RouterProvider } from "react-router-dom"; const router createBrowserRoute…

vue---计算属性

姓名案例 1.使用插值语法实现 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>姓名案例_插值语法实现</title><!-- 引入Vue --><script type"text/javascript" src"../js/vue.js"&g…

北大字节联合发布视觉自动回归建模(VAR):通过下一代预测生成可扩展的图像

北大和字节发布一个新的图像生成框架VAR。首次使GPT风格的AR模型在图像生成上超越了Diffusion transformer。 同时展现出了与大语言模型观察到的类似Scaling laws的规律。在ImageNet 256x256基准上,VAR将FID从18.65大幅提升到1.80,IS从80.4提升到356.4,推理速度提高了20倍。 相…

[MySQL数据库] 索引与事务

1. 索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针.可以对表中的一列或多列创建索引,并指定索引的类型&#xff0c;各类索引有各自的数据结构实现. 1.2 作用 数据库中的表、数据、索引之间的关系&#xff0c;类似于书架上的图书、书籍…

电商平台业务及架构演变史

不少人认为电商系统很简单&#xff0c;因为现在做电商的太多了&#xff0c;看到的电商产品也多。看来看去产品都差不多&#xff0c;没什么特别。 其实中国电商发展已有20多年历史&#xff0c;电商以销售为核心连接着研、产、供、销、服整套的信息系统体系。其中的设计并没有那…