PCIe学习笔记(21)

news2024/11/27 4:29:08
读请求的数据返回(Data Return for Read Requests)

•针对内存读取请求的单个完成可能提供少于请求的全部数据量,只要对于给定请求的所有完成在组合起来时返回了读取请求中请求的数据量。

不同请求的完成不能合并。

◦I/O和Configuration read必须在一个Completion内完成。

◦Completion的Completion Status只对应于与该Completion返回的数据相关的状态

▪Completion的状态不是success Completion将终止单个Read Request的Completions

▪在这种情况下,Length字段中的值是未定义的,必须被Receiver忽略

Completion不能包含超过Max_Payload_Size允许的数据

◦接收方必须检查是否违反此规则。

注:这只是适用于所有带数据有效负载的tlp的规则的一个特例

•内存读取请求可以通过一个或在某些情况下多个完成来完成

读取完成边界(Read Completion Boundary,RCB)决定了完成者被允许将单个读取请求的响应分成多个完成的自然对齐地址边界。

◦对于根复合体,RCB为64字节或128字节。

注意:SW和EP可以实现相应的命令位,该命令位可以由系统软件设置,以指示根复合体的RCB值,允许网桥或端点在根复合体的RCB为128字节时优化其行为。

对于所有其他系统元素,RCB是128字节

•对于没有以RCB字节的整数倍跨越自然对齐的地址边界的请求,Completion必须包含请求中指定的所有数据。

•在RCB字节的整数倍的地址边界上的请求允许使用多个Completion完成,但遵循以下规则:

◦第一个Completion必须从请求中指定的地址开始,如果成功,必须在以下其中一个结束:

•满足整个请求的地址。

•请求开始和结束之间的地址边界,位于RCB字节的整数倍

◦如果最后的完成是成功的,它必须在满足整个请求的地址结束

◦在第一个和最后一个Completion之间的所有Completion (但不包括第一个和最后一个Completion),其长度必须是RCB字节长度的整数倍

•接收方可以选择检查是否违反RCB。如果实现此检查的Receiver确定Completion违反了此规则,则必须将Completion作为Malformed TLP处理。

◦这是一个与接收端口相关的报告错误(见6.2节)。

单个读请求的多个内存读完成必须按递增的地址顺序返回数据

•如果单个读请求的所有内存读完成状态都是成功完成状态,则它们的有效负载之和必须等于请求的大小

•对于每个内存读完成,字节计数字段必须指示完成请求所需的剩余字节数,包括完成时返回的字节数,除非设置了BCM位(PCI-x)。

◦完成一次Memory Read Request需要的总字节数计算如表2-38所示。

  ◦如果内存读请求使用多个Completions完成,每个连续的Completion的字节计数值是由前一个Completion指示的值减去前一个Completion返回的字节数

•完成数据区域从请求指定的DW地址开始。在第一个或唯一一个Completion的第一个或唯一一个Data DW中,只有在Request中的first BE字段中配置为有效的字节包含有效数据。在Request的First BE字段中配置为无效的字节将返回未定义的内容。

•在最后一次成功完成的Last Data DW中,只有在Request的last BE字段中配置为有效的字节包含有效数据。在请求的Last BE字段中配置为无效的字节将返回未定义的内容。

•所有完成数据字节,包括那些内容未定义的字节,在所有的CRC(循环冗余校验)计算中都会被包含。

•举例如图2-44所示。该示例假设返回一个Completion TLP。

BCM位永远不会在读取完成的后续数据包中设置,因此这些后续数据包中的字节计数字段将始终指示每个实例中剩余的字节计数。因此,请求者可以使用这些数据包中的字节计数字段来确定是否缺少读取完成的其他数据包。

PCI Express Completer永远不会设置BCM位。

通过Length和Byte Enable字段计算字节计数

对于所有的Memory Read Completion, Lower Address字段必须表示与Completion一起返回的使能的首字节数据的字节地址的低位

◦对于第一个(或唯一的)Completion, Completer可以从Request地址的最低有效的5位与2位字节级地址连接产生该字段,如表2-39所示。

◦对于任何后续的Completions, Lower Address字段将始终为零,除了由具有64字节RCB(读取完成边界)值的根复合体生成的Completions。在这种情况下,Lower Address字段的最低有效位将始终为零,而Lower Address字段的最高有效位将根据64字节数据负载的对齐方式进行切换。

当生成的状态不是成功完成的读取完成时

◦没有数据包含在完成

▪Cpl(或CplLk)编码被使用,而不是CplD(或CplDLk)

◦此完成是请求的最终完成

    ▪Completer不得为此请求传输额外的完成

    ▪示例:完成者将请求分成四个部分进行;第二个Completion的Completion状态为“Completion中止Completion状态”; Completer终止了对该请求的服务,并且没有传输剩余的两次Completion。

◦字节计数字段必须表明完成请求需要的剩余的字节数 (如果完成状态是成功完成)

◦低地址字段必须指示如果完成状态是成功完成,将与完成一起返回的使能的首字节数据的字节地址的低位。

Completion Handling Rules

当设备接收到与该设备发出的任何未完成请求的事务ID不匹配的完成时,该完成称为“意外完成”(Unexpected Completion,UC)

•如果接收到的完成与未完成请求的事务ID匹配,但在某些其他方面与相应的请求不匹配(例如,属性,流量类,字节计数,低地址等问题),强烈建议接收方将完成作为畸形TLP处理。

◦完成者不能检查完成中的IDO属性(属性位2),因为请求者不需要将请求中的IDO值复制到完成中,如2.2.6.4和2.2.9节所述。

◦然而,如果Completion以其他方式正确形成,则允许Receiver将Completion处理为Unexpected Completion。

当交换机的入口端口接收到无法转发的完成时,该入口端口必须将该完成作为意外完成处理(UC)。这包括对以下目标的完成:

◦与上游端口关联的设备中不存在的功能,

◦与上游端口关联的总线上不存在的设备,

◦Switch内部结构中不存在的设备或功能,或

◦上游端口的总线号范围内但未被任何下游端口声称的总线号。

接收一个意外完成是一个错误,必须根据以下规则处理:

◦接收意外完成的组件必须丢弃完成。

◦意外完成是与接收端口相关联的报告错误 (见6.2节)。

完成状态不是成功完成或配置请求重试状态(仅响应配置请求)的完成必须导致请求者:

◦释放与请求相关的完成缓冲区空间和其他资源。

◦通过request -specific机制处理错误(参见6.2.3.2.5节)。

如果在FLR启动和目标函数完成FLR之间到达完成,则允许将完成作为意外完成处理或被静默丢弃(在流控制积分更新之后),而不将其记录或标记为错误。一旦FLR完成,收到的与在FLR之前发出的请求相对应的Completion必须作为UC处理,除非该函数已重新启用以发出请求。

•RC完成的处理与配置请求重试状态的配置请求是具体实现的,除了系统重置后的时期(见章节6.6)。对于支持CRS软件可见性的RC,适用以下规则:

◦如果CRS软件可见性未启用,RC必须重新发出配置请求作为一个新的请求。

◦如果CRS软件可见性是启用:

   ▪对于包含设备功能配置空间头的Vendor ID字段的两个字节的配置读取请求,RC必须通过返回Vendor ID字段的读取数据值0001h和请求中包含的任何其他字节的所有' 1 '来完成对主机的请求。这个读数据值是专门为PCI-SIG保留的,不对应于任何分配的Vendor ID。

▪对于配置写请求或任何其他配置读请求,RC必须重新发出配置请求作为一个新的请求。

RC的实现可以选择限制配置请求/ CRS完成状态循环的数量,然后再确定请求的目标有问题并采取适当的行动,例如,将发送给主机的请求作为失败的事务完成。

CRS软件可见性可以通过根控制寄存器中的CRS软件可见性启用位(见章节7.5.3.12)来在单个根端口的基础上控制根复核行为。或者,根复合行为可以通过根复合寄存器块(RCRB)控制寄存器中的CRS软件可见性使能位进行管理,如章节7.9.7.4所述,允许一个或多个根端口或rciep的行为由单个使能位控制。对于这种替代情况,每个根端口或RCiEP通过根复合链路声明能力(见章节7.9.8)中的RCRB头关联声明其与特定Enable位的关联。每个根端口或RCiEP最多允许被一个Enable位控制。因此,例如,禁止根端口的根控制寄存器包含Enable位来声明与RCRB头关联的RCRB头在其RCRB头能力中也包含Enable位。根端口或RCRB报头能力中的Enable位的存在由相应的CRS软件可见性位

•对于非配置请求的请求,使用配置请求重试状态的完成是非法的。接收方可以选择将这些违规行为报告为畸形tlp。

◦这是一个与接收端口相关的报告错误(见6.2节)。

•具有保留完成状态值的完成被视为完成状态为不支持的请求(UR)。

•完成状态为Unsupported Request或Completer Abort的完成使用传统的PCI报告机制进行报告(参见章节7.5.1.1.4)。

◦请注意,触发生成这样一个完成的错误条件是Completer报告如6.2节所述。

•当接收到的读取完成或原子操作完成的状态不是成功完成时:

◦没有数据包含在完成

▪Cpl(或CplLk)编码被使用,而不是CplD (CplDLk)

◦此完成是请求的最终完成

▪请求者必须考虑请求终止,而不是期望额外的完成

▪先前收到的部分完成的处理是特定于实现的

示例:请求方收到了一个128字节的Read Request的32字节的Read数据,然后它收到一个Completion,并带有Completer Abort Completion Status。然后,请求者必须释放为该特定读请求分配的内部资源。

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

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

相关文章

Qt QCustomPlot 图形库详解

文章目录 原文1. 下载qcustomplot.h与qcustomplot.cpp后,将代码文件拷贝到本地工程,并添加到工程项目2. 看到文件后就是添加成功了3. 在界面中拖拽一个Widget控件,选中并右键选中“提升为”,将原来的Widget控件已成为一个带坐标的 CustomPlot 控件4. 添加printsupport原文 …

【Ai学习】一个技巧,解决99%Comfyui报错!

前言 comfyui以极高灵活度及节点化工作流,深受AI绘画者追捧,每当新的模型开源,comfyui都是最先进行适配。 comfyui高度兼容性及灵活性带来丰富强大的扩展(插件)生态,同时也带来一系列插件安装的问题&…

Python程序结构

模块 Module 定义:包含一系列数据、函数、类的文件,通常以.py结尾。 作用:让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。 有利于多人合作开发。 导入 import 语法: im…

【目标检测实验系列】YOLOv5/YOLOv8改进:CARAFE轻量级上采样算子,聚合上下文信息,助力模型涨点(文内附源码)

1. 文章主要内容 本篇博客主要涉及轻量级上采样算子CARAFE,将YOLOv5/YOLOv8模型中最近邻上采样算子改为CARAFE算子,使模型聚合上下文信息,助力模型涨点。 2. 简要概括 论文地址:CARAFE论文地址 论文Github代码&#xff1a…

Go语言 Defer(延迟)

本文主要内容为Go语言中defer(延迟)介绍及应用文件读取使用defer的示例。 目录 定义 应用场景 代码示例 改为匿名函数 总结 定义 延迟:关键字,可以用于修饰语句、函数, 确保这条语句可以在当前栈退出的时候执行。 应用场景 1.一般用于…

【leetcode】特殊数组I【(炒鸡)简单】

好像这题没啥子好说的欸&#xff0c;那就祝点进来的友友今天有好事发生叭~ AC代码见下&#xff1a; class Solution { public:bool isArraySpecial(vector<int>& nums) {for(int i1; i<nums.size(); i)if(nums[i]%2 nums[i-1]%2) return false;return true;} }…

如何妙用哈希表来优化遍历查找过程?刷题感悟总结,c++实现

先上题目 题目链接&#xff1a;题目链接 这题我最先想到的就是前缀和a&#xff0c;构造好了以后就遍历每一个[l,r]数组&#xff08;满足题目要求的连续区间数组&#xff09;&#xff0c;奈何倒数第二个样例时间超限 先给出原思路代码 class Solution { public:int subarray…

网络如何发送一个数据包

网络如何发送一个数据包 网络消息发送就是点一点屏幕。 骚瑞&#xff0c;这一点都不好笑。&#xff08;小品就是我的本质惹&#xff09; 之前我就是会被这个问题搞的不安宁。是怎么知道对方的IP地址的呢&#xff1f;怎么知道对方的MAC呢&#xff1f;世界上计算机有那么多&…

top250的电影

本次的电影排行来源于豆瓣。材料仅用于自身学习和记录自己学习过程 使用python中的requests、BeautifulSoup、xlwt&#xff0c;三者需要提前下载好。。 预处理&#xff1a; url&#xff1a;反应网页变化 其中start后面的数字变化每次加25&#xff0c;对应一页&#xff0c;故…

用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)

exceljs在Jquery&#xff08;HTML&#xff09;和vue项目中实现导出功能 前言Jquery&#xff08;HTML&#xff09;中实现导出第一步&#xff0c;先在项目本地中导入exceljs和file-saver包第二步&#xff0c;封装导出Excel方法&#xff08;可直接复制粘贴使用&#xff09;第三步&…

JJ音乐,听歌自由!

林俊杰&#xff0c;这位才华横溢的音乐才子&#xff0c;用他的音符编织了一个又一个令人陶醉的梦幻世界。作为他的音乐爱好者&#xff0c;每一次倾听都是一次心灵的旅程。 他的歌声仿佛有一种魔力&#xff0c;能够穿透灵魂。从《江南》的诗意浪漫&#xff0c;到《不为谁而作的歌…

探索树莓派Pico 2:新一代RP2350芯片引领的微型开发革命

Raspberry Pi Pico 2 是由树莓派基金会推出的微处理器开发板&#xff0c;作为Pico系列的最新成员&#xff0c;它在原有的基础上进行了多项改进和扩展。这款开发板搭载了全新的RP2350芯片&#xff0c;具有更强大的处理能力和更多的功能特性。 1. Raspberry Pi Pico 2的特性和规格…

使用CUbeMX配置STM32F103C8T6 CRC校验

一、CubeMX配置 1.配置RCC 2.配置SYS 3.启用CRC校验 二、Keil添加程序 1.main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body*******…

LVGL——(4)标签控件

文章目录 一、介绍二、用法1、创建2、显示文本2.1 直接设置要显示的文本2.2 格式化给定要显示的文本2.3 在 label 中进行换行 3、改变字体大小4、长模式5、文本选择6、文本对齐方式7、非常长的文本8、显示内置图标字体9、事件处理 三、拓展1、修改文本颜色1.1 Palette&#xff…

研0 冲刺算法竞赛 day30 P1102 A-B 数对

P1102 A-B 数对 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a; ①map&#xff0c;键值对计数&#xff0c;将A-B->A-C ②先排序&#xff0c;找对应差值为C的第一个和最后一个计数 代码&#xff1a; #include<iostream> #include <map> #i…

Typora绿色版

1、下载安装 Typora 官网地址&#xff1a;https://typora.io/ 中文站地址&#xff1a;Typora 2、击活 Typora 鼠标右击文件所在位置查询 resources\page-dist\static\js\LicenseIndex.180dd4c7.4da8909c.chunk.chunk.js e.hasActivated"true"e.hasActivated, 替…

使用nvm切换Node.js版本

一、安装nvm nvm&#xff08;Node Version Manager&#xff09;是一个用于管理Node.js版本的工具&#xff0c;它允许你在同一台机器上安装和切换多个Node.js版本。 1.安装nvm https://github.com/coreybutler/nvm-windows 访问以上链接到github去下载 点击releases 下载下图…

优化if-else的几种方式

优化if-else的几种方式 策略模式1、创建支付策略接口2、书写不同的支付方式逻辑代码微信支付QQ支付 3、service层的实现类使用4、controller层的调用说明 枚举与策略模式结合1、创建枚举2、service层书写处理方法3、controller层调用4、说明 Lambda表达式与函数接口说明 策略模…

用于理解视频的基础视觉编码器VideoPrism

人工智能咨询培训老师叶梓 转载标明出处 如何让机器有效地理解和处理视频内容&#xff0c;一直是计算机视觉领域的一个挑战。最近&#xff0c;Google Research的研究人员提出了一种名为VideoPrism的新型视频编码器&#xff0c;旨在通过单一的冻结模型处理多样化的视频理解任务。…

风云崛起之拉氏变换和拉式逆变换

图像的分割写出来了&#xff0c;但是写的不好&#xff0c;暂时先不发了。这两天小y想在把拉式变换的内容写出来&#xff0c;小y最近再看信号和电路&#xff0c;需要复习数学&#xff0c;所以把这点写出来。 首先要推出分布积分的公式&#xff0c;我们知道积分和微分为逆运算&am…