flow control

flow controlPCIE每个VirtualChannel都维护一个独立的FlowControlCreditPool。发送端要发送TLP,首先得获得Credit。FlowControl对3种TLP有效:1.PostedRequest(P)-Messages和MemoryWrites;2.Non-PostedRequest(NP)-所有的Reads,I/Owrites,Con…

大家好,又见面了,我是你们的朋友全栈君。

PCIE每个Virtual Channel都维护一个独立的Flow Control Credit Pool。发送端要发送TLP,首先得获得Credit。Flow Control对3种TLP有效:

1. Posted Request(P) – Messages和Memory Writes;

2. Non-Posted Request(NP) – 所有的Reads, I/O writes, Configuration Writes,和AtomicOps;

3. Completions(CPL) – 与NP相关的Completion。

并区分这3中TLP的Header和Data,所以Flow Control Credit的类型有6种:

flow control

在L0/L0s状态,对于每种被设成non-infinite的FC Credit,UpdateFC需要每隔30us至少发送一次,如果Control Link寄存器中的Extended Sync比特位置1,则每个120us至少发送一次。

 

在powerup之后,如果要开始进行正常的传输操作,需要先对默认的virtual channel(VC0)进行Flow control的初始化,如果enable了新的virtual channel,也需要对这个新的channel进行初始化。

Virtual Channel的初始化分为两步:

FC_INIT1

FC_INIT2

当VC0进入DL_Init状态后,或VC1-VC7被enable后,就会进入FC_INIT1。

进入FC_INIT1之后,TL层必须停止使用该VC上发送TLP;

按照1. InitFC1-P, 2. InitFC1-NP, 3. InitFC1-Cpl的顺序发送InitFC1 DLLP,并且每34us至少发送一遍;在Recovery或Configuration状态中所消耗的时间不计入34us内;强烈建议在没有其他TLP或DLLP发送的情况下,尽量多发送InitFC1 DLLP;

除非为了保证最低所需的InitFC1 DLLP的发送,Data  Link层不能停止其他包的发送,包括所有Physical Layer发起的包(OS),ACK/NAK DLLP,使用已完成初始化的VC来发送的TLP;

如果收到InitFC1和InitFC2 DLLP,记录FC unit的值,如果P/NP/Cpl都已被记录,则将FI1置1,然后进入FC_INIT2。

在FC_INIT2时:

TL层必须停止在该VC上发送TLP;

按照1. InitFC2-P, 2. InitFC2-NP, 3. InitFC2-Cpl的顺序发送InitFC2 DLLP,并且每34us至少发送一遍;在Recovery或Configuration状态中所消耗的时间不计入34us内;强烈建议在没有其他TLP或DLLP发送的情况下,尽量多发送InitFC2 DLLP;

除非为了保证最低所需的InitFC2 DLLP的发送,Data  Link层不能停止其他包的发送,包括所有Physical Layer发起的包(OS),ACK/NAK DLLP,使用已完成初始化的VC来发送的TLP;

如果收到InitFC1和InitFC2 DLLP,忽略FC unit的值,只要收到任意InitFC2 DLLP,则将FI2置1,然后退出FC_INIT2。

 

转载于:https://www.cnblogs.com/lybinger/p/10334028.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134781.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 小议ODT[通俗易懂]

    小议ODT[通俗易懂]不少人看了我写的一篇ODT的文章后仍然觉得不明白:http://blog.csdn.net/Testing_is_believing/archive/2007/09/04/1772334.aspx ODT是TC特有的一个东西,不同于关键字驱动测试。ODT不是在单元测试中使用的,其作用是把数据和脚本中的测试对象构建到一个树上,然后就可以使用一条语句遍历这棵树,读取树中包含的测试数据,

    2025年9月8日
    5
  • 2019年长沙前端技术分享大会圆满成功

    做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!本文首发: 唐胡子俱乐部,授权发布!摘要长沙百名互联网前端程序员齐聚长沙互联网活动基地(唐胡子俱乐部)。主办单位:唐胡子俱乐部支持单位:芒果TV,拓维,湘邮,58到家,御泥坊,兴盛优选,中软国际,长海科技,长沙联通时 间:2019年5月19日—————————-…

    2022年2月28日
    402
  • 如何删除LDSGameMaster「建议收藏」

    如何删除LDSGameMaster「建议收藏」如何删除LDSGameMaster背景介绍方法一方法二背景介绍最近不小心下载安装了鲁大师,卸载之后,C盘中仍有一个名为LDSGameMaster的文件夹。虽然很小,之后18M,但是一定要删除掉,否则心里很不舒服。方法一百度告诉我,解决这个问题很简单。这个文件夹中有个uninstall,运行之后就没有了。但我没有发现我的文件夹中有这么一个东西。这个方法不提。方法二删除之后,提示:操作无法…

    2022年6月13日
    34
  • pycharm不会自动补全括号_pycharm自动提示

    pycharm不会自动补全括号_pycharm自动提示安装pycharm后,输入代码后,没有补全提示首先检查是否关闭了代码提示,如下图,将红框中“PowerSaveMode”前的勾去掉第二步,如果在输入某些代码时还是没有补全提醒,可能是配置好python环境则点击file->settings->projectInterpreter,如下图选择安装的python输入代码就会有提示了…

    2022年8月25日
    29
  • H-ui前端框架

    H-ui前端框架

    2021年9月18日
    58
  • gateway网关详解_网关和网桥的定义

    gateway网关详解_网关和网桥的定义3.5.Gateway网关的概念之前的操作,我们有了管理他的配置中心和注册中心。下一步我们就要配置网关了。于是,问题就要回到什么是网关?以及为什么要配置网关上来了。先聊聊为什么要配置网关。注册中心相当于对各种服务进行调度,把他们安排的明明白白的。但注册中心能力再打,他也没办法安置前端的请求,让他们一一入座,也没办法对一些恶意请求进行拦截。问题就出现了,前端服务此时只能自己在配置里改变请求的位置,而且,每次改变请求就要更改配置,重新上线。恶意请求也无法拦截。这显然是不合理的。于是,网关出现了。

    2022年10月11日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号