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

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

3天内不再提示

采用Flow Control机制的PCIe总线

SwM2_ChinaAET 来源:未知 作者:李倩 2018-04-26 08:54 次阅读

PCIe总线设计之初,主要是针对于音频视频传输等这些对时间要求特别敏感的应用的。为了保证这些特殊应用的数据包能够得到优先发送,PCIe Spec中为每一个包都分配了一个优先级,通过TLP的Header中的3位(即TC,Traffic Class)。

如下图所示:

TC值越大,表示优先级越高,对应的包也就会得到优先发送。一般来说,支持QoS(Quality of Service)的PCIe总线系统,对于每一个TC值都会有一个独立Virtual Channel(VC)与之对应。这个Virtual Channel实际上就是一个Buffer,用于缓存数据包。

注:当然也有那些只有一个VC Buffer的,此时不管包的TC值如何,都只能缓存在同一个VC Buffer中,自然也就没有办法保证按优先级传输了。这样的PCIe设备称之为不支持QoS的PCIe设备。

一个简单的QoS的例子如下图所示:

图中左下角的Endpoint(即Isochronous Traffic)的优先级比右边的Endpoint(即Ordinary Traffic)的优先级要高。因此,在Switch中,来自左边的Endpoint的包会得到优先传输。而Switch的这种判决操作叫做端口仲裁(Port Arbitration)。

默认情况下,VC Buffer中的数据包是按照包达到的时间顺序,依次放入VC Buffer中的。但是也并不是总是这样,PCIe总线继承了PCI/PCI-X总线关于Transaction-Ordering和Relaxed-Ordering的架构,但也只是针对相同的TC值才有效。关于Transaction-Ordering和Relaxed-Ordering,大家可以去参考PCI-X的Spec,这里不再详细地介绍。

对于大部分的串行传输协议而言,发送方能够有效地将数据发送至接收方的前提是,接收方有足够的接收Buffer来接收数据。在PCI总线中,发送方在发送前并不知道接收法是否有足够的Buffer来接收数据(即接收方是否就绪),因此经常需要一些Disconnects和Retries的操作,这将会严重地影响到总线的传输效率(性能)。

PCIe总线为了解决这一问题,提出了Flow Control的概念,如下图所示。PCIe总线中要求接收方必须经常(在特定时间)向发送方报告其VC Buffer的使用情况。而报告的方式是,接收方向发送方发送Flow Control的DLLP(数据链路层包),且这种DLLP的收发是由硬件层面上自动完成的,并不需要人为的干预。需要注意的是,虽然这一操作旨在数据链路层之间进行,但是这些VC Buffer的使用情况对于应用层(软件层)也是可见的。

采用Flow Control机制的PCIe总线,相对于PCI总线获得了更高的总线利用率。虽然增加了Flow Control DLLP,但是这些DLLP对带宽的占用极小,几乎对总线利用率没有什么影响。

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

    关注

    10

    文章

    2706

    浏览量

    87211
  • PCIe
    +关注

    关注

    13

    文章

    1083

    浏览量

    80835

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

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

收藏 人收藏

    评论

    相关推荐

    PCIE总线基本资料

    本帖最后由 eehome 于 2013-1-5 10:11 编辑 PCIE总线基本资料
    发表于 08-06 10:47

    PCIE总线的FPGA设计方法

    `PCIE总线的FPGA设计方法`
    发表于 10-30 14:30

    PCIE总线详细资料

    PCIE总线详细资料
    发表于 02-15 15:23

    PCIe总线的复位方式是什么?

    PCIe总线规定了两个复位方式:conventional Reset和FLR(FunctionLevel Reset),而Conventional Reset由进一步分为两大类:Fundamental Reset和Non-Fundamental Reset。
    发表于 10-16 08:19

    PCIe总线和PCI总线有哪些不同之处呢

    PCIe是什么?PCIe的架构是由哪些部分组成的?PCIe总线和PCI总线有哪些不同之处呢?
    发表于 10-26 08:10

    PCIE总线基本资料

    PCIE总线基本资料 与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两
    发表于 05-10 14:45 0次下载

    PCIE总线的多DSP系统接口设计

    PCIE总线的多DSP系统接口设计
    发表于 10-31 10:42 23次下载
    <b class='flag-5'>PCIE</b><b class='flag-5'>总线</b>的多DSP系统接口设计

    PCIe总线的通信机制

    那么为什么要分为Non-Posted和Posted两种类型呢?对于Memory Writes来说,对效率要求较高,因此采用了Posted的方式。但是这并不意味着Posted类型的操作不需要Completer进行应答,只是此时Completer采用了另一种应答
    的头像 发表于 04-24 09:41 1.2w次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>总线</b>的通信<b class='flag-5'>机制</b>

    PCIe总线必须要先完成Flow Control初始化

    由于VC0是默认使能的,所以当Flow Control初始化开始时,其会被自动的初始化。其他的Virtual Channel是可选的,只有当被配置为使能的时候才会被初始化。
    的头像 发表于 05-24 09:18 7564次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>总线</b>必须要先完成<b class='flag-5'>Flow</b> <b class='flag-5'>Control</b>初始化

    Flow Control机制可以显著地提高总线的传输效率

    收这个TLP。当PCIe设备支持多个VC(Virtual Channel)时,Flow Control机制可以显著地提高总线的传输效率。
    的头像 发表于 05-24 09:26 6642次阅读
    <b class='flag-5'>Flow</b> <b class='flag-5'>Control</b><b class='flag-5'>机制</b>可以显著地提高<b class='flag-5'>总线</b>的传输效率

    PCIe扫盲—PCIe错误检测机制的详细资料概述

    PCIe总线错误检测囊括了链路(Link)上的错误以及包传递过程中的错误,如下图所示。用户设计的应用程序层中的错误不属于链路传输中的错误,不应当通过PCIe的错误检测与处理机制处理,一
    的头像 发表于 08-18 11:05 1.5w次阅读

    PCIe总线的热插拔机制

    当然,热插拔不仅仅是硬件的事,其需要软硬件协同实现。要想实现热插拔功能,操作系统、主板热插拔驱动器、PCIe卡设备驱动以及PCIe卡硬件功能都必须支持热插拔,缺一不可。从PCIe卡设备硬件功能的角度来看,其需要支持Quiesce
    的头像 发表于 09-06 09:20 2w次阅读

    PCIe错误报告的两种机制详解

    机制PCIe设备必需支持的一种错误报告机制,同时设备会定义最小的错误报告请求。应该是通过配置Device Control和Command寄存器做到通知其他设备产生了错误的一种
    的头像 发表于 10-23 11:14 2.2w次阅读
    <b class='flag-5'>PCIe</b>错误报告的两种<b class='flag-5'>机制</b>详解

    扒一扒PCIe中的Flow Control

    在处理TLP报文时,根据Fmt字段以及Type字段可以将TLP报文分为二十多种,当TLP报文送至数据链路层时,数据链路层在进行流量控制处理时则不会考虑这么多种情况。数据链路层里面的Flow Control,则会将报文分为三类:
    的头像 发表于 07-03 09:20 1297次阅读
    扒一扒<b class='flag-5'>PCIe</b>中的<b class='flag-5'>Flow</b> <b class='flag-5'>Control</b>

    扒一扒PCIe中的Flow Control

    在处理TLP报文时,根据Fmt字段以及Type字段可以将TLP报文分为二十多种,当TLP报文送至数据链路层时,数据链路层在进行流量控制处理时则不会考虑这么多种情况。
    发表于 07-12 15:16 777次阅读
    扒一扒<b class='flag-5'>PCIe</b>中的<b class='flag-5'>Flow</b> <b class='flag-5'>Control</b>