PCIe错误定义与分类

前言:

PCI总线中定义两个边带信号(PERR#和SERR#)来处理总线错误。其中PERR#主要对应的是普通数据奇偶校检错误(Parity Error),而SERR#主要对应的是系统错误(System Error)。具体如下:
· 普通的数据奇偶校检错误——通过PERR#报告
· 在多任务事务(Multi-task Transaction,又称为Special Cycles)时的奇偶校检错误——通过SERR#报告
· 地址和命令的奇偶校检错误——通过SERR#报告
· 其他错误——通过SERR#报告
在PCI(Peripheral Component Interconnect)和PCI Express(PCIe)体系结构中,边带信号(Sideband Signals)是一些用于提供控制和状态信息,而非数据传输本身的信号。在这些信号中,有两个特别重要的是SERR(System Error)和PERR(Parity Error)。尽管PCIe架构在很多方面与传统PCI不同,但它仍然保留了一些早期技术的特征,包括对错误处理的支持。下面是这两个信号的详解:

1 PERR(Parity Error)

目的与作用: PERR是用来指示数据传输中的奇偶校验错误的信号。在PCI总线上,数据传输伴随着一个奇偶校验位。如果在接收端计算的奇偶校验结果与发送端的不符,PERR信号会被触发。这意味着传输的数据在从一个端点到另一个端点的过程中出现了错误。
处理方式: 当PERR信号被触发时,系统可以采取多种措施,如重试传输、记录错误到日志中、或者在某些情况下停止操作,具体取决于系统设计和错误的严重性。

2 SERR(System Error)

目的与作用: SERR被用来指示严重的系统错误,这些错误通常是无法通过重试等简单方法恢复的。SERR通常与硬件失败、系统崩溃或者其他重大问题关联。SERR提供一种机制,使得系统在遇到严重错误时能快速响应。
处理方式: 触发SERR通常会导致系统采取更加激进的措施,如立即停止所有操作、复位或者重新启动系统。由于涉及到的错误通常很严重,因此这个信号的使用相对较少,只在不得已的情况下才会被用到。
一个简单的例子如下图所示:
在这里插入图片描述

3 错误分类

3.1 PCIe将错误分为两大类:

3.1.1 可更正错误(Correctable Errors):

这些错误可以在不影响系统持续运行的情况下被检测并修复。如小的数据包错误、信号干扰等,通常不会导致数据损坏。

3.1.2 不可更正错误(Uncorrectable Errors):

这些错误通常更加严重,可能导致数据损失或者系统崩溃。如果发生不可更正错误,可能需要采取措施,如重新初始化接口或重启系统。

3.2 错误定义

错误定义包括一系列的错误事件,下面是一些主要类型:
数据链路层错误(Data Link Layer Errors):
可更正错误:
Bad DLLP: 数据链路层包(DLLP)发生错误。
Bad TLP: 传输层包(TLP)发生错误。
不可更正错误:
数据链路协议错误: 数据链路层发生的协议违规,通常指示硬件问题。
物理层错误(Physical Layer Errors):
可更正错误:
接收错误: 由于信号畸变等原因接收到错误的数据。
不可更正错误:
底层序列错误: 物理层发生的序列错误,可能是硬件故障的迹象。
传输层错误(Transaction Layer Errors):
可更正错误:
头部日志溢出: 即将溢出的未处理事件日志。
不可更正错误:
无法识别的TLP: 接收端无法识别的TLP。
流控错误: 流控制管理出错。
其他错误事件:
未达到的请求与完成超时: 发出的请求没有收到响应或者响应超时。
携带错位和突发事件: 数据携带和收发过程中的错位事件。

3.3 错误报告

PCIe使用高级错误报告(AER)来提供对错误的管理,其包括:
记录在相应的状态寄存器中: 每当发生错误时,错误事件的相关信息会被记录在特定的状态寄存器内。
错误消息: 发生错误时,会生成相应的错误消息,来通知主机或系统进行处理。
错误信号: 某些错误会触发硬件信号,例如,系统错误信号(System Error, SERR)。

3.4 错误处理

系统或设备接收到错误报告后,可以采取以下一种或多种措施来处理错误:
记录错误信息,并且根据错误重要性上报至操作系统或管理软件。
尝试进行错误校正(如果是可更正错误)。
系统管理员可以获取详细错误日志以分析故障原因并进行维修。
在不可更正错误出现时进行系统重启或其他必要的恢复操作。

总结:

PCIe架构在设计上已经大大改进了错误检测和处理机制,引入了更先进的技术如高级错误报告(Advanced Error Reporting, AER)等,因此,并不直接使用类似于传统PCI中的PERR和SERR信号。虽然在概念上PCIe继续支持通过其高级特性来表达相似的错误检测和报告机制,但它通过不同的方式实现这些功能,例如通过特定的消息和状态寄存器来报告和管理错误。
总的来说,虽然PERR和SERR这些信号源于早期的PCI技术,在PCIe中它们的直接应用被更高级的机制所替代,但理解它们对于理解计算机系统中的错误处理仍然是有帮助的。

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

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

相关文章

数据结构复习指导之绪论(算法的概念以及效率的度量)

文章目录 绪论: 2.算法和算法评价 知识总览 2.1算法的基本概念 知识点回顾与重要考点 2.2算法效率的度量 知识总览 1.时间复杂度 2.空间复杂度 知识点回顾与重要考点 归纳总结 绪论: 2.算法和算法评价 知识总览 2.1算法的基本概念 算法( Al…

【现代C++】模块的使用

C20引入了模块的概念,这是一个重要的新特性,旨在替代传统的预处理器和头文件机制。模块旨在提高编译速度、改善代码封装性、减少名称污染,并提供更好的工具支持。下面详细介绍模块的关键概念和使用方法: 1. 模块的基本概念 模块…

openGauss学习笔记-263 openGauss性能调优-TPCC性能调优测试指导-前置软件安装

文章目录 openGauss学习笔记-263 openGauss性能调优-TPCC性能调优测试指导-前置软件安装263.1 安装jdk263.2 安装numactl263.3 安装ant263.4 安装htop工具 openGauss学习笔记-263 openGauss性能调优-TPCC性能调优测试指导-前置软件安装 本章节主要介绍openGauss数据库内核基于…

谷歌浏览器的开发者插件vue-devtools

在这里我留下一个git地址用来下载插件包,首先在自己喜欢的位置创建一个新的文件夹,起一个自己喜欢的文件夹名字,下载到包后,然后点进文件夹里下载依赖,npm install,下载后如下面这个样子 git clone https://gitee.com…

【投稿优惠-EI稳定检索】2024年人工智能、自然语言处理与机器学习国际会议(ICAINLPML 2024)

2024 International Conference on Artificial Intelligence, Natural Language Processing and Machine Learning (ICAINLPML 2024) 网址:www.icainlpml.com 邮箱: ainlpmlsub-conf.com ●会议简介 2024年人工智能、自然语言处理与机器学习国际会议将邀请全球人…

Jackson 2.x 系列【24】Spring Web 集成

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. Spring Web3. Jackson2ObjectMapperBuilder4. Jackson2ObjectMapperFa…

比例控制器H5773282、H8135950、H3390627、H6079948

名称:BEUEC数字比例放大器、伺服比例控制器、伺服比例阀放大板,订货代号:H5773282、H8135950、H3390627、H6079948、H6108848、H6700353、H8851035、H1688388、H9549313、H3264103、H1182967,输入指令可选10V、4-20mA,…

Session缓存、Hibernate处理对象的状态了解

Session接口 Session接口是Hibernate向应用程序提供的操纵数据库的最主要的接口,它提供了基本的保存,更新,删除和查询的方法。 Session是有一个缓存, 又叫Hibernate的一级缓存 session缓存是由一系列的Java集合构成的。当一个对象被加入到…

[大模型]Atom-7B-Chat 接入langchain搭建知识库助手

Atom-7B-Chat 接入langchain搭建知识库助手 环境准备 在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab,并且打开其中的终端开始环境配置…

Linux 网络测速

1.开发背景 网络测速,为了测试开发板的网络速度是否达标的通用测试方法 2.开发需求 搭建 iperf3 ,在 ubuntu 下安装服务端,在板卡上安装客户端,服务端和客户端互发 3.开发环境 ubuntu20.04 嵌入式开发板(debian 千…

LeetCode_丑数

题目: 题解: 由题,我们知道丑数大于0,丑数都可以写成2*2*...*2*3*3...*3*5*5...*5,有了这个基础就很好写代码了。 用三个while循环将前面的2 3 5全部除掉如果这个数是丑数,最后n是等于1的,反之…

C++_第五周做题总结_构造与析构

id:31 A.Point(类与构造) 题目描述 下面是一个平面上的点的类定义,请在类外实现它的所有方法,并生成点测试它。 class Point {double x, y; public:Point(); // 缺省构造函数,给x,y分别赋值为0Point(double x_value…

nvm node.js的安装

说明:部分但不全面的记录 因为过程中没有截图,仅用于自己的学习与总结 过程中借鉴的优秀博客 可以参考 1,npm install 或者npm init vuelatest报错 2,了解后 发现是nvm使用的版本较低,于是涉及nvm卸载 重新下载最新版本的nvm 2…

激光雷达初识

一、实车激光雷达 一般在车顶位置: 二、激光雷达组成 激光收发器模块:发射激光器VCSEL+接收模块采用了SiPM(硅基光电倍增管)或者APD,一个激光器发生失效的情况,其他仍可正常工作 扫描模块:水平视场和的垂直视场的扫描,128个阵列的VCSEL激光器负责 信号处理模块:信号处…

深入理解 C++ 中的 KeyFrame 和 KeyFrame*:对象与指针的选择与管理

本文详细讨论了在 C 编程中 KeyFrame 类及其指针 KeyFrame* 的用法、区别与联系。通过探索两者的内存管理、生命周期及使用场景,本文旨在帮助开发者更好地理解何时以及如何选择使用对象或指针,从而提高代码的效率和安全性。 在 C 中,KeyFrame…

【电控笔记2.4】前馈技术

2.4前馈技术 前馈可以减轻控制器的负担

画板探秘系列:创意画笔第一期

前言 我目前在维护一款功能强大的开源创意画板。这个画板集成了多种创意画笔,可以让用户体验到全新的绘画效果。无论是在移动端还是PC端,都能享受到较好的交互体验和效果展示。并且此项目拥有许多强大的辅助绘画功能,包括但不限于前进后退、…

【SQL】DISTINCT GROUP BY

找到所有办公室里的所有角色(包含没有雇员的),并做唯一输出(DISTINCT) 用DISTINCT : SELECT DISTINCT B.Building_name,E.Role FROM Buildings B LEFT JOIN Employees EON B.Building_name E.Building需要找到的结果:所有办公室名字&#…

iOS framework 相关知识

苹果官方目前不允许开发者使用动态库,所以下面只说明相关静态库使用知识,目前只做简单的记录,后续会做完整的整理 如何在同一个WorkSpace里面创建一个主工程和多个子framework 首先创键一个工程,然后创建一个workspace&#xf…

线程通信-java

线程通信 当多个线程操作共享多资源时,线程间通过某种方式相互告知自己的状态,以相互协调, 并避免无效的资源争夺。 线程通信的常见模型(生产者与消费者模型) 生产者线程负责生产数据 消费者线程负责消费生产者生…