当前位置: 首页 > news >正文

Pcie学习笔记(24)

Ordering and Receive Buffer Flow Control

流量控制(FC)用于防止接收端缓冲区溢出,并使其符合定义的排序规则。请注意,请求者使用流量控制机制来跟踪代理中可用的队列/缓冲区空间,如图2-48所示。也就是说,流控制是点对点的(跨一个链接),而不是端到端的。流控制并不意味着请求已经到达了它的最终Completer。

流量控制与用于实现发送端和接收端之间可靠信息交换的数据完整性机制是正交的。流量控制可以将从发送端到接收端的TLP信息流视为完美的,因为数据完整性机制确保损坏和丢失的TLP通过重传得到纠正。

每个虚拟通道维护一个独立的流量控制信用池。FC信息通过DLLP在链路的两端传递。DLLP的VC ID字段用于携带正确的Flow Control信用所需的VC ID。

流量控制由事务层与数据链路层合作处理。事务层为接收到的TLP执行流量控制计算功能,并根据可用的传输信用“门控”TLP传输,即使这些TLP最终被取消

注:流量控制是事务层的一个功能,因此,在接口上传输的以下类型的信息不与流量控制积分相关联:LCRC、分组分帧符号、其他特殊符号和数据链路层到数据链路层之间的通信包。这一事实的含义是,这些类型的信息必须由接收方以它们到达的速率进行处理。

此外,任何从事务层传输到数据链路和物理层的TLP必须首先通过流量控制“门控”。因此,无论是发送还是接收的流量控制机制都不知道数据链路层是否由于链路上的错误而重复传输TLP。

流量控制规则

•流量控制信息使用流量控制数据包(FCPs)传输,FCPs是DLLP的一种

•流量控制信用的单位是4 DW数据。(为啥有两种单位?4DW和下面的区别?

•对于报头:

◦不支持TLP前缀的接收器的流量控制信用单位是一个最大大小的报头和TLP摘要的总和

◦支持End-End TLP前缀的接收器的流量控制信用单位是一个最大大小的头,TLP摘要和一个TLP中允许的最大数量的End-End TLP前缀的总和。

◦流量控制的接收器支持Local TLP Prefixes的管理是依赖于Local TLP Prefixes 类型。

每个虚拟通道有独立的流量控制

•流量控制区分三种类型的TLP:

◦Posted Request (P) -消息和内存写

◦Non-Posted Request(NP) -所有读,I/O写,配置写和AtomicOps

◦Completion(Cpl) -与相应的NP请求相关联

•此外,Flow Control在三种类型中分别区分以下类型的TLP信息:

◦Headers (H)

◦Data (D)

因此,每个虚拟通道的Flow Control可以跟踪六种类型的信息

TLP消耗的流量控制信用如表所示。

•组件必须为该组件支持的所有虚拟通道实现独立的流量控制

流量控制仅由硬件自动初始化默认的虚拟通道(VC0)

◦当数据链路层在DL_Init状态下复位时,VC0被初始化。

•当其他虚拟通道被软件启用时,每个新启用的VC将遵循流量控制初始化协议。

软件通过在链路上的两个组件中设置虚拟通道的VC使能位来启用虚拟通道

注意:有可能多个vc同时遵循Flow Control初始化协议——每个vc都作为一个独立的进程遵循初始化协议。

软件通过清除链路上两个组件中虚拟通道的VC使能位来禁用虚拟通道。

◦禁用一个组件的虚拟通道会重置该组件中的虚拟通道的流量控制跟踪机制。

InitFC1和InitFC2 FCPs仅用于流量控制初始化

•指定禁用虚拟通道的InitFC1、InitFC2或UpdateFC FCP将被丢弃而无效。

•在任何虚拟通道的FC初始化期间,包括作为链路初始化的一部分初始化的默认VC,接收器初始发布的VC信用值必须等于或大于表2-44所示的值。

如果缩放流量控制不支持或支持但未激活,使用“比例因子1”列中的值

•如果缩放流量控制是支持和激活的,使用与信用类型相关的比例因子列中的值

•不支持根端口之间的点对点流量的RC必须在每个根端口上发布无限的Completion credits信用

•支持部分或全部根端口之间点对点流量的RC可以选择性地在这些根端口上发布非无限Completion credits积分。在这种情况下,RC必须确保避免死锁,并维护指向RC的Completion的前进进度。请注意,由于RC转发的Non-Posted Request可能没有明确分配完成缓冲空间,因此可能会暂时停止Completion traffic(由于暂时缺乏信用)。

不支持缩放流量控制的接收器不得累计向发送器发出超过2047个未使用的数据有效载荷或127个报头。支持按比例流量控制的接收方不得累计向发送方发出超过表3-2所示的最大信用值的未使用数据或报头。

◦组件可以选择检查是否违反此规则。如果实现此检查的组件确定违反了此规则,则该违反是流控制协议错误(FCPE)如果选中,这是一个与接收端口相关的报告错误

•如果在初始化过程中进行了Infinite Credit advertisement(值为00h或000h),则初始化后不需要进行Flow Control更新。

◦如果发送UpdateFC DLLP,信用值字段必须为Clear,且必须被接收方忽略。

接收方可以选择检查非零更新值(违反此规则)。如果执行此检查的组件确定违反了此规则,则该违反是流量控制协议错误(FCPE)。如果检查,则报告与接收端口相关的错误(参见6.2节)。

•如果在初始化过程中,给定类型(P、NP或Cpl)只有数据或报头发布(但不是两者都发布),并且有无限的积分,则仍然需要传输UpdateFC DLLPs,但是与数据/报头(发布为无限)对应的信用字段必须设置为零,并且必须被接收方忽略。

◦接收器可以选择检查非零更新值(违反此规则)。如果执行此检查的接收方确定违反了此规则,则该违反是流量控制协议错误(FCPE)。▪如果选中,这是一个与接收端口相关的报告错误(见6.2节)。

•如果缩放流量控制被激活,UpdateFCs中的HdrScale和DataScale字段必须匹配初始化期间发布的值(参见3.4.2节)。

◦接收方可以选择检查是否违反此规则。如果执行此检查的接收方确定违反了此规则,则该违反是流量控制协议错误(FCPE)。▪如果选中,这是一个与接收端口相关的报告错误(见6.2节)。

使用未使能的VC接收的TLP是畸形TLP。

始终使能VC0。

对于VCs 1-7,当VC资源控制寄存器中相应的VC Enable位被设置时,当FC协商该VC退出FC_INIT1状态并进展到FC_INIT2状态时,VC被认为是启用的

◦这是一个与接收端口相关的报告错误(见6.2节)。

•在该虚拟通道的初始化通过退出FC_INIT2状态完成之前,不允许使用任何虚拟通道0-7进行TLP传输。。

对于VCs 1-7,软件必须使用VC资源状态寄存器中的VC Negotiation Pending位,以确保在链路上两个组件的FC_INIT2状态退出协商完成之前不会使用VC。

下面章节中使用的[Field Size]参数如表2-45所示

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mysql原理与调优-Mysql的内存结构
  • Flask框架探索:轻量级与灵活性的完美结合
  • 入门mysql数据库
  • 空状态设计教程:连接用户体验的桥梁
  • 制造企业MES系统质检管理的应用
  • 【杂乱算法】前缀和与差分
  • [Linux#42][线程] 锁的接口 | 原理 | 封装与运用 | 线程安全
  • 使用 Vue 官方脚手架初始化 Vue3 项目
  • 基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(二)---ROS2与UE5进行图像数据传输
  • 多维的vector也可以sort!力扣刷题-合并区间有感
  • Esxi 7.0 安装windows xp 问题汇总
  • 大模型面试问题记录
  • 2018年高教社杯全国大学生数学建模竞赛(ABCD题)题目及附件
  • 数据库分库分表的介绍
  • 浅谈如何克服编程学习中的挫折感
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【翻译】babel对TC39装饰器草案的实现
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • extjs4学习之配置
  • Hibernate【inverse和cascade属性】知识要点
  • JWT究竟是什么呢?
  • vue 配置sass、scss全局变量
  • WePY 在小程序性能调优上做出的探究
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 回顾2016
  • 记录一下第一次使用npm
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • elasticsearch-head插件安装
  • HanLP分词命名实体提取详解
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​什么是bug?bug的源头在哪里?
  • #define
  • (0)Nginx 功能特性
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (算法)大数的进制转换
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .bat批处理(六):替换字符串中匹配的子串
  • .dwp和.webpart的区别
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Framework杂记
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .Net下的签名与混淆
  • .NET与java的MVC模式(2):struts2核心工作流程与原理