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.rhkb.cn/news/310582.html

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

相关文章

蓝桥杯备赛:考前注意事项

考前注意事项 1、DevCpp添加c11支持 点击 工具 - 编译选项 中添加&#xff1a; -stdc112、万能头文件 #include <bits/stdc.h>万能头文件的缺陷&#xff1a;y1 变量 在<cmath>中用过了y1变量。 #include <bits/stdc.h> using namespace std;// 错误示例 …

山姆·奥特曼是如何成为亿万富豪的?

2017年夏天&#xff0c;Superhuman公司首席执行官拉胡尔沃拉&#xff08;Rahul Vohra&#xff09;开始疯狂向投资者一一发消息&#xff0c;缘由是他的初创公司尝试了谷歌浏览器Chrome的一项即将推出的更新。由于一个看似无害的代码更改&#xff0c;Superhuman的智能电子邮件服务…

openstack-云主机 5

配置openstack网络&#xff08;neutron&#xff09;服务 创建neutron用户 创建服务实体并为其创建三个endpoint 公共网络的安装和配置(控制节点的配置) 配置ML2插件 配置Linuxbridge代理 配置DHCP代理 配置元数据代理 为计算节点配置网络服务 完成安装 启动并设置开机自启 计…

MSTP/RSTP的保护功能

目录 原理概述 实验目的 实验内容 实验拓扑 1.配置RSTP/MSTP 2.配置BPDU保护 3.配置根保护 4.配置环路保护 5.配置TC-BPDU保护 原理概述 在RSTP或MSTP交换网络中&#xff0c;为了防止恶意攻击或临时环路的产生&#xff0c;可配置保护功能来增强网络的健壮性和安全性。…

Unity 布局 HorizontalLayoutGroup 多行 换行

演示Gif&#xff1a; 现象: 子元素宽度不同&#xff0c;超出父元素后不会换行 GridLayout则是固定宽度也不能用&#xff0c; 需求 水平排版的同时&#xff0c;超出父级后换行 代码&#xff1a; 催更就展示[狗头]

Android 使用ping命令判断当前网络状态

一. 介绍 ping命令是用来测试和诊断网络连接问题的基本命令&#xff0c;当然我们的终端设备&#xff08;手机/平板/车机&#xff09;都可以用这个命令来判断当前网络是否有流量的状态&#xff0c;本篇文章主要介绍Linux的ping命令&#xff0c;因为Android系统也是使用了Linux内…

【浪漫 罗盘时钟 Js、css实现(附源代码) 美化版本】,前端面试必问的HashMap

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…

SpringBoot整合消息中间件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

消息中间件 消息消息队列JMS AMQPMQTTKafka Spring整合消息队列模拟消息队列的工作流程Spring整合ActiveMQSpring整合RabbitMQ直连交换机模式主题交换机模式 Spring整合RocketMQSpring整合kafka 消息 消息的发送方&#xff1a;生产者 消息的接收方&#xff1a;消费者 同步消息…

从51到ARM裸机开发实验(009)LPC2138 中断实验

一、场景设计 中断的概念在《从51到ARM裸机开发实验(007) AT89C51 中断实验》中已经介绍过&#xff0c;LPC2138的Keil工程创建在《从51到ARM裸机开发实验(005)LPC2138 GPIO实验》中已经介绍过。本次使用LPC2138来实现一个这样的场景&#xff1a;四个LED依次亮灭&#xff0c;时间…

【python】python天气气候数据抓取分析可视化(源码+数据+可视化+报告)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

【Bugku】sqli-0x1

1.打开靶场&#xff0c;进入实验场景 2.按F12查看源代码&#xff0c;发现有一个/?pls_help路径&#xff0c;在url后加上查看。 3.得到的php源码 首先&#xff0c;代码通过 error_reporting(0) 和 error_log(0) 关闭了错误报告&#xff0c;这可以防止攻击者从错误信息中获取敏…

EasyImage2.0 简单图床开源 多功能 简单易用图床系统源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 支持API 支持仅登录后上传 支持设置图片质量 支持压缩图片大小 支持文字/图片水印 支持设置图片指定宽/高 支持上传图片转换为指定格式 支持限制最低宽度/高度上传 支持上传其他文件格…

hbase基础shell用法

HBase中用create命令创建表&#xff0c;具体如下&#xff1a; create student,Sname,Ssex,Sage,Sdept,course 此时&#xff0c;即创建了一个“student”表&#xff0c;属性有&#xff1a;Sname,Ssex,Sage,Sdept,course。因为HBase的表中会有一个系统默认的属性作为行键&#x…

【黑马头条】-day06自媒体文章上下架-Kafka

文章目录 今日内容1 Kafka1.1 消息中间件对比1.2 kafka介绍1.3 kafka安装及配置1.4 kafka案例1.4.1 导入kafka客户端1.4.2 编写生产者消费者1.4.3 启动测试1.4.4 多消费者启动 1.5 kafka分区机制1.5.1 topic剖析 1.6 kafka高可用设计1.7 kafka生产者详解1.7.1 同步发送1.7.2 异…

Golang | Leetcode Golang题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; func findSubstring(s string, words []string) (ans []int) {ls, m, n : len(s), len(words), len(words[0])for i : 0; i < n && im*n < ls; i {differ : map[string]int{}for j : 0; j < m; j {differ[s[ij*n:i(j1)*n]…

大模型用到的位置编码汇总(面试)

不同于RNN、CNN等模型&#xff0c;对于Transformer模型来说&#xff0c;位置编码的加入是必不可少的&#xff0c;因为纯粹的Attention模块是无法捕捉输入顺序的&#xff0c;即无法区分不同位置的Token。为此我们大体有两个选择&#xff1a;想办法将位置信息融入到输入中&#x…

4.15 网络编程

思维导图 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include <semaphore.h> #inclu…

图神经网络

图的性质 聚类系数 C i E i T i C_i \frac{E_i}{T_i} Ci​Ti​Ei​​ E i E_i Ei​表示节点 i i i的邻居实际存在的边的数量&#xff0c; T i T_i Ti​表示节点 i i i的邻居可能&#xff08;最多&#xff09;存在的边的数量 理论溯源 聚类系数这一概念首先源于论文“Colle…

js 写 视频轮播

html代码 <div class"test_box"> <div class"test"> <a href"#"> <div class"test_a_box"> <div class"test_a_mask"></div> <div class"test_a_layer"> <div cla…

vite - WebAssembly入门

1. 初始化 vite 项目 1.1 安装 nvm&#xff08;可选&#xff09; brew update brew install nvm在 ~/.zshrc 添加 export NVM_DIR~/.nvm source $(brew --prefix nvm)/nvm.sh执行如下命令 source ~/.zshrc1.2 安装 node nvm install nodenvm ls -> …