声明:此文章为原创,转载请注明 转自https://blog.csdn.net/weixin_48180416/article/details/115678537
什么是Flow control? PCIe link的每一端的port必须实现Flow Control,在一个数据包发送前,必须检查接收端有足够的空间。
Flow control过程需要两个层次的参与,Transaction Layer包含Counter和Data Link Layer产生FC DLLP给对端。
注:各个VC有独立的Flow control buffer. 一个VC满了并不会block另外一个VC.
以下介绍Flow Control Buffer
Flow Control buffer是指Receiver buffer, 有六种buffer, Posted Header, Posted Data, NP Header, NP Data, Completion Header, Completion Data(如果Completion是在receiver是Bypass的,即infinite credit时就不会存在Completion buffer)
Flow Control buffer的大小用credit来衡量,credit单位如下:
Header credits — maximum header size + digest
— 4 DWs for completions
— 5 DWs for requests
Data credits — 4 DWs (aligned 16 bytes)
Credit有最大最小值限制,如果credit=0表示是infinite credit.
以下介绍FC Init和Update过程
FC Init
- 当Physical LinkUp=1物理层link成功后,FC_Init1发送Init FC1 Flow Control DLLP,FC_Init2发送Init FC2 Flow Control DLLP;