• PCIe系列专题之二:2.4 Flow Control机制概述


    一、故事前传

    之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer)。

    较为详细解释请见之前的文章:

    1. PCIe技术概述;

    2.0 PCIe Transaction layer事务层概述;

    2.1 TLP的前世今生;

    2.2 TLP事务处理方式解析。

    2.3 TLP事务结构解析。

    二、事务层Flow Control概述

    话说,前段时间小编想探访一下故宫深邃与博大,就兴致勃勃的去了,在长安街上过了无数个安检终于到达了天安门城楼之下,通过天安门城楼之后就看到了梦寐以求的故宫,准备买票呀~

    当走到售票窗口时,看到一行字,小编失望极了,因为上面写着"故宫限流了~售票截止"!我的天呐~白跑一趟~

    当时小编就想,如果来之前能得到限流的信息就好了~

    讲到这里,不要为小编叹息呢~小编今天给大家带来个新朋友“Flow Control”。从英文的字面意思来看,它跟小编在故宫遇到的“限流”差不多是一个意思~

    在PCIe协议中,如果要发送一个TLP,就必须要保证接收端有足够的缓存(Buffer)来接收。为了实现这一功能,接收端会随时回报可用的缓存空间。

    在接收端有一个缓存空间叫作VC buffer, 其中VC代表的是Virtual Channel,翻译过来就是虚拟通道。VC buffer可以存放从发送端传过来的TLPs。

    • PCIe可以支持8虚拟通道(VC),每个VC之间可以相互独立传输TLPs, 当一个VC buffer满的时候,并不影响其他VC继续传输。

    • 有关VC的详细内容会在后续章节介绍,本文就不再展开了~

    在flow control中, 还有一个很重要的概念不得不提一下:信用机制(Credit-based Mechanism)。因为接受端的可用VC buffer是以信用机制的方式告知发送端,在这里,信用积分代表接收端VC buffer的可用空间。

    接收端会通过发送DLLPs(Data Link Layer Packets)来告知发送端VC buffer的信用积分(也就是告知VC buffer可用空间),当缓存空间快满的时候,发送端会停止发送TLP,以防VC buffer容量不足而造成发送端传输的数据被丢弃,从而避免要求发送端重新发送刚才发送的数据,最终达到更加有效利用网络带宽。

    其实,事务层(Transaction Layer)和链路层(Data Link Layer)是Flow Control机制的共同监护人。如下图:

    • Device A和Device B均会把其事务层对应的可用空间(FC Buffer)告知链路层,链路层会在适当的时间生成Flow control DLLPs将可用空间的信息转送至接收端。(Device A to Device BDevice B to Device A

  • 相关阅读:
    docker安装postgresSQL和设置自定义数据目录
    现在进行时习题
    算法训练day41|动态规划 part03(LeetCode343. 整数拆分、96.不同的二叉搜索树)
    MyCat2分库分表的基本操作
    macOS查看切换当前用户和shell
    Systrace 线程 CPU 运行状态分析技巧 - Running 篇
    机器学习案例(一):在线支付欺诈检测
    MySQL数据库基本操作+用户管理+用户授权
    【物联网】继续深入探索ADC模拟转数字的原理——Flash ADC&流水线ADC&逐次逼近型SAR ADC
    汽车级瞬态抑制TVS二极管优势特性及型号大全
  • 原文地址:https://blog.csdn.net/zhuzongpeng/article/details/126905367