admin 管理员组文章数量: 1184232
2024年1月10日发(作者:diva联盟)
pcie(PCI-Express)处理层协议中文详解
处理层协议(transaction Layer specification)
◆TLP概况。
◆寻址定位和路由导向。
◆i/o,memory,configuration,message request、completion详解。
◆请求和响应处理机制。
◆virtual channel(vc)Mechanism虚拟通道机制。
◆data integrity数据完整性。
一.TLP概况
处理层(transaction Layer specification)是请求和响应信息形成的基础。包括四种地址空间,三种处理类型,从下图可以看出在transaction Layer 中形成的包的基本概括。
一类是对i/o口和memory的读写包(TLPS:transaction Layers
packages),另一类是对配置寄存器的读写设置包,还有一类是信息包,描述通信状态,作为事件的信号告知用户。对memory的读写包分为读请求包和响应包、写请求包(不需要存储器的响应包)。而i/o类型的读写请求都需要返回I/O口的响应包,
configuration包对配置寄存器的读写请求也有响应包。这些请求包还可以按属性来分就是:NP-non posted ,即请求需要返回completion的响应包;还有一种就是;poste,即不需要completion返回响应包。例如上面的存储器写入请求包和Message包都隶属于posted包。包的主要格式结构如下:
每种类型的包都有一定格式的包头(Tlp Header),根据不同的包的特性,还包括有效数据负荷(Data Payload)和tlp开销块(Tlp Digest)。包头中的数据用于对包的管理和控制。有效数据负荷域存放有效数据信息。具有数据的TLP传递是有一定规则的:以DW为长度单位,发送端数据承载量不得超过“Device
Control Register”中的“Max_Payload_Size”数值,接收端中,所接收到的数据量也不能超过接收端“Device Control Register”中的“Max_Payload_Size”数值。TLp Digest域是32位的ECRC校验。具体的包结构图如下:
由此图可看出数据从低字节的高位先发送,从左到右。以下详细介绍TLPS的每个成分。
R为保留信息位,应设为0,路由器switch对此位不做修改,接收器应该忽略此位。
▲
Fmt[1:0]:Format of TLP (see Table 2-2) –
bits 6:5 of byte0
▲
Type[4:0]:Type of TLP – bits 4:0 of byte 0
▲
TC[2:0]:
Traffic Class – bits [6:4] of byte1,关于TC的作用将在下文说明。
▲
Attr[1:0]:
Attributes – bits [5:4] of byte 2,详细介绍见下文
▲
TD:1b indicates presence of TLP digest in
the form of a single DW at the end of the TLP标志TLPDigest域的有无。
▲
EP: indicates the TLP is poisoned – bit 6 of
byte 2有效数据中毒(出错)机制。
▲
Length[9:0]:Length of data payload in DW.
Fmt开销位说明TLP Header的长度和TLP是否包含数据,见下图。
▲
Fmt[1:0]=00b,代表3DW的包头,没有数据。
▲
Fmt[1:0]=01b,代表4DW的包头,没有数据。
▲
Fmt[1:0]=10b,代表3DW的包头,有数据。
▲
Fmt[1:0]=11b,代表4DW的包头,有数据。
Fmt和Type开销组合定义了包(TLP)的类型如下。
上图定义了各种类型的包,图中的r[2:0]用于定义Message包的隐含寻址方式,在下文中更为详细。
Length域定义了有效负荷的DW长度如下。
在不包含data payload块的包中Length的值应被设置为保留值R,并被接收端忽略。余下的各个开销位将在后文提到。
二.TLP打包定址和路由导向方式
主要有三种TLP寻址方式:地址路由(address)、ID识别路由、间接路由(implicit)。下面主要解释address和ID寻址方式,间接寻址将在后面提及。
address寻址主要用于memory和i/o request请求包,memory读写请求包支持64位地址和32位地址,i/o读写请求只支持32位地址。64位地址寻址的TLP Header有4DW(16字节),32位地址寻址的TLP Header有3DW长。
上图就是64位地址的4DW的包头和32位地址的3DW的包头。对于memory读写request包,AT(address Type field)有如下的编码。
ID寻址方式主要用在configuration 请求包、部分message包、响应包中。ID包括Bus number、Divce number、function number
为TLP定位目标接收器。ID寻址的TLP包头长度也有4DW和3DW两种,ID在TLP中位置见下图。
第七个Byte(Byte7)是第一个DW数据负荷和最后一个DW数据负荷使能位(Byte Enables),Byte Enables在于memory,i/o,configuration 请求包中有效,如图。
对于last DW BE和1st DW BE中的每一个位,为0表示相应的数据字节不被读或写,为1表示相应的数据字节有效。每个使能位相对应的字节如下。
处理层描述符(transaction Descriptor),用于请求器件和应答器件间转送处理层信息,包括三部分,Transaciton ID、Attributes、Traffic class(TC)。如下图。
其中Transaction ID包括: Requester ID、Tag,如图。
Tag[7:0]是由产生请求包的器件生成的,如果请求器件需要应答,则每个Tag[7:0]和Function Number是独一无二的。Transaction ID是一个全局标识符用于响应包寻址请求器件。
TC的规定如下,描述服务的层次和用于映射虚拟通道:
处理层描述符在请求包中第二个DW:
。中图中看出,描述字符放在第二个DW的前三个字节中。
三.i/o,memory,configuration,message request、completetion详解。
memory、i/o、configuration request包头除了基本的域之外还包括:Transaction ID即requester ID、Tag、Last DW BE、1st DW
BE,放在第二个DW中。以下分别介绍这三种不同的请求包。
memory request package:
采用直接地址寻址,有64bit地址和32bit地址两种,其中读请求
包的Length域不应大于Max_Read_Request_Size寄存器设置的值。请求器件不会示例一个所访问的memory空间超过4KB的read request包。以下是两种不同地址长度的memory request 包。
I/O request 包:
I/O request 包只有32位地址寻址。有如下限制:
▲
TC[2:0] must be 000b
▲
Attr[1:0] must be 00b
▲
AT[1:0] must be 00b
▲
Length[9:0] must be 00 0000 0001b
▲
Last DW BE[3:0] must be 0000b
格式如下:
可见每次只传送一个DW数据。
configuration request包:
configuration request包采用ID寻址方式,包头(Tlp
Header长度是3DW)。有如下规定:
• TC[2:0] must be 000b
• Attr[1:0] must be 00b
• AT[1:0] must be 00b
• [9:0] must be 00 0000 0001b
• Last DW BE[3:0] must be 0000b
包格式:
Message 包:
Message包分为:
版权声明:本文标题:pcie处理层协议中文详解 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1704875857a465346.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
跨平台利器:教你如何在SpringBoot中快速部署微信小程序授权登录功能
微信小程序登入 前端登入流程 1-获取code2-获取昵称 头像3-把code 昵称 头像 封装成data对象4-调用登入接口 传入data对象5-把请求结果token缓
Uniapp与SpringBoot联袂出击,快速搞定微信小程序登录权限问题
微信小程序登入 前端登入流程 1-获取code2-获取昵称 头像3-把code 昵称 头像 封装成data对象4-调用登入接口 传入data对象5-把请求结果token缓
当心!不小心删了U盘内容?一文教你找回失联数据!
u盘删除的文件怎么不在回收站?当我们删除u盘上的文件时,你会发现这些删除的文件都不在回收站里,还无法在电脑中找到。其实这是因为硬盘上删除的文件会留在回收站,而u盘删除的文件一旦删除就是永久删除。 如果我们不小心删
爱奇艺视频弹幕不再神秘,教你一招轻松获取数据
前言: 弹幕是了解观众真实反应的绝佳窗口,无论是:
SSD硬盘操作秘籍:深入了解SSD内部的读写逻辑、认识FTL并掌握TRIM优化技巧
前言 大家好,我是jiantaoyab,本篇文章我们来看看SSD硬盘和FTL、磨损均衡,SSD 硬盘,适合读多写少的应用,使用寿命受限于可以擦除的次数。 SSD 的读写原理 SSD 没有像机械硬盘那样的寻道过程
深度剖析:Windows剪贴板及clipbrd在日常工作中的应用案例分享
简介:Windows剪贴板是操作系统中用于不同程序间传递信息的核心组件。本文将介绍其基本概念、格式多样性、clipbrd工具的功能及使用方法,以及HTML FORMAT与剪贴板的交互。剪贴板工具对于开发者、故障排查和用户体验研究等场景
XMP数据处理指南:探索Adobe Flash中心的SWF文件基本架构
012-XMP数据处理 学习目标 通过本章学习,你将掌握:XMP标准理解 XMP元数据架构和结构 XMP命名空间和属性定义 XMP与其他元数据
QQ音乐API的实用技巧:从封装到调用的全流程
QQ音乐api文档地址:封装好后的api文件地址:需要引入请求封装文件…ajax.js向将axios请求封装 npminstall axios -s封装的请求函数文件,通过传入type=GETPO
ASF文件格式揭秘:掌握与Adobe Flash Player的完美合作
了解ASF文件格式对于开发人员在处理多媒体文件时非常重要。ASF代表"Advanced Systems Format",是一种由Microsoft开发的多媒体容器格式,用于存储和传输音频和视频数据。在本指南中,我们将深入
超简便的图片修复技巧,让Flash文件恢复如初
在数字时代,图片已成为我们记录生活、表达情感的重要方式。然而,随着时间的推移,许多老旧照片可能会出现褪色、模糊甚至损坏的情况。此外,误删照片也是许多用户常遇到的问题。为了解决这些问题,湖南万维沃克信息科技有限公司研发了图片修复精灵,这
移动硬盘不再担忧!揭秘简单加密步骤,保护个人数据
在工作中,我们经常需要使用移动硬盘来保存重要数据,但是这样却不能保护重要数据的安全。所以,我们可以使用加密来保护移动硬盘。那么,移动硬盘要怎么加密呢?U盘超级加密3000 U盘超级加密3000是一款
在32位与64位之间:操作系统的内存与处理器挑战
64位系统和32位系统的区别:操作系统只是硬件和应用软件中间的一个平台 32位操作系统针对的32位的CPU设计 64位操作系统针对的64位的CPU设计 我们的CPU从原来的8位,16位,
Mac小白也能学会:深度清理系统垃圾,加速效率
在日常使用苹果电脑(Mac)时,系统和应用会产生各种缓存文件来加速操作,但久而久之,这些文件会占用宝贵的存储空间,甚至引发系统卡顿或异常。如何高效地清理Mac的缓存和垃圾文件,让电脑重新回归流畅?本文将为你详细介绍几种实用方法。
掌握SWF文件,驾驭Adobe Flash Player的无限可能
一、Application Data简介Applicaion Data相当于桌面应用的注册表,存储一些用户配置信息,如运行时状态,用户喜好等,需要注意的时, 当卸载应用时,这些数据会被删除,所以不要存储重要数
Adobe Flash Player与SWF:一段从技术到应用的旅程
一、Application Data简介Applicaion Data相当于桌面应用的注册表,存储一些用户配置信息,如运行时状态,用户喜好等,需要注意的时, 当卸载应用时,这些数据会被删除,所以不要存储重要数
玩转Windows Phone 8.1应用设置:_applicationdatacontainer_localsettings全解析
最近正好有机会看到林政老师的Windows Phone 8,1的书,正好我平时都是基于用户控件之类的写写使用收获,虽然 编程中基本上都用过应用数据之类的知识,但是一直没整理过,知识越来越多,东西也越来越杂,有时候过
启动之路:深入ARM I.MX6ULL的内部机制 - 内部BOOT ROM、IVT、Boot Data、DCD与led.bin揭秘
参考:Linux之ARM(IMX6U)裸机之I.MX6ULL镜像烧写以及启动头文件的详解作者:一只青木呀发布时间: 2020-08-09 17:10:00网址:BOOT R
从零开始,I.MX6U上Linux的启动流程详解,助你顺利上手
第九章I.MX6U启动方式详解 I.MX6U支持多种启动方式以及启动设备,比如可以从SDEMMC、NAND Flash、QSPI Flash等启动。用户可以根据实际情况,选择合适的启动设备。不同的启动方式其启动方式和启动要求
厂里资讯之热点文章实时计算_流式热点计算
1 今日内容 1.1 定时计算与实时计算 1.2 今日内容 kafkaStream 什么是流式计算 kafkaStream概述 kafkaStream入门案例
基于Matlab的MDF文件导入与处理研究_matlabmdf格式数据处理
摘要 本文围绕MDF文件格式展开全面研究,系统阐述了MDF文件的基本结构与数据块概念,深入探讨了在Matlab环境下导入和处理这些文件的理论与实践方法。首先,介绍了MDF文件在现代工业和汽车电子领域的应用背景及重要意义。接着,
发表评论