pcie dllp FC

news2024/12/23 8:44:32

关于pcie dllp FC内容:

源地址:

PCIe(三)—— PCIe协议栈,事务层和数据链路层 | Soul Orbit

除了传输TLP数据包之外,数据链路层还需要很多专门用于控制的数据包,比如上面提到的Ack和Nak,这些数据包叫做DLLP(Data Link Layer Packet)。其格式如下:

:所有的DLLP包均为固定长度的64b;8Byte。在128/130b编码下SDP内容为:0xf0ac, verdi波形显示的字符为rmlh_data[15:0] 低16bit内容(大小端的影响);且该DLLP没有EDN Token,最后16b为crc内容

DLLP中DLLP Type用来指定包的类型,而最后16位的CRC用来做校验,其主要分为以下几种类型:

3.2.1. Ack/Nak

我们在TLP事务消息传输的里就提到过Ack和Nak消息,它们可以说是DLLP中最常用的消息了。功能顾名思义,Ack表示接收成功,Nak表示接收失败,需要重传。这两个包的格式如下:

其中,AckNak_Seq_Num表示当前已经收到的最新的消息序号,所以和TCP类似,PCIe的Ack和Nak可以进行批量操作:无论是Ack还是Nak,当发送方收到这个消息之后,就可以将Retry Buffer中比这个序号老的消息全部移除了,所以Ack/Nak时只需要将最新的序号带上即可。Ack/Nak的差别在于:如果是Nak,那么发送方在移除之后,需要对Retry Buffer中这个序号之后的消息全部进行重传。

最后,DDLP的重传是由次数限制的,默认阈值是4次。如果超过四次,就出触发物理层开始重建(retrain)链路。如果依然失败,就会将该链路关闭。

实际中ACK sequence num从0一直增加到2^12时会进行回滚

3.2.2. VC(Virtual Channel)与流量控制

在说TLP的时候,我们提到了PCIe的流量控制是通过将TC(Traffic Class)映射到VC(Virtual Channel),并且利用VC的信用机制来实现的。这里我们就一起来看看这个信用机制吧!

数据链路层中的信用额度管理有两个重要的特点:

  1. 不同处理方式是的TLP消息有着单独的信用额度管理:Posted(P),Non-Posted(NP)和Completion(Cpl)。这三种消息的信用额度是独立的,互不影响。
  2. 每个VC都有着自己的独立的信用额度管理,而不是Link。也就是说,如果一个Link上有多个VC,那么每个VC都需要单独的初始化和更新

参与流量控制的消息有很多,主要有三类,每一类有三个变种(N/NP/Cpl),我们的流量控制也主要分三步,其细节和统一的消息格式如下:

  • InitFC1-P/NP/Cpl:接收端设备使用此消息向发送端发起初始化流量控制的流程,并初始化信用额度,这是第一步。这个消息有接收端发起的原因是因为,不同的接收端能力不同,所以应该由接收端根据自己的能力,比如缓存的大小,来决定信用额度的大小。
  • InitFC2-P/NP/Cpl:用于发送端向接收端确认InitFC1的消息,这是第二步。这个消息中会带有从第一步接收到的信用信息,但是它会被接收端忽略,并没有什么用。另外,这个消息发送之后,发送端将不会再理会任何后续的InitFC1消息了。
  • UpdateFC-P/NP/Cpl:用于在信用额度初始化完成之后,接收端向发送端对信用额度进行更新。

上图为典型得dllp link up过程,即rdlh_link_up信号的拉起流程;

这个消息中各个字段含义如下:

  • Type:消息ID,映射如下:

  • VC ID(v[2:0]):Virtual Channel的Id,Id一共有3位,代表8个VC。

  • HdrFC:TLP头部的Credit数量。在发送时,一个TLP头对应着一个Header Credit,不论该TLP的大小如何。

  • DataFC:TLP数据部分的Credit数量。一个 DW(Double Word,双字,即4字节)对应着一个Data Credit。

举个例子,我们假设有一个64位地址的内存的写请求,数据长度为128字节,那么我们会需要发送一个4 DW的TLP头,加上128字节的Payload,和一个1 DW可选的TLP Digest,所以我们一共最多消耗1个Header Credit,和 (128 + 4) / 4 = 33个Data Credit。

tlp digest 当tlp header中TDbit为1是会加入32bit ecrc。

然后,为了保证发送方正常的消息发送,当接收方处理完部分消息后(或者一些特殊情况后),就会根据其当前缓存的大小,向发送方发送UpdateFC消息,告诉发送方,接收方的信用额度还剩下多少。另外,除了这种情况,接收方还会定时的向发送方上报自己的信用额度(最长间隔30us),这么做的原因是为了避免意外情况,如CRC校验出错,导致信用额度上报丢失,从而导致发送方停止发送消息的问题。

最后,数据链路层还支持Scaled Flow Control,即信用额度的数量可以是2的幂次方,这样就可以管理更大的信用额度了:

为了帮助理解,我们举一个例子:

注意:如果查看原始的包,在计算时需要注意,HdrFC和DataFC都没有对其到字节上,所以记得做好位运算。

  1. 首先,PCIe的Endpoint会向Switch发送如下三条消息来进行流控初始化:

  1. 当Switch收到这个消息后,也会向Endpoint发送三条类似的消息,进行反向的初始化。因为流程类似,从这里开始,之后Switch向Endpoint发送的反向流程我们就忽略了。

  2. Switch收到了InitFC1 DLLP后,会使用InitFC2 DLLP进行确认:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1538738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL96 返回顾客名称和相关订单号(表的普通联结、内联结inner join..on..)

方法一:普通联结 select cust_name, order_num from Customers C,Orders O where C.cust_id O.cust_id order by cust_name,order_num;方法二:使用内连接 select cust_name,order_num from Customers C inner join Orders O on C.cust_id O.cust_id …

泛型可空类型Nullable<T>

.Net Framework 4.8版本开始&#xff0c;引入了可空类型Nullable<T>. 对于引用类型的变量来说&#xff0c;如果未赋值&#xff0c;默认情况下是 Null 值&#xff0c; 对于值类型的变量&#xff0c;如果未赋值&#xff0c;整型变量的默认值为 0,Boolean默认为false&…

基于ssm小型企业办公自动化系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对小型企业办公信息管理混乱&#xff0c;出错率高&#xff0c;信息安全…

EPSON XV4001BC陀螺仪传感器汽车导航系统的应用

近年来为了提高汽车应用系统的可靠性,传感器融合系统被越来越多的应用到汽车领域,如汽车导航系统中的行人检测和预碰撞警告等,通过提供精准的导航信息,为驾驶员提供更安全,更稳定,更舒适的出行体验,例如在行人检测系统中,只使用低成本的红外传感器不能检测到行人的实际位置,而利…

hcip复习总结2(广域网与OSPF)

数据链路层面&#xff1a; 针对不同的物理链路定义不同的封装 局域网封装&#xff1a; Ethernet 2 &#xff08; TCP/IP &#xff09; &#xff0c; IEEE802.3 &#xff08; OSI &#xff09; 广域网封装&#xff1a; PPP HDLC FR ATM HDLC &#xff1a; 高级数据链路控制协…

自动化改变金融科技文档生命周期

金融科技公司可能处于软件开发的最前沿&#xff0c;但即使是最先进的系统也必须能够支持金融服务领域采用的一系列文档密集型程序。因此&#xff0c;绝大多数金融科技企业都使用数字文档管理解决方案&#xff0c;无论是内部构建的还是由第三方供应商开发的。金融科技公司可以通…

JavaScript高级(十)----JavaScript中的类【重述原型链】!

类 在JavaScript其实本来没有类的概念&#xff0c;哪怕是ES5以后的class&#xff0c;严格意义上来说也只是构造函数的语法糖&#xff0c;之所以喜欢称之为类&#xff0c;因为JavaScript也可以面向对象开发。 类的声明 class Person {}function Person1() {}// 上面两种写法本…

2024年3月22蚂蚁新村今日答案:以下哪一项是陕西省的非遗美食?

2024年3月22日蚂蚁新村今日问题的正确答案如下&#xff1a; 问题&#xff1a;以下哪一项是陕西省的非遗美食&#xff1f; 选项&#xff1a;驴肉火烧 水盆羊肉 答案&#xff1a;水盆羊肉 解析&#xff1a;水盆羊肉是陕西省的非遗美食。水盆羊肉是陕西省的一道传统著名饭食&a…

10秒让AI生成PPT,手残党福音

现如今AI确实成为了一个行业的风口无论什么行业都努力的将AI融入到自己产品的领域 AI扩写文字&#xff0c;聊天&#xff0c;生成图片&#xff0c;甚至是视频&#xff0c;都已经司空见惯 今天给大家介绍一款APP——AI生成PPT&#xff0c;一起来看看最终的效果怎么样。 软件分为…

[C++]日期类的实现

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

基于Verilog HDL的axi-lite主机模块

基于Verilog HDL的axi-lite主机模块 前文对axi_lite接口协议的各个信号做了详细讲解&#xff0c;本文通过Verilog Hdl编写一个通用接口转axi_lite接口协议的模块。 1、生成xilinx官方提供axi源码 Xilinx其实给用户提供了axi相关模块&#xff0c;获取方式如下&#xff0c;首先打…

AI视频风格转换动漫风:Stable Diffusion+TemporalKit

话不多说&#xff0c;直接开干。 基本方法 首先通过 Temporal-Kit 这个插件提取视频中的关键帧图片&#xff0c;然后使用 Stable Diffusion WebUI 重绘关键帧图片&#xff0c;然后再使用 Temporal-Kit 处理转换后的关键帧图片&#xff0c;它会自动补充关键帧之间的图片&#…

通讯录的动态实现

文章目录 通讯录的动态实现模块化编程通讯录的框架构建功能的具体实现初始化通讯录添加联系人删除联系人查找联系人修改联系人打印通讯录排序通讯录检查容量并扩容加载通讯录保留通讯录销毁通讯录 完整代码总结 通讯录的动态实现 模块化编程 分文件 不同模块放在不同的文件下 …

Word为图表设置图注并在图表清单中自动生成

1如果需要自动插入题注&#xff0c;请不要自己为文件增加新的标题样式或删除自带的标题1样式 2章节大标题最好是标题1&#xff0c;2,3而不要设置标题一、二、三&#xff0c;否则图例在自动生成时会显示 图一 -1&#xff0c;调整起来会非常不方便 若实在要使用大写中文标题&…

Rust之构建命令行程序(五):环境变量

开发环境 Windows 11Rust 1.77.0 VS Code 1.87.2 项目工程 这次创建了新的工程minigrep. 使用环境变量 我们将通过添加一个额外的功能来改进minigrep:一个不区分大小写的搜索选项&#xff0c;用户可以通过环境变量打开该选项。我们可以将此功能设置为命令行选项&#xff0c;…

【Mysql】面试题汇总

1. 存储引擎 1-1. MySQL 支持哪些存储引擎&#xff1f;默认使用哪个&#xff1f; 答&#xff1a; MySQL 支持的存储引擎包括 InnoDB、MyISAM、Memory 等。 Mysql 5.5 之前默认的是MyISAM&#xff0c;Mysql 5.5 之后默认的是InnoDB。 可以通过 show engines 查看 Mysql 支持…

【Vue】Vue集成Element-UI框架

&#x1f64b;‍ 一日之际在于晨 ⭐本期内容&#xff1a;Vue集成Element-UI框架 &#x1f3c6;系列专栏&#xff1a;从0开始的Vue之旅 文章目录 Element-UI简介安装Element-UInpm安装CDN安装 引入Element-UI测试是否引入成功总结 Element-UI简介 Element-UI官网&#xff1a;点…

yolov9目标检测可视化图形界面GUI源码

该系统是由微智启软件工作室基于yolov9pyside6开发的目标检测可视化界面系统 运行环境&#xff1a; window python3.8 安装依赖后&#xff0c;运行源码目录下的wzq.py启动 程序提供了ui源文件&#xff0c;可以拖动到Qt编辑器修改样式&#xff0c;然后通过pyside6把ui转成python…

C语言学习--八种排序算法

目录 排序的概念 1.直接插入排序 基本思想 代码实现 算法分析 2.希尔排序 基本思想 代码实现 算法分析 3.冒泡排序 基本思想 代码实现 算法分析 4.快速排序 基本思想 代码实现 算法分析 5.简单选择排序 基本思想 代码实现 算法分析 6.堆排序 基本思想 代…

数据中台:如何构建企业核心竞争力_光点科技

在当今信息化快速发展的商业环境下&#xff0c;“数据中台”已经成为构建企业核心竞争力的关键步骤。数据中台不仅是数据集成与管理的平台&#xff0c;更是企业智能化转型的加速器。本文将深入探讨数据中台的定义、特点、构建方法及其在企业中的作用。 数据中台的定义 数据中台…