0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详细地聊一聊Non-Posted Transaction

SwM2_ChinaAET 来源:未知 作者:李倩 2018-04-25 09:14 次阅读

这篇文章来详细地聊一聊Non-Posted Transaction(包括Ordinary Read、Locked Read和IO/Configuration Writes)与Posted Writes(包括Memory Writes和Message Writes)。

Non-Posted Transaction

o Ordinary Reads

下图显示的是一个Endpoint向System Memory发送读请求(Read Request)的例子。

在这个例子中,Endpoint的读请求通过了两个Switch,然后到达其目标,即Root。Root对读请求的包进行解码后,并从中识别出操作的地址,然后锁存数据,并将数据发送至Endpoint,即包含数据的Completion包,ClpD。需要注意的是,PCIe允许每个包的最大数据量(Max Data Payload)为4KB,但实际上经常需要发送大于4KB的数据。因此,常常一个读请求会对应多个ClpD,即将大于4KB的数据分成多个包发送。如果遇到错误,则Root会通过Completion包告知相应的Endpoint。

注:Root向发送请求的Endpoint发送Completion包,是通过Request包中的BDF信息(Bus,Device和Function)进行查找对应的Endpoint的。关于BDF,会在后面的文章详细地介绍。

o Locked Reads

Locked请求实际上是PCIe为了兼容早期的PCI总线而设置的一种方式,对于非PCI兼容的设计中,是不允许使用Locked操作的。并且也只有Root可以发起Locked请求操作,Endpoint是不可以发起Locked请求操作的。下图显示的是一个简单的Locked Read请求操作:

Locked Read主要用于支持一种叫做Atomic Read-Modify-Write操作,这是一种高优先级且不可被打断的操作。主要用于测试链路状况等任务(针对PCI设备,PCIe设备禁止使用Locked操作)。此外,Locked操作采用的是目标存储寻址(Target Memory Address)来寻找Legacy Endpoint(PCI设备),而不是采用前面介绍的BDF。

o IO/Configuration Writes

下图是一个Non-Posted IO写操作的例子。和Locked操作一样,IO操作也是为了兼容早期的PCI设备,在PCIe设备中也是不建议使用。

Posted Writes

o Memory Writes

前面的文章有所提及,PCIe中的Memory写操作都是Posted的,因此Requester并不需要来自Completer的Completion。一个简单的Memory Writes例子如下图所示:

因此没有返回Completion,所以当发生错误时,Requester也不会知道。但是,此时Completer会将错误记录到日志(Log),然后向Root发送包含错误信息的Message。

o Message Writes

和其他的几种类型不太一样,Message支持多种Routing方式。比如Requester可以将Message发送至一个指定的Completer,但是不管指定的Completer是不是Root,Root都会自动的收到来自任何一个Endpoint发送的Message。此外,当Requester是Root的时候,Requester还可以向所有的Endpoint进行广播发送Message。

不得不说,Message机制的提出帮助PCIe总线省去了很多PCI总线中的边带信号。PCI中很多用于中断、功耗管理、错误报告的边带信号,在PCIe中都通过了Message来进行实现了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • pci总线
    +关注

    关注

    1

    文章

    200

    浏览量

    31528
  • 总线
    +关注

    关注

    10

    文章

    2692

    浏览量

    87151
  • PCIe
    +关注

    关注

    13

    文章

    1078

    浏览量

    80695

原文标题:【博文连载】PCIe扫盲——PCIe总线事务层入门(二)

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    我专帮人解决洗衣机程控板的问题?有的话请系我,我QQ649866336

    我专帮人解决洗衣机程控板的问题?有的话请系我,我QQ649866336
    发表于 10-05 19:46

    电子工程师之家QQ群150628376,线上线下交朋友,谈工作,...

    电子工程师之家150628376,线上线下交朋友,谈工作,人生。。喜欢的顶起。
    发表于 09-27 16:24

    Linux 下用UDP实现群聊单

    Linux 下用UDP实现群聊单,能够实现单和群聊。程序不长,可以作为学习网络的检测。
    发表于 07-19 23:37

    SRIO DIRECT I/O中 怎样能知道个LSU是否available?

    request bit used for interrupt generation. Typically used in conjunction with non-posted commands
    发表于 06-21 11:26

    下阻抗匹配

    下阻抗匹配,电路加个阻抗匹配网络,搞成和负载样的阻抗,这样岂不是多了个假负载?不是损耗了效率吗?而事实上刚好相反,哪个坛友分析下缘故
    发表于 10-31 17:55

    tws芯片的问题

    `tws般指真无线耳塞,算是彻底摆脱了线材的束缚其实tws很早就有厂家在做了,但是不如苹果的原因是tws所需要的蓝牙芯片比方说现在的大部分tws塞子,都是左耳或者右耳是蓝牙主机,用来连接手机另
    发表于 12-27 14:52

    Altium中Fill,Polygon Pour,Plane的区别和用法

    Fill会造成短路,为什么还用它呢?来Altium中Fill,Polygon Pour,Plane的区别和用法
    发表于 04-25 06:29

    你知道的和不知道的电流镜

    这期来点轻松的,你知道的和不知道的电流镜。电流源可算是模拟集成电路中最基础的内容,也是有很多花样的基本单元。电流源是笼统的叫法,具体会根据电流的流向,分别叫做电流源(Current
    发表于 06-24 06:56

    stm32的低功耗调试

    前言:物联网的大部分设备都是电池供电的,设备本身低功耗对延长设备使用至关重要,今天就实际调试总结stm32的低功耗调试。1、stm32在运行状态下的功耗上图截图自stm32l15x手册
    发表于 08-11 08:18

    7系列FPGA的供电部分

    前几篇咱们说了FPGA内部逻辑,本篇咱们再聊7系列FPGA的供电部分。首先咱们说spartan7系列,通常咱们需要使用以下电源轨:1,VCCINTFPGA内部核心电压。其不损坏FPGA器件的范围
    发表于 11-11 09:27

    下GS的波形

    对于咱们电源工程师来讲,我们很多时候都在看波形,看输入波形,MOS开关波形,电流波形,输出二极管波形,芯片波形,MOS管的GS波形,我们拿开关GS波形为例来下GS的波形。我们测试MOS管GS波形
    发表于 11-16 09:15

    平衡小车代码的实现

    前言今天代码,只有直立功能的代码。代码总体思路给定个目标值,单片机通过IIC和mpu6050通信,得知数据后,根据角度环计算出个P
    发表于 01-14 08:29

    串口环形队列常用的几种方法

    1、串口常用的几种方式查询方式可靠性很高,要考虑下个数据包覆盖上个数据包的问题,小数据量,在10个字节以内,可以这样考虑, 很简单,很方便,很可靠。但是在数据量大的时候,程序阻
    发表于 07-21 15:17

    Virtex-7 FPGA Gen3 Integrated Block 的 TAG 管理

    在 PCIE 系统里面,TAG 管理是一个重要的问题。用户逻辑依赖于 TAG 来定位 completion对应于哪个 Non-Posted 事务。所以,每个发出的 Non-Posted 操作必须有
    发表于 11-18 13:16 1508次阅读
    Virtex-7 FPGA Gen3 Integrated Block 的 TAG 管理

    PCIe总线的通信机制

    那么为什么要分为Non-PostedPosted两种类型呢?对于Memory Writes来说,对效率要求较高,因此采用了Posted的方式。但是这并不意味着Posted类型的操作不
    的头像 发表于 04-24 09:41 1.2w次阅读
    PCIe总线的通信机制