PCIe学习笔记(22)

news2025/1/12 18:04:19

Transaction Ordering

Transaction Ordering Rules

表2-40定义了PCI Express Transactions的排序要求。该表中定义的规则统一适用于PCI Express上所有类型的事务,包括内存、I/O、配置和消息。该表中定义的排序规则适用于单个流量类(TC)。不同TC标签的事务之间没有排序要求。请注意,这也意味着在流经不同虚拟通道的流量之间不需要排序,因为不允许将具有相同TC标签的事务映射到任何PCI Express Link上的多个vc

对于表2-40,列表示第一次发布的事务,行表示随后发布的事务。表项指示两个事务之间的排序关系。表项定义如下:

Yes必须允许第二个事务(行)通过第一个事务(列),以避免死锁。(当阻塞发生时,第二个事务需要通过第一个事务。必须理解公平性以防止饥饿。

Y/N无要求。第二个事务可以选择性地通过第一个事务或被第一个事务阻塞。

No不允许第二个事务通过第一个事务。这是支持生产者/消费者强排序模型所必需的。

A Posted Request(转发请求)是指内存写请求或消息请求。

A Read Request(读请求)是指配置读取请求、I/O读取请求或内存读取请求。

An NPR (Non-Posted Request) with Data(带有数据的非转发请求)是指配置写请求、I/O写请求或原子操作请求。

表2-40中条目的说明

A2a:转发请求不得通过另一个转发请求,除非A2b适用。

A2b:如果设置了RO,则允许转发请求通过另一个转发请求。如果设置了IDO,并且两个请求者的ID不同,或者两个请求都包含PASID TLP前缀且两个PASID值不同,则允许转发请求通过另一个转发请求。

A3, A4:为了避免死锁,转发请求必须能够通过非转发请求。

A5a:转发请求被允许通过完成事务,但除非A5b适用,否则不必能够通过完成事务。

A5b:在PCI Express到PCI/PCI-X桥接器中,如果PCI/PCI-X总线段以传统PCI模式运行,对于PCI Express到PCI方向的事务,为了避免死锁,转发请求必须能够通过完成事务。

B2a:除非B2b适用,读取请求不得通过转发请求。

B2b:如果设置了IDO,并且两个请求者的ID不同,或者两个请求都包含PASID TLP前缀且两个PSID值不同,则允许读取请求通过转发请求。

C2a:除非C2b适用,带有数据的非转发请求不得通过转发请求。

C2b:设置了“RO”的带有数据的非转发请求(NPR)被允许通过转发请求。如果设置了“IDO”,并且两个请求者的ID不同,或者两个请求都包含PASID TLP前缀且两个PASID值不同,则允许通过转发请求。

B3, B4, C3, C4:非转发请求被允许通过另一个非转发请求。

B5, C5:非转发请求被允许通过完成事务。

D2a:除非D2b适用,完成事务不得通过已转发请求。

D2b:允许I/O或配置写入完成事务通过转发请求。如果设置了RO,则允许完成事务通过转发请求。如果设置了IDO,并且完成事务的完成者ID与转发请求的请求者ID不同,则允许完成事务通过转发请求。

D3, D4:为了避免死锁,完成事务必须能够通过非转发请求。

D5a:具有不同事务ID的完成事务被允许相互通过。

D5b:具有相同事务ID的完成事务不得相互通过。这确保了与单个内存读取请求关联的多个完成事务将保持地址升序排列。

附加规则:

•允许PCI Express Switch去允许设置了宽松排序位的内存写入或消息请求通过任何之前转发的、在同一方向前进的内存写入或消息请求。Switch必须不修改转发宽松排序属性。也允许根复合体去允许请求中的数据字节以任何顺序写入系统内存(字节必须写入正确的系统内存位置。只有写入它们的顺序是未指定的)。

对于根复合体和交换机,内存写入合并(在[PCI]中定义)是禁止的

◦注意:这是必需的,以便设备可以被允许优化其接收缓冲区和控制逻辑的内存写入大小匹配其自然预期的大小,而不是被要求支持最大可能的内存写入负载大小。

禁止合并内存读请求和/或为不同的请求Completion

No Snoop位不影响所需的排序行为

对于根端口和SW下游端口,Posted Request的接受或Completion必须不依赖于同一流量类中Non-Posted Request的传输。

•对于SW上游端口,Posted Request的接受或Completion必须不依赖于在同一流量分类中Non-Posted Request的下游端口的传输

对于EP、Bridge和SW上游端口,Posted Request的接受不能依赖于同一流量类中来自同一上游端口的任何TLP的传输。

•对于EP、Bridge和SW上游端口,Non-Posted Request的接受必须不依赖于来自同一流量类中同一上游端口的Non-Posted Request的传输。

•对于EP、Bridge和SW上游端口,Completion的接受必须不依赖于同一流量类别中来自同一上游端口的任何TLP的传输

请注意,EP永远不允许阻止Completion的接受。

•为Non-Posted Request发出的Completion必须以与相应的Non-Posted Request相同的流量类返回。

•支持点对点操作和SW的RC必须对所有转发的流量强制执行事务排序规则。

为了确保无死锁操作,设备不应该将流量从一个虚拟通道转发到另一个虚拟通道

无死锁操作取决于系统拓扑、支持的虚拟通道数量以及配置的流量类到虚拟通道的映射。

大内存读取vs.多个小内存读取?

例如,如果一个设备从位置1000h发出一个256字节的内存读请求,并且该请求使用两个128字节的Completions返回,可以保证这两个Completions将以以下顺序返回:

1 . Completion返回:数据从1000h到107Fh。

2 . Completion返回:1080h到10FFh的数据。

然而,如果设备发出两个内存读请求,每个128字节,首先到位置1000h,然后到位置1080h,两个完成可能以任意顺序返回

1 . Completion返回:数据从1000h到107Fh。

2 . Completion返回:1080h到10FFh的数据。

-或

1.Completion返回:从1080h到10FFh的数据。

2.Completion返回:数据从1000h到107Fh

由读事务观察到的更新顺序和粒度

作为更新排序的一个例子,假设数据块位于主机内存中,主机CPU首先写入位置a,然后写入另一个位置b。使用单个读事务读取该数据块的请求程序不能保证按照顺序观察这些更新。换句话说,无论位置A和B在数据块中的位置如何,请求者可能在位置B中观察到更新的值,而在位置A中观察到旧的值。除非Completer对更新顺序做出自己的保证(在本规范之外),否则依赖于更新顺序的Requester必须在启动对位置a的后续读取以返回其更新值之前,通过一个读事务观察对位置B的更新。

作为更新粒度的一个例子,如果主机CPU向主机内存写入一个四字(QW),那么从主机内存读取该QW的请求程序可能会看到QW的一部分更新了,而另一部分包含旧值。

虽然本规范没有要求,但强烈建议主机平台保证,当主机CPU将对齐的DW或对齐的qw写入主机内存时,PCI Express读取观察到的更新粒度不会小于DW

cacheline之间不需要排序

Root Complex作为单个内存读取的Completer,从主机内存请求多个cacheline,允许同时获取多个cacheline,以帮助促进多cacheline Completion,受Max_Payload_Size限制。这些缓存读取之间不需要排序关系

由写事务提供的更新顺序和粒度

如果完成者接受了包含多个双字(DWs)且清除了宽松排序位(Relaxed Ordering bit)的单个写入事务,则Completer数据缓冲区中对位置的更新的观察顺序必须是递增的地址顺序

如果路径上的PCI或PCI- x桥将多个写事务合并为一个事务,则需要这种语义。但是,观察到的对Completer数据缓冲区的更新的粒度超出了本规范的范围。

虽然本规范没有要求,但强烈建议主机平台保证当PCI Express写入更新主机内存时,主机CPU观察到的更新粒度不会小于DW。

作为更新顺序和粒度的一个示例,如果请求程序将QW写入主机内存,在某些情况下,主机CPU从主机内存读取该QW可以观察到第一个DW已更新,第二个DW包含旧值。

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

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

相关文章

Label-Wise Graph Convolutional Network for Heterophilic Graphs

推荐指数: #paper/⭐⭐ 发表于:LoG 2022 推荐指数是因为22年,所以给2行. 贡献:用MLP来区分不同的标签信息. 思想阐述: 假设 N k ( v ) \mathcal{N}_{k}(v) Nk​(v)表示节点v标签为k的邻居.我们定义基于 a v , k a_{v,k} av,k​为聚合标签为k的邻居:(即只聚合标签为k的邻居) a…

拒绝内卷:利用4P营销理论打造汇报PPT

在当下的职场文化里,越来越激烈的“内卷”现象普遍存在。随着不得已的竞争压力、加班文化、以及技能和学历的通货膨胀,越来越多职场人不惜加大工作负荷和劳动投入。但这种过度的付出往往并未带来成比例的回报,有时还会因为过度工作而导致生产…

Oracle Java JDK 21 下载地址及安装教程

Oracle JDK 21 官方地址 https://www.oracle.com/java/technologies/downloads/#java21 1. Linux 版本 ARM64 Compressed Archive https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz ARM64 RPM Package https://download.oracle.com/java/21/late…

OpenHarmony网络协议通信—nanopb

简介 nanopb是一种小代码量的协议缓冲区实现,适用于任何内存受限的系统。 下载安装 直接在OpenHarmony-SIG仓中搜索nanopb并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 将下载的Nanopb库代码存在以下路径:./third_party/nanopb 修改添…

谷歌反垄断官司败诉后,或又面临被拆分风险?

KlipC报道:上周8月5日,美国法院裁定谷歌的搜索业务违反了美国反垄断法,非法垄断在线搜索和搜索文本广告市场。据悉,胜诉的美国司法部正在考虑拆分谷歌。其他选项包括强制谷歌与竞争对手分享更多数据,以及防止其在人工智…

C# Log4net日志 配置 与AppenderSkeleton

https://www.cnblogs.com/yaopengfei/p/9428206.html 一、Log4Net简介 Log4net是从Java中的Log4j迁移过来的一个.Net版的开源日志框架,它的功能很强大,可以将日志分为不同的等级,以不同的格式输出到不同的存储介质中,比如&#x…

Vue框架学习笔记-6

Vue中的路由 Vue中的路由(Routing)是通过Vue Router这个官方提供的路由管理器来实现的。Vue Router允许你通过不同的URL访问应用中不同的页面(组件),而无需重新加载页面。这对于构建单页应用(SPA, Single …

数字引领风尚·智能改变生活“青岛电博会”路演活动(济南站)

2024CICE中国国际消费电子博览会路演活动(济南站)成功举行 数字引领风尚,智能改变生活。 8月7日,50余家行业协会、企业嘉宾、展商代表等云集2024中国国际消费电子博览会路演活动(济南站)现场,共…

【香菇带你学Mysql】Linux下Mysql8使用二进制安装包安装教程【建议收藏】

⚠️ 本人声明:本教程可100%复现​ 网上看了很多Mysql8安装的方式,基本上都是都过一个yum方式直接访问公网下载依赖资源安装的。 但是在企业内部一般并不允许生产环境直接连接公网。针对此情况。本文将介绍如何在内网环境下使用二进制安装包本地安装方式…

【多线程】乐观/悲观锁、重量级/轻量级锁、挂起等待/自旋锁、公平/非公锁、可重入/不可重入锁、读写锁

文章目录 乐观锁和悲观锁重量级锁和轻量级锁挂起等待锁和自旋锁公平锁和非公平锁可重入锁和不可重入锁读写锁相关面试题 锁:非常广义的概念,不是指某个具体的锁,所有的锁都可以往这些策略中套 synchronized:只是市面上五花八门的锁…

新形势下职业教育云计算人才培养策略

一、引言 在数字化转型的浪潮中,云计算作为核心技术之一,正在深刻影响着各行各业的发展。职业教育作为培养技术技能型人才的重要途径,需要紧跟时代步伐,不断优化和创新云计算人才培养模式,以满足社会对云计算人才的迫…

基于MyBatis-plus的SpringBoot开发

目录 一、SpringBoot整合mybatis 二、SpringBoot整合mybatis-plus 1、什么是mybatis-plus? 2、mybatis-plus的特性 3、mybatis-plus的使用 (1)编写注解配置实体类与关系表映射关系 (2)mapper层 (3…

Sandbox: rsync.samba(80134) deny(1) file-write-create

Xcode15运行报错:Sandbox: rsync.samba(80134) deny(1) file-write-create/xxx/xxx 如下图: 解决办法: Build Settings 搜索 sandbox,把 Build Options 中的 User Script Sandboxing改为 NO

iPhone很多空相簿怎么删除:简化你的照片库

随着我们使用iPhone拍摄越来越多的照片和视频,管理这些内容的需求也随之增加。创建相簿是组织照片的一种便捷方式,但随着时间的推移,可能会产生许多未使用或空的相簿。这些空相簿不仅占用了照片应用的界面空间,也让照片库显得更加…

代码随想录算法训练营第四十二天|广度优先搜索理论基础、岛屿数量:深搜版、岛屿数量:广搜版

广度优先搜索理论基础 广搜(bfs)是一圈一圈的搜索过程。因为广搜是从起点出发,以起始点为中心一圈一圈进行搜索,一旦遇到终点,记录之前走过的节点就是一条最短路。 广搜的过程:我们从图中可以看出&#x…

HTML+CSS进阶用法(上)——平面转换、渐变、空间转换

欢迎来到CSS变换的世界,这里充满了创意和可能性。在本篇博客中,我们将一起学习如何使用transform属性来实现各种平面和空间转换效果,包括位移、旋转、缩放,以及如何通过渐变和动画来增强我们的网页设计。无论你是初学者还是有经验…

【区块链+金融服务】基于区块链的区域股权金融综合服务平台 | FISCO BCOS应用案例

区域性股权市场是我国资本市场的重要组成部分,是多层次资本市场体系的基石。区块链技术与区域性股权市场 分散特征天然匹配,从新型金融基础设施层面为场外参与各方提供公共的可信服务,以技术手段完善市场基础条 件,弥补区域性短板…

仿RabbiteMq实现简易消息队列正式篇(需求分析)

TOC 目录 MQ的实现方法 RabbitMq中的相关概念 消息队列系统模块划分 总体划分 服务端模块 数据管理模块 虚拟机数据管理模块 交换机路由模块 消费者管理模块 信道(通信)管理模块 连接管理模块 服务端BrokerServer模块 客户端模块 消费者管…

iPhone 16 机模视频曝光,五种颜色各有千秋

科技博主的最新视频分享了苹果 iPhone 16 标准版的机模上手体验。 视频中展示了五种颜色的 iPhone 16:深邃的蓝色、柔和的粉色、纯净的白色、经典的黑色和生机勃勃的绿色。 与 iPhone 15 相比,iPhone 16 弃用了黄色,新增了白色,…

等保测评中的供应链安全管理:构建安全的数字生态

在数字化转型的浪潮中,供应链已成为企业运营的核心环节,同时也是信息安全的潜在脆弱点。等保测评,作为我国信息安全等级保护制度的重要组成部分,对供应链安全管理提出了明确的要求,旨在构建一个安全、可靠的数字生态。…