PCIe专题学习——2.2

上篇我们对PCIe的一些基础概念做了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-nased layered protocol),主要包括事务层(Transcation layer),数据链路层(Data link layer)和物理层(physical layer)

一:TLP事务处理方式

看过前面TLP的前世今生精彩大结局后,相比大家应该都知道TLP(Transaction Layer Packet)在事务层的角色,如果不知道,就默默翻看一下前面的文章;

TLP很重要,也有很多种类型,我们先来个全局的认识,看看PCIe到底定义了多少种TLP种类呢?

这么多TLP,每个都是什么含义,到底是干什么的呢?不急,我们慢慢的揭开他们神秘的面纱~

之前的介绍中,我们提到过PCIe中总线事务有两大类:Non-Posted和Posted:

  • Non-Posted: 需要completion返回响应包;

  • Posted:不需要comletion返回响应包;

 注:Memory Read Lock只适用在兼容PCI/PCI-X的陈旧设备中,在这里就先忽略了。

我们线从Non-posted和posted阵营中的各挑选一些代表介绍一下TLP事务的具体作用;

Non_Posted Memory Read:

步骤:

1:PCIe初始化Memory Read请求;

2:经过Switch到达Root Complex;

3:Root收到Memory Read之后就在系统缓存中抓取数据并回传完成报告(Completion)

4:同样经过Switch到达设备端,设备端收到完成报告后结束此次事务请求;

Non-posted IO and Configuration Write:

步骤:

1: Root初始化IO Write请求;

2:请求和数据经过Switch到达设备端;

3:设备端收到IO Write的请求以及数据之后,开始将数据写入到PCIe设备中,并回传完成报告(Completion);

4:同样经过Switch到达Root,Root收到完成报告后结束此次事务;

注意:Non_posted 写请求只能由处理器(也可以理解为Root端)发出!

Posted Memory Write:

步骤:

1:Root 初始化Memory Write请求;

由于Memory write的请求是posted方式,不要求有完成回报(Completion)所以在memory write请求发送之后,Root不用等任何回应,就可以继续做其他事情;

2:PCIe设备端收到Memory Write请求之后就开始专心写入动作,也不必准备完成回报(Completion);

不需要完成回报(completion)虽然可以加速事务处理的速度,从而提高系统性能,但是,如果在设备端出现error,具体内容也不会回报给Root,而是回给Root发送一条信息让其告诉软件有error需要处理;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值