博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flow control
阅读量:5135 次
发布时间:2019-06-13

本文共 1455 字,大约阅读时间需要 4 分钟。

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种:

在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

你可能感兴趣的文章
「LeetCode」0003-Add Two Numbers(Typescript)
查看>>
java多客户端通讯原理及实现
查看>>
星星(java)
查看>>
Linux中pt_regs结构体
查看>>
Ubuntu系统Python3相关环境或模块安装
查看>>
javabean+jsp+servlet+jdbc从软件安装到开发实例
查看>>
结对开发项目--石家庄地铁web版
查看>>
JAVA-初步认识-常用对象API(集合框架-HashSet存储自定义对象)
查看>>
【redis】redis的 key的命名规则
查看>>
PHP:strpos()-返回字符串在另一个字符串中第一次出现的位置
查看>>
Dijkstra算法(三)之 Java详解
查看>>
C#中的Unsafe和Fixed
查看>>
java时间格式转换
查看>>
C++中this指针的用法详解
查看>>
POJ 2492 A Bug's Life
查看>>
MySQL 查询语句中自己定义的中文内容在Java Web 中显示为问号
查看>>
【转】ZooKeeper学习第二期--Zookeeper命令操作
查看>>
JACK——BOM Exercise1
查看>>
linux内核分析 第7章读书笔记——《深入理解计算机系统》
查看>>
Codeforces 576D. Flights for Regular Customers(倍增floyd+bitset)
查看>>