声明:此文章为原创,转载请注明 转自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相关推荐

  1. PCI Express学习篇---Power Management(一)

    声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/115576240 此篇为Power Managemen ...

  2. PCI Express学习篇:Power Management(一)

    https://blog.csdn.net/weixin_48180416/article/details/115576240 前言 此篇为Power Management概述.下一篇介绍L1低功耗状 ...

  3. PCI Express学习篇---Power Management(二)

    声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/115576691 此篇介绍L1低功耗状态.下一篇介绍L ...

  4. PCI Express学习篇---物理层电气特性(三)Transmitter Compliance Test

    声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/116082488 PHY Electrical Com ...

  5. PCI Express学习篇:Power Management(二)

    原文链接:https://blog.csdn.net/weixin_48180416/article/details/115576691 一. 前言 此篇介绍L1低功耗状态.下一篇介绍L1 Subst ...

  6. PCI Express学习篇---物理层LTSSM(三) Recovery.Equalization详解

    声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/116564143 Link EQ的过程是首次进入8GT ...

  7. PCI Express解析——系列文章【2】:PCIe原理分析之——PCI Express线路基础

    PCI Express解析--系列文章[2]:PCIe原理分析之--PCI Express线路基础 前文我们了解了一些概述的基本PCIe总线的简单知识点,下面本文从一些基本原理做一些分析 2 PCIe ...

  8. PCIe 6.0 – 关于 PCI Express Gen6 您需要知道的一切

    PCI Express ®  6.0 (PCIe ® 6.0) 规范由 PCI-SIG ®于 2022 年 1 月发布.最新一代的无处不在的 PCIe 标准带来了许多令人兴奋的新功能,旨在提高计算性能 ...

  9. 浅谈PCI Express体系结构(一)

    PCI(Peripheral Component Interconnect)总线的诞生与PC(Personal Computer)的蓬勃发展密切相关.在处理器体系结构中,PCI总线属于局部总线(Loc ...

最新文章

  1. 整理对应_JSP第二版课后习题答案【侵权联系我删除】
  2. java volatile 多线程,java多线程-volatile的使用
  3. 自动驾驶汽车测试在美惹争议,原因为何?
  4. SAP业务测评之库存预留
  5. 利用jdbc做一个购买的事务
  6. 第46讲:遇到动态页面怎么办?详解渲染页面爬取
  7. 计算机python程序设计导论,程序设计导论:Python计算与应用开发实践(原书第2版)...
  8. windows模拟微信小程序_Windows 版微信新版本内测!小程序可以直接添加到电脑桌面了...
  9. Eclipse插件安装出现Duplicate location错误
  10. Scratch:海龟绘图(九)
  11. vue列表排序实现中的this问题
  12. ios input框无法输入问题
  13. oracle 导入导出数据库、删除用户以及该用户所有的对象
  14. web前端炫酷特效-CSS3制作环形星星发光动画
  15. 利用java反射原理写了一个简单赋值和取值通用类【改】
  16. vba 数组填充单元格
  17. 常用视频播放器插件汇总
  18. 集线器与交换机的区别
  19. c# - 美元符号是什么$
  20. 在深圳,想转行学IT到...

热门文章

  1. ITerm2安装美化
  2. ASCII 码表及说明
  3. WPF DataGrid简单使用
  4. DHCP(漫画图文详解)
  5. 2018最新云课堂数据分析师完整版
  6. Python课设:网站设计
  7. docker ps 命令报错bash: ps: command not found
  8. caTools一个奇特的工具集
  9. web黑盒邮箱临界值验证
  10. 【长更】一句话题解(各大oj)