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

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

3天内不再提示

扒一扒PCIe中的Flow Control

Spinal FPGA 来源:Spinal FPGA 2023-07-03 09:20 次阅读

编 者 按

续接上文,接续扒一扒PCIe中的Flow Control

链路层把TLP分为几类?

在处理TLP报文时,根据Fmt字段以及Type字段可以将TLP报文分为二十多种,当TLP报文送至数据链路层时,数据链路层在进行流量控制处理时则不会考虑这么多种情况。数据链路层里面的Flow Control,则会将报文分为三类:

Post:不需要Target端返回响应报文的TLP请求。

Non-Post:需要Target端返回响应报文的TLP请求。

Cmpl:响应TLP报文。

而同时,数据链路层在进行流量管理时会将TLP的数据报文头、数据负载分开进行流量控制。也就意味着数据链路层的流量控制每个VC分为了六个通道:

Post Header

Post Data

Non-Post Header

Non-Post Data

Cmpl Header

Cmpl Data

这在cocotb-ext中的FcChannelState中可以看出:

23f421b6-18b7-11ee-962d-dac502259ad0.png

Flow Control初始化

Flow Control的初始化在DL_INIT中:

241eac4c-18b7-11ee-962d-dac502259ad0.jpg

所用到的DLLP报文为:

2434498a-18b7-11ee-962d-dac502259ad0.jpg

按照Spec里面的规定,Flow Control的初始化顺序为:

InitFC1-P (first)

InitFC1-NP (second)

InitFC1-Cpl (third)

无论是InitFC1、InitFC2,其报文格式定义基本相同。InitFC1、InitFC2所做的事情也基本相同,就是告知发送端Header、Data的令牌数。看到一段网上的解释:“FC_Init1和FC_Init2干的活不是差不多嘛,为什么还需要FC_Init2呢?原因是,不同的设备完成FC_Init1的时间可能是不同的,增加FC_Init2是为了保证每个设备都能收到FC初始化DLLP。”

如果FC为0,则表示该通道不受令牌限制,即无流量控制(EP设备以及不支持P2P的RC的Cmpl常设为0,故建议在涉及时对于Cmpl时建议仔细考虑。像Xilinx PCIe IP EP模式的的RC接口,不建议做反压)。

这里着重看下 Scale和FC域,FC域为12bit,随着PCIe链路速度的提升,Spec规定了Scale域以扩大令牌数:

2458ecb8-18b7-11ee-962d-dac502259ad0.jpg

按照协议里,最大可以支持到16bit。而FC域仅有12bit,协议里规定了FC的定义:

2472be7c-18b7-11ee-962d-dac502259ad0.jpg

在cocotbext-pcie里,关于FC位宽的定义,Header、Data采用12、16bits:

24906094-18b7-11ee-962d-dac502259ad0.png

24aefd56-18b7-11ee-962d-dac502259ad0.png

Flow Control的初始化在cocotbext-pcie中也很明了简单:

24d250bc-18b7-11ee-962d-dac502259ad0.png

可以看到,由于FC_INIT1、FC_INIT2内容基本一致,FC2基本没有做什么处理(具体真实的实现不了解)。

》令牌消耗

发送端发送一个TLP报文,在数据链路层需消耗Header、Data令牌。每一个TLP报文需消耗一个TLP,而如果有数据负载则每四个DW消耗一个Data令牌:

2507735a-18b7-11ee-962d-dac502259ad0.png

数据链路层进行判定是否能发送该数据出去:

25304ffa-18b7-11ee-962d-dac502259ad0.png

》令牌更新

令牌周期性的更新所用到的DLLP格式为:

2552500a-18b7-11ee-962d-dac502259ad0.jpg

接收端按照HdrFC、DataFC中的内容更新其令牌:

256662fc-18b7-11ee-962d-dac502259ad0.png

这里面看起来有一点不太合适的地方就是没有考虑Scale,按照DLLP里面的报文解析:

25974034-18b7-11ee-962d-dac502259ad0.png

由于FC只有12bit,这里对于16bit的场景支持欠妥。

更新周期

无论是Flow Control还是之前所说到的ACK/NAK,协议中都规定了最大发送间隔时间。在cocotbext-pcie中的计算方式如下:

25bfa84e-18b7-11ee-962d-dac502259ad0.png

这里面的计算单位是Symbol Time(物理层发送1Byte数据的时间)。这里面可能乍看懵逼,这部分在PCIe Spec 5.0里对应Appendixes H里:

Flow Control Latency:

26029280-18b7-11ee-962d-dac502259ad0.jpg

ACK Latency:

2638349e-18b7-11ee-962d-dac502259ad0.jpg

审核编辑:汤梓红

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

    关注

    1629

    文章

    21729

    浏览量

    602964
  • PCIe
    +关注

    关注

    15

    文章

    1234

    浏览量

    82575
  • TLP
    TLP
    +关注

    关注

    0

    文章

    32

    浏览量

    15625
  • Flow
    +关注

    关注

    0

    文章

    10

    浏览量

    8839
  • 报文
    +关注

    关注

    0

    文章

    38

    浏览量

    4027

原文标题:原来如此—PCIe的Flow Control

文章出处:【微信号:Spinal FPGA,微信公众号:Spinal FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    与无线网络相关的那些事

    ,体验上网带来的愉悦(ps:天下没有免费的午餐,认证登陆界面的广告以及商户提供产品内容,也能接受这样的广告植入形式)在上菜时,而不是先吃而是拍照片发微博\微信到朋友圈内,这也间接的为商户进行口碑宣传。你与无线网络都有哪些趣
    发表于 05-27 11:40

    我看过的那些Linux相关的书籍

    来北京工作已经个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位。有时茫然看着窗外车水马龙,会有些迷茫自己选择的是对还是错。  题外话不多说,回归这次的主题,
    发表于 07-04 06:39

    渣机产品有哪些参数

     铣挖机履带式挖掘装载机(俗名:渣机)是种连续生产的高效率出矿设备,主要用于矿山岩巷、半煤岩巷掘进,也可以用于引水洞、铁路隧道施工和国防洞窟施工的装载作业,渣机与我公司生产的煤
    发表于 09-02 08:00

    C语言hello world背后的内幕

    行时,它在内存是什么样子的?程序的执行入口为什么是 main 函数?可执行文件的内部结构是怎么样的?闲话少说,让我们进入正题, hello world 背后的内幕。注:本文是在
    发表于 09-30 10:31

    采用Flow Control机制的PCIe总线

    PCIe总线为了解决这问题,提出了Flow Control的概念,如下图所示。PCIe总线
    的头像 发表于 04-26 08:54 5862次阅读
    采用<b class='flag-5'>Flow</b> <b class='flag-5'>Control</b>机制的<b class='flag-5'>PCIe</b>总线

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

    PCIe Spec规定,PCIe设备的每个端口(Ports)都必须支持Flow Control机制,在发送TLP之前,
    的头像 发表于 05-24 09:26 7143次阅读
    <b class='flag-5'>Flow</b> <b class='flag-5'>Control</b>机制可以显著地提高总线的传输效率

    美容仪哪个牌子好?来令人眼花缭乱的日本美容仪

    获得了大众的喜爱。美容仪哪个牌子好?小编给你日本的美容仪神器品牌。 我们都知道,日本是个科技大国,不管是电器类还是美容仪类,都收获了世界大批粉丝的追捧,市面上的美容仪品牌多种多样,价格相差也大,各大美容仪从洗脸到瘦脸
    发表于 04-16 19:50 9851次阅读
    美容仪哪个牌子好?来<b class='flag-5'>扒</b><b class='flag-5'>一</b><b class='flag-5'>扒</b>令人眼花缭乱的日本美容仪

    好用的日本家用美容仪品牌,让你享受清洁肌肤的乐趣

    了,很多人都愿意尝试美容仪带来的护肤体验。美容仪真的有用吗?它的价格相比较于去美容院会划算很多,但是却比般的护肤保养品昂贵,是真的物有所值还是商家的噱头?今天就来日本好用的家用
    发表于 06-04 21:03 852次阅读

    店saas系统创新性服务平台的优势是什么

    也在不断升级换代,比如目前新代的店智能数字店铺系统。 前沿科技让店铺数字化管理趋于精准,店数字店铺系统除了常规的收银支付等最基本的功能外,结合当前最前沿的人工智能、5G、大数据等技术于
    的头像 发表于 10-15 10:14 2034次阅读

    中断为什么不能调printf?

    前面说会写下Modbus-RTU的实现,写了1000多字了,有兴趣的稍等下哈。前面在个群里看到个朋友在个串口接收中断里打印遇到了问
    发表于 12-04 12:21 0次下载
    <b class='flag-5'>扒</b><b class='flag-5'>一</b><b class='flag-5'>扒</b>中断为什么不能调printf?

    个超棒的stm32的开源usb-can项目,canable及PCAN固件

    个超棒的stm32的开源usb-can项目,canable及PCAN固件
    发表于 12-20 18:55 36次下载
    <b class='flag-5'>扒</b><b class='flag-5'>一</b>个超棒的stm32的开源usb-can项目,canable及PCAN固件

    PCIeFlow Control

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

    雕铣机、雕刻机和加工中心之间的区别

    中心、雕铣机、雕刻机,之间有什么区别?相信这句话很多刚刚加入这个圈的朋友都会问,然后在买机械设备的时候不太懂,不知道怎么区分,到底应该买什么样的设备,才能达到自己的需求,今天小编就为大家他们三者之间的区别。
    的头像 发表于 01-15 09:48 755次阅读

    晶振频率漂移的原因

    晶振频率漂移的原因  晶振频率漂移是指晶振器输出频率在长时间使用逐渐偏离其标称频率的现象。晶振频率漂移是种晶振器的固有性能,其原因
    的头像 发表于 01-26 14:20 996次阅读

    折叠屏手机背后的“黑科技”

    折叠屏手机似乎正成为各大品牌下步推新的产品,那么今天,就让我们这里面到底有什么“黑科技”。
    的头像 发表于 02-26 10:34 1285次阅读
    <b class='flag-5'>扒</b><b class='flag-5'>一</b><b class='flag-5'>扒</b>折叠屏手机背后的“黑科技”