PCI Express学习篇---PCIe Ordering Rule
声明:此文章为原创,转载请注明 转自https://mp.csdn.net/editor/html/115790068
针对同一TC,PCIe有一套Ordering rules.
Ordering rule的作用:
- 兼容传统的总线(PCI,PCI-X,AGP)
- 确保Completion是确定的,顺序是可控的
- 避免deadlock死锁
- 通过最小化read latency和管理read write ordering以此来最大化性能和吞吐率
有三种模型:
- Strong Ordering: 同一TC,需要采用强序(Producer/Consumer模型的前提下)。
- Weak Ordering: 如果没有依赖关系(非Producer/Consumer模型),不需要采用强序,可以safely reorder.
- Relaxed Ordering: 某些transactions可以通过软件控制,优点是可以像weak ordering一样提供性能,但是是由软件指定没有依赖关系.
同一TC采用一套PCIe Ordering rule, 但是为了设计简单,不同TC但是映射到同一VC时规则也采用同一套规则。
以下介绍PCIe Ordering Rule
注意:Y/N表示两种情况都不会违反PCIe Ordering Rule
Posted Request : Memory Write Request or a Message Request.
Read Request: Configuration Read Request, an I/O Read Request, or a Memory Read Request.
NPR (Non-Posted Request) with Data: Configuration Write Request, an I/O Write Request, or an AtomicOp Request.
正常条件下(无RO,无IDO)
A2a---P不能超越之前发起的P
B2a, C2a---NP不能超越之前发起的P
D2a---CPL不能超越之前发起的P
B3,B4,C3,C4---NP允许超越之前的NP
A5a---P允许超越之前的CPL
B5,C5---NP允许超越CPL
D5a---CPL允许超越CPL(不同的Transaction ID)
D5b---CPL不允许超越CPL(同一Transaction ID)
RO情况下:(与P相关)
A2b---RO,P可以超越之前的P
D2b---RO, CPL可以超越之前的P
C2b---RO, NPR with data可以超越之前的P
IDO情况下:(与P相关)
A2b---IDO,P可以超越之前的P
B2b,C2b---IDO,NP可以超越之前的P
D2b---IDO,CPL可以超越之前的P
可以避免死锁的情况:(与NP相关)
A3,A4---P可以超越之前NP;
D3,D4--CPL可以超越之前的NP;
A5b--P可以超越之前的CPL(只存在于PCI Express to PCI/PCI-X Bridge)
以下介绍Producer/Consumer模型
1. Producer发起Posted Request给Memory;
2 and 3. Processor发起NP轮询Flag=0,表示Producer没有写完;
4. Producer写完之后发起Posted Request, Flag=1
5 and 6. Processor发起NP轮询Flag=1,表示Producer写完;
7. Consume发起MWr清除Flag;
8 and 9.Producer想继续传输数据,NP检查Status
10 and 11. Processer读Memory中的数据;
12. Processer读完之后MWr 把Status置为1;
13 and 14. Processor读到Status为1;
15. Producer发起MWr清除Status.
总结上述过程:Producer把数据都搬运到Mem后Consumer开始读数,Consumer读完所有数据后Producer才会继续搬数。
可能存在的问题:
如果Switch中的CPL超越了P,这种情况下Processor读到Flag=1,但是此时数据可能还没有搬完
所以PCIe Ordering rule“CPL must not pass P”这条规则保证了CPL和P之间的Ordering,避免了上述问题。
以下介绍提高性能的方式之一:Relaxed Ordering(RO)
设置RO的包允许在Switch或RC中,对Requester和Completer的通路上进行reorder,来改善性能。
比如如果没有设置RO,Posted buffer满了导致Posted包block,会block其他所有类型的包,如果软件知道后面的包与前面的包没有顺序上的依赖关系,可以设置RO,这样就不会block其他包了。
可以使用RO的包类型
除了上述表中,还有NPR with data可以超越Memory Write/Message Request
以下介绍提高性能的方式之一:ID based Ordering(IDO)
来自不同requester,顺序上不太可能有依赖关系。但是如果是PCIe Ordering rule也会block没有依赖关系的TLP Stream.
如果不同的TLP Stream, 即Requester ID(or Completion ID of CPL)不同的情况下, 可以允许packet re-ordering.
通过Device Control 2 register和TLP中的Attr[2]实现IDO
什么时候用到IDO?
Spec强烈建议safely的情况下同时使用RO和IDO。
- 例如EP“directly Communicating”with only one other entity, most commonly the RC(directly Communicatiing”是指DMA traffic, PIO traffic, and interrupt traffic),所有TLP都可以使用IDO,是安全的。
- 如果EP与多个Agent通信(例如communicating with RCiEPs or communicating using P2P Root Port traffic)IDO不是安全的,
在上文的例子中,EP DMA写memory, 之后在Peer to Peer写Flag,如果Flag这个device也发起一个同样地址的DMA写,通常情况下两个DMA写是in order的,但是如果使能了IDO后,顺序不能保证。
RO也是同理,包含控制traffic用RO是不安全的。
对于Completer,如果使能IDO,建议所有的CPL都使能。
PCI Express学习篇---PCIe Ordering Rule相关推荐
- PCI Express学习篇---Power Management(一)
声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/115576240 此篇为Power Managemen ...
- PCI Express学习篇:Power Management(一)
https://blog.csdn.net/weixin_48180416/article/details/115576240 前言 此篇为Power Management概述.下一篇介绍L1低功耗状 ...
- PCI Express学习篇---Power Management(二)
声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/115576691 此篇介绍L1低功耗状态.下一篇介绍L ...
- PCI Express学习篇---物理层电气特性(三)Transmitter Compliance Test
声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/116082488 PHY Electrical Com ...
- PCI Express学习篇:Power Management(二)
原文链接:https://blog.csdn.net/weixin_48180416/article/details/115576691 一. 前言 此篇介绍L1低功耗状态.下一篇介绍L1 Subst ...
- PCI Express学习篇---物理层LTSSM(三) Recovery.Equalization详解
声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/116564143 Link EQ的过程是首次进入8GT ...
- PCI Express解析——系列文章【2】:PCIe原理分析之——PCI Express线路基础
PCI Express解析--系列文章[2]:PCIe原理分析之--PCI Express线路基础 前文我们了解了一些概述的基本PCIe总线的简单知识点,下面本文从一些基本原理做一些分析 2 PCIe ...
- PCIe 6.0 – 关于 PCI Express Gen6 您需要知道的一切
PCI Express ® 6.0 (PCIe ® 6.0) 规范由 PCI-SIG ®于 2022 年 1 月发布.最新一代的无处不在的 PCIe 标准带来了许多令人兴奋的新功能,旨在提高计算性能 ...
- 浅谈PCI Express体系结构(一)
PCI(Peripheral Component Interconnect)总线的诞生与PC(Personal Computer)的蓬勃发展密切相关.在处理器体系结构中,PCI总线属于局部总线(Loc ...
最新文章
- 整理对应_JSP第二版课后习题答案【侵权联系我删除】
- java volatile 多线程,java多线程-volatile的使用
- 自动驾驶汽车测试在美惹争议,原因为何?
- SAP业务测评之库存预留
- 利用jdbc做一个购买的事务
- 第46讲:遇到动态页面怎么办?详解渲染页面爬取
- 计算机python程序设计导论,程序设计导论:Python计算与应用开发实践(原书第2版)...
- windows模拟微信小程序_Windows 版微信新版本内测!小程序可以直接添加到电脑桌面了...
- Eclipse插件安装出现Duplicate location错误
- Scratch:海龟绘图(九)
- vue列表排序实现中的this问题
- ios input框无法输入问题
- oracle 导入导出数据库、删除用户以及该用户所有的对象
- web前端炫酷特效-CSS3制作环形星星发光动画
- 利用java反射原理写了一个简单赋值和取值通用类【改】
- vba 数组填充单元格
- 常用视频播放器插件汇总
- 集线器与交换机的区别
- c# - 美元符号是什么$
- 在深圳,想转行学IT到...