首页 > 其他分享 >PCIe学习笔记(25)

PCIe学习笔记(25)

时间:2024-08-22 19:53:58浏览次数:15  
标签:25 TLP ECRC tlp Switch 笔记 PCIe 字段 交换机

数据完整性

PCI Express的基本数据可靠性机制包含在数据链路层(data Link Layer)中,它使用32位的LCRC (CRC)码逐链路检测TLP中的错误,并采用逐链路重传机制进行错误恢复。TLP是一个数据和事务控制单元,由位于PCI Express域“边缘”的数据源(如Endpoint或Root Complex)创建,可能通过中间组件(即交换机)路由,并由最终的PCI Express接收者使用。当TLP经过Switch时,Switch可能需要改变一些控制字段,而不需要修改报文传输路径时不应该改变的其他字段。因此,LCRC由交换机重新生成。数据损坏可能发生在交换机内部,损坏数据的良好LCRC的再生掩盖了错误的存在。在对数据可靠性要求较高的系统中,为了保证端到端的数据完整性检测,可以在TLP末尾的TLP Digest字段中放置一个Transaction Layer端到端32位CRC (ECRC)。ECRC涵盖了所有在TLP遍历路径时不会改变的字段(不变字段)。ECRC由源组件中的事务层生成,并由最终PCI Express Receiver和可选的中间Receiver检查(如果支持的话)。支持ECRC检查的交换机必须在针对交换机自身的tlp上检查ECRC。这样的交换机可以选择检查它转发的tlp上的ECRC。在Switch转发的TLP上,无论Switch是否检查ECRC或ECRC检查失败,Switch都必须将ECRC作为TLP的一个组成部分保留(转发时不动)         在某些情况下,TLP负载中的数据在生成TLP时已知已损坏,或者在通过中间组件(如Switch)时可能已损坏。在这些情况下,error forwarding错误转发(也称为data poisoning,数据中毒)可用于向使用数据的设备指示损坏情况。

ECRC Rules

生成和检查ECRC的能力报告给软件,并且通过软件启用该功能。

•如果使能某个设备的Function生成ECRC,则必须计算并应用该功能生成的所有tlp的ECRC。

•SW从入端口到出端口传递的tlp必须保持ECRC不变

•如果一个设备支持ECRC生成/检查,它的至少一个功能必须支持高级错误报告(AER)(见6.2节)

•如果一个设备功能被启用检查ECRC,它必须对所有具有ECRC的TLPs这样做,设备是最终的PCI Express接收器

◦注意,它仍然有可能接收没有ECRC的TLPs,这些被正常处理-这不是一个错误

请注意,交换机可以选择对通过交换机的tlp执行ECRC检查。Switch检测到的ECRC错误报告如表6-5所示,但不会改变tlp通过Switch的传递。

一个32位的ECRC (end - end TLP Prefixes, header, and data payload)使用如下算法计算并附加到TLP的末尾(如图2-3所示):

•使用多项式的系数表示为04C1 1DB7h

•种子值seed(ECRC存储寄存器的初始值)为FFFF FFFFh

•所有报头字段,所有End-End TLP前缀(如果存在)和整个数据负载(如果存在)都包含在ECRC计算中。在变体字段中的所有位必须设置为进行ECRC计算。

◦TLP报头中Type字段的0位是可变的(Variant)。End-End TLP前缀中的这位是不变的。

◦EP位为可变的(Variant)

◦所有其他字段为不变的(Invariant)

•ECRC计算从字节0的第0位开始,从TLP的每个字节的第0位到第7位进行

•ECRC计算的结果进行补全,并将补全的结果位映射到32位TLP Digest字段中,如表2-49所示

•32位的ECRC值被放置在TLP摘要字段的末尾(见图2-3)

•对于包含用于ECRC值的TLP摘要字段的TLP,支持端到端数据完整性检查的接收器通过以下方式检查TLP摘要字段中的ECRC值:

◦对接收到的TLP应用相同的ECRC计算算法,但不包括收到的TLP的32位TLP Digest字段,然后

◦将计算结果与收到的TLP的TLP Digest字段中的值进行比较。

•支持端到端数据完整性检查的接收器将违规报告为ECRC错误。这个报告的错误与接收端口有关(参见6.2节)。

SW内TD位保护

最重要的是,交换机确保和维护它们接收和转发的TLP中TD位的完整性(即,通过应用特殊的内部保护机制),因为TD位的损坏将导致最终目标设备误解TLP摘要字段的存在或不存在。

同样,强烈建议交换机为它们接收和转发的tlp中的其他变体字段提供内部保护,因为变体字段的端到端完整性不是由ECRC维持的。

数据链路层没有内部TLP可见性

由于数据链路层不处理TLP头(它根据物理层的指示确定TLP的开始和结束),因此它不知道TLP摘要字段的存在,只是将其作为TLP的一部分传递给事务层。

标签:25,TLP,ECRC,tlp,Switch,笔记,PCIe,字段,交换机
From: https://blog.csdn.net/yh_wrew/article/details/141367036

相关文章

  • [学习笔记]在不同项目中切换Node.js版本
    @目录使用NodeVersionManager(NVM)安装NVM使用NVM安装和切换Node.js版本为项目指定Node.js版本使用环境变量指定Node.js安装多个版本的Node.js设置环境变量验证配置使用npm脚本切换在开发中,可能会遇到不同的Vue项目需要不同的Node.js,在开发机上如何快速切换Node的......
  • sqli-labs靶场通关攻略 21-25
    主页有sqli-labs靶场通关攻略1-20第二一关less-21步骤一:输入Username:adminPassword:admin利用Burpsutie进行抓包步骤二:在Cookie后输入'报错,判断闭合方式为')#对所写代码进行如下操作:选中右击->Convertselection->Base64->Base64-encode步骤三:判断列数')order......
  • 给自己复盘的tjxt笔记day5第二部分
    评论相关接口(练习)评论相关接口有四个:新增回答或评论分页查询回答或评论管理端分页查询回答或评论管理端隐藏或显示回答或评论新增回答或评论(练习)设计思路注意回复本身只有一个简单属性:回复内容一个功能属性:是否匿名一个关联属性:问题id:回......
  • 给自己复盘的随想录笔记-移除元素
    双指针法双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。定义快慢指针快指针:寻找新数组的元素,新数组就是不含有目标元素的数组慢指针:指向更新新数组下标的位置相关题目删除有序数组中的重复项解题思路:解法:双指针首先注意数组......
  • 给自己复盘用的随想录笔记day1-二分查找
    二分法使用情景数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。求某一个整数的平方根边界条件写二分法......
  • RK3588开发笔记-pdm接口ES7201音频采集调试记录
    目录​​​​​​​前言一、ES7201技术规格二、PDM接口说明RK3588的PDM接口特性三、原理图连接四、内核配置五、音频调试总结前言        在RK3588开发过程中,音频采集是一个常见的需求,而PDM(PulseDensityModulation)接口因其简单性和低成本广泛应用......
  • nvidia系列教程-AGX-Orin pcie网卡I350调试笔记
    目录前言一、Intel-I350网卡二、原理图连接三、SDK配置四、内核配置五、网卡调试总结前言        NVIDIAJetsonAGXOrin是一款高度集成的嵌入式AI计算平台,广泛应用于自动驾驶、机器人和边缘计算等领域。在某些项目中,你可能需要通过PCIe扩展接口来......
  • ASP: Response 对象 错误 'ASP 0251 : 80004005' 解决办法
    ASP:Response对象错误'ASP0251:80004005'解决办法 Response对象错误'ASP0251:80004005'超过响应缓冲区限制 这种情况一般是因为需要输出的网页内容太大了,由于asp在输入内容到客户的浏览器上之前,会把需要输出的全部内容先输出到缓存区,这个缓存区一般默认大小......
  • 扩展:键盘录入笔记
    一,键盘录入涉及到的方法如下:next()、nextLine()、nextInt()、nextDouble()。1)next()、nextLine():可以接受任意数据,但是都会返回一个字符串。比如:键盘录入abc,那么会把abc看做字符串返回。键盘录入123,那么会把123看做字符串返回。代码示例:Scannersc=newScanner(System.in);Strings......
  • 基于UltraScaleKU115的高性能PCIe3.0 x8-FMC+接口卡
    基于UltraScaleKU115的高性能PCIe3.0x8-FMC+接口卡,是一款高性能的PCIe3.0X8板卡。主控芯片采用Xilinx公司KintexUltraScale系列FPGA家族中的XCKU115-FLVA1517(兼容XCKU085-FLVA1517)。板卡含有2组共8GB(单组4GB)的DDR4内存颗粒,支持JTAG口和QSFP+光纤接口以及FMC+扩展接口。......