当前位置: 首页 > news >正文

PCIe学习笔记(21)

读请求的数据返回(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。然后,请求者必须释放为该特定读请求分配的内部资源。

相关文章:

PCIe学习笔记(21)

读请求的数据返回(Data Return for Read Requests) •针对内存读取请求的单个完成可能提供少于请求的全部数据量,只要对于给定请求的所有完成在组合起来时返回了读取请求中请求的数据量。 ◦不同请求的完成不能合并。 ◦I/O和Configuratio…...

分享Embedding 模型微调的实现

写在前面 \1. 当前比较主流的Embedding开源模型有哪些? 答:1. m3e(Moka Massive Mixed Embedding) 2. BAAI/bge-large-zh-v1.5。更多的开源模型评测榜单可见: https://huggingface.co/spaces/mteb/leaderboard \2. 模型的作用? …...

TED: 1靶场复现【附代码】(权限提升)

机下载地址: Ted: 1 ~ VulnHubTed: 1, made by Avraham Cohen. Download & walkthrough links are available.https://www.vulnhub.com/entry/ted-1,327/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.59.0/24|grep -B 2 00:0C…...

Python(TensorFlow)衍射光学层卷积算法模拟(英伟达GPU)

🎯要点 🎯衍射光学卷积算法模拟 | 🎯模拟或数字电子计算之前加入一层光学计算 | 🎯前馈卷积神经网络计算成像系统对输入图像进行分类 | 🎯相位掩模利用线性空间不变成像系统执行固有卷积 📜用例 Python非…...

iOS开发进阶(二十二):Xcode* 离线安装 iOS Simulator

文章目录 一、前言二、模拟器安装 一、前言 Xcode 15 安装包的大小相比之前更小,因为除了 macOS 的 Components,其他都需要动态下载安装,否则提示 iOS 17 Simulator Not Installed。 如果不安装对应的运行模拟库,真机和模拟器无法…...

Prostgresql的Timescaledb插件/扩展部署

背景:研发需求,需要把docker部署得postgresql迁移到新的节点并要求再本地部署,提前查看数据库需要那些插件,并进行安装,docker部署的默认有插件。 版本对比:postgresql版本对应某个Timescaledb版本 我得p…...

分布式知识总结(一致性Hash算法)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 一致性Hash算法 假如有三台服务器编号node0、node1、node2&…...

图数据库在社交网络分析中的应用

随着社交网络的飞速发展,用户之间的关系变得日益复杂。传统的关系型数据库由于其表结构的限制,难以高效地处理和查询这些复杂的网络数据。图数据库以其独特的图模型结构,能够更好地表示和分析社交网络中的关系,因而在社交网络分析…...

Git基础使用教程

版本控制手册 本文中出现的 [ ] 为根据需求自行修改的变量。 基本命令 git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中。 git config --global user.name [xxx]:设置全局用户名,信息记录在~/.gitconfig文件中。…...

技术速递|Python in Visual Studio Code 2024年8月发布

排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 8 月发布! 此版本包括以下公告: 面向贡献者的 Python 扩展开发容器用于运行带有参数的 Python 文件的调试配置Python 扩展 API 的 Npm 包容错 …...

【话题】重塑未来:AI辅助编程对程序员工作的影响与应对策略

目录 人工智能时代,程序员如何保持核心竞争力? 引言 方向一:AI辅助编程对程序员工作的影响 效率提升 代码质量 潜在风险 方向二:程序员应重点发展的核心能力 复杂系统设计 跨学科知识整合 与AI协作的能力 方向三:人机协…...

在Debian上安装freeswitch

在Debian上安装freeswitch 说明: 首次发表日期:2024-08-12参考文档: https://medium.com/jogikrunal9477/ultimate-guide-to-installing-freeswitch-on-ubuntu-22-04-lts-3745ef6a6bd6https://developer.signalwire.com/freeswitch/FreeSWI…...

论文分享 | Fuzz4All: 基于大语言模型的通用模糊测试

大语言模型是当前最受关注的研究热点,基于其生成和理解能力,对现有领域在提升性能和效果上做更多尝试。分享一篇发表于2024年ICSE会议的论文Fuzz4All,它组合多个大语言模型以非常轻量且黑盒的方式,实现了一种跨语言和软件的通用模…...

VS Code 配置docker 管理员权限终端

问题描述 在容器中需要使用sudo或者su root时候,权限不够,被灵魂提问。 然而,镜像是官方发布的,翻遍了githubissues也没有找到password. 解决 Attach shell 在docker插件中,attach shell 可以直接获得shell。 所…...

使用Linux实现FTP云盘1

关于FTP服务器 FTP(文件传输协议)服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行,服务端不断接收客户端指令,服务 端可同时处…...

tombo resquiggle

Re-squiggle 算法 简介 纳米孔读取产生的电流信号水平数据称为squiggle。将这些squiggle信息进行基底呼叫通常与参考序列相比会包含一些错误。Re-squiggle算法定义了从squiggle到参考序列的新分配,即重新squiggle。 Re-squiggle算法是Tombo框架的基础。该算法输入包含原始信…...

vue3获取vue实例 并注册全局属性方法

vue3注册全局属性方法 前言一、app.config.globalProperties1 注册实例2 注册方法 二、依赖注入(Provide / Inject)1 注册实例2 注册方法3 一次性多次传入 最后 前言 在使用 Vue 时,多个地方使用同一个方法导致每个地方都需要按需引用&#…...

function calling后,如何让大模型进行自然语言输出?

在现代的自然语言处理(NLP)系统中,Function Calling 是指模型在对话过程中调用外部函数以获取特定数据或执行特定操作的能力。在 Function Calling 后,你可以将接收到的数据发送回大模型,并生成自然语言输出。以下是如…...

Android笔试面试题AI答之Kotlin(8)

文章目录 34.Kotlin 泛型中的“*”和“Any”有什么区别?Any*总结 35.Kotlin 协程在哪些方面优于 RxKotlin/RxJava?1. 语法简洁性和易读性2. 性能3. 错误处理和调试4. 场景适用性5. 学习和使用成本 36.Kotlin 协程中的 launch/join 和 async/await 有什么…...

LVS服务的搭建之NAT模式、DR模式的搭建实战

# LVS的概述 1/什么是LVS linux virtural server的简称,也就是linxu虚拟机服务器,使用lvs可以达到的技术目标是:通过linux达到负载均衡技术和linux操作系统实现一个高性能高可用的linux服务器集群,他具有良好的可靠性&#xff0…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...