searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

PCIe链路credit信用流控机制

2024-09-06 10:11:56
3
0

PCIe协议类似于传输协议,分为3层,物理层,链路层,事务层。其中流控就发生在链路层,用于对其上层事务层进行流控。

PCIe流控为点到点的流控,即只适用于相邻节点之间,当接受端表示没有credit时,发送端就不能发送TLP报文给接收端,类似于TCP接收窗口流控。

TLP(事务层报文)一共有三大类:Posted Transactions(包括Memory Writes和Messages)、Non-Posted Transactions(包括Memory Reads、Configuration Reads and Writes、IO Reads and Writes)以及Completions(包括Read and Write Completion)。并且知道,TLP可以分为两个部分,Header和Data部分。Flow Control为了获得更高的数据传输效率,将这三类TLP分开存放,同时将Header与Data部分也分开存放。因此,一共存在六种不同的Flow Control Buffer类型。

 

PCIe 总线的节点中, 一个 VC 的接收缓存由 PH Posted Header 缓存、 PD Posted Data 缓存、 NPH NonPosted Header 缓存、 NPD Non-Posted Data 缓存、 CplH Com-pletion Header 缓存和 CplD Completion Data 缓存组成。

 

● PH 缓存存放存储器写请求 TLP Message 报文使用的 TLP 头。

 

● PD 缓存存放存储器写请求 TLP Message 报文使用的 Payload

 

● NPH 缓存存放 NonPosted 请求 TLP 使用的 TLP 头。

 

● NPD 缓存存放 NonPosted 请求 TLP 使用的 Payload Non-Posted 请求 TLP 中, 如存 储器读请求 TLP 并不含有 Payload 字段, 但是 I / O 和配置写请求 TLP 使用 Payload 字段。

 

● CplH 缓存存放完成报文使用的 TLP 头。

 

● CplD 缓存存放完成报文使用的 Payload

 

Flow Control Buffer的存储单元(Unit)被称作Flow Control Credits。对于Header来说,Requests TLP每个unit等于5DW,而Completions TLP每个unit等于4DW。对于Data来说,每个unit等于4DW,即Data Buffer是按照16个字节对齐的。

 

对于各种类型的Buffer的最小值如下表所示:

 

 

最大值如下表所示:

注:0 unit表示无限(Infinite)。

 

PCIe 总线使用 FCP (Flow Control Packets) 传递 Credit 信息, FCP 是一种 DLLP, 该报文 的使用与事务层的接收缓存直接相关, 但是对事务层透明, 该报文产生于数据链路层, 终止 于数据链路层。

 

FCP 共分为三大类 InitFC1、 InitFC2 和 UpdateFC。 在这三类报文中有 3 个重 要的字段。 其中 HdrFC 字段存放 Header 的 Credit; DataFC 字段存放 Data 的 Credit; 而 VC ID 字段存放不同的 VC (Virtual Channel)号。

 

InitFC1、 InitFC2的初始化流程如下:

PCIe 总线完成流量控制的初始化之后, Current 节点、 Upstream 节点和 Downstream 节点 通过发送 UpdateFC⁃P、 UpdateFC⁃NP 和 UpdateFC⁃Cpl 报文进行流量控制。

update报文格式如下:

实际发生的流控报文如下所示:

分别是InitFC1、 InitFC2 和 UpdateFC-cpl

 

 

 

0条评论
0 / 1000
gongw
5文章数
0粉丝数
gongw
5 文章 | 0 粉丝
原创

PCIe链路credit信用流控机制

2024-09-06 10:11:56
3
0

PCIe协议类似于传输协议,分为3层,物理层,链路层,事务层。其中流控就发生在链路层,用于对其上层事务层进行流控。

PCIe流控为点到点的流控,即只适用于相邻节点之间,当接受端表示没有credit时,发送端就不能发送TLP报文给接收端,类似于TCP接收窗口流控。

TLP(事务层报文)一共有三大类:Posted Transactions(包括Memory Writes和Messages)、Non-Posted Transactions(包括Memory Reads、Configuration Reads and Writes、IO Reads and Writes)以及Completions(包括Read and Write Completion)。并且知道,TLP可以分为两个部分,Header和Data部分。Flow Control为了获得更高的数据传输效率,将这三类TLP分开存放,同时将Header与Data部分也分开存放。因此,一共存在六种不同的Flow Control Buffer类型。

 

PCIe 总线的节点中, 一个 VC 的接收缓存由 PH Posted Header 缓存、 PD Posted Data 缓存、 NPH NonPosted Header 缓存、 NPD Non-Posted Data 缓存、 CplH Com-pletion Header 缓存和 CplD Completion Data 缓存组成。

 

● PH 缓存存放存储器写请求 TLP Message 报文使用的 TLP 头。

 

● PD 缓存存放存储器写请求 TLP Message 报文使用的 Payload

 

● NPH 缓存存放 NonPosted 请求 TLP 使用的 TLP 头。

 

● NPD 缓存存放 NonPosted 请求 TLP 使用的 Payload Non-Posted 请求 TLP 中, 如存 储器读请求 TLP 并不含有 Payload 字段, 但是 I / O 和配置写请求 TLP 使用 Payload 字段。

 

● CplH 缓存存放完成报文使用的 TLP 头。

 

● CplD 缓存存放完成报文使用的 Payload

 

Flow Control Buffer的存储单元(Unit)被称作Flow Control Credits。对于Header来说,Requests TLP每个unit等于5DW,而Completions TLP每个unit等于4DW。对于Data来说,每个unit等于4DW,即Data Buffer是按照16个字节对齐的。

 

对于各种类型的Buffer的最小值如下表所示:

 

 

最大值如下表所示:

注:0 unit表示无限(Infinite)。

 

PCIe 总线使用 FCP (Flow Control Packets) 传递 Credit 信息, FCP 是一种 DLLP, 该报文 的使用与事务层的接收缓存直接相关, 但是对事务层透明, 该报文产生于数据链路层, 终止 于数据链路层。

 

FCP 共分为三大类 InitFC1、 InitFC2 和 UpdateFC。 在这三类报文中有 3 个重 要的字段。 其中 HdrFC 字段存放 Header 的 Credit; DataFC 字段存放 Data 的 Credit; 而 VC ID 字段存放不同的 VC (Virtual Channel)号。

 

InitFC1、 InitFC2的初始化流程如下:

PCIe 总线完成流量控制的初始化之后, Current 节点、 Upstream 节点和 Downstream 节点 通过发送 UpdateFC⁃P、 UpdateFC⁃NP 和 UpdateFC⁃Cpl 报文进行流量控制。

update报文格式如下:

实际发生的流控报文如下所示:

分别是InitFC1、 InitFC2 和 UpdateFC-cpl

 

 

 

文章来自个人专栏
社区专栏
5 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0