爱站seo查询,做一个大型网站需要多少钱,搜索引擎优化指的是什么,ui下载高清素材的网站有哪些Transaction Ordering
Transaction Ordering Rules
表2-40定义了PCI Express Transactions的排序要求。该表中定义的规则统一适用于PCI Express上所有类型的事务#xff0c;包括内存、I/O、配置和消息。该表中定义的排序规则适用于单个流量类(TC)。不同TC标签的事务之间没有…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包含旧值。