收藏 分销(赏)

PCIE事务层协议(Transaction Layer Specifications).doc

上传人:pc****0 文档编号:8538499 上传时间:2025-02-17 格式:DOC 页数:21 大小:1.17MB
下载 相关 举报
PCIE事务层协议(Transaction Layer Specifications).doc_第1页
第1页 / 共21页
PCIE事务层协议(Transaction Layer Specifications).doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述
处理层协议(transaction Layer specification) ◆TLP概况。 ◆寻址定位和路由导向。 ◆i/o,memory,configuration,message request、completetion详解。 ◆请求和响应处理机制。 ◆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的每个成分。 TLP Header: 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 包。 64位地址的包格式 32 位地址的包格式 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 • Length[9:0] must be 00 0000 0001b • Last DW BE[3:0] must be 0000b 包格式: Message 包: Message包分为: 􀂉 INTx Interrupt Signaling INTx中断信息包 􀂉 Power Management 电源管理机能。 􀂉 Error Signaling错误信息包 􀂉 Locked Transaction Support 锁住交易的支持 􀂉 Slot Power Limit Support插槽电源限制的支持 􀂉 Vendor-Defined Messages制造商自行定义信息 所有的Message包都用Msg编码,即不包括数据负荷的Message包,除了Vendor_Defined Messages和Set_Slot_Power_Limit Message包,Message包有以下限制: □ The Message Code field must be fully decoded (Message aliasing is not permitted). □ Except as noted, the Attr[1:0] field is reserved.保留Attr域。 □ AT[1:0] must be 00b. □ Except as noted, bytes 8 through 15 are reserved.保留包头部分的bytes8到byte15. □ Message Requests are posted and do not require Completion.Message包不需要返回响应包。 □ Message Requests follow the same ordering rules as Memory Write Requests. 寻址方式:隐含寻址,由Type域中的r[2:0]决定,即Type域的最后三位。具体寻址映射如下: r[2:0]是010时,寻址方式就是ID寻址。 completion rules(应答机制):completion包用ID寻址方式,寻址使用的ID就是request提供的requester ID。除了那些正常的域以外,还包括: ◆ Completer ID[15:0] – Identifies the Completer – described in detail below ◆ Completion Status[2:0] – Indicates the status for a Completion ◆ BCM – Byte Count Modified ◆ Byte Count[11:0] – The remaining byte count for Request ◆ Tag[7:0] – in combination with the Requester ID field, corresponds to the Transaction ID ◆ Lower Address[6:0] – lower byte address for starting byte of Completion compl.Status位有如下含义: 四.请求和应答处理机制 处理机制就是对接收到的经Data Link Layer进行数据完整性验证的Tlp进行处理。无效的包将被抛弃,保留字(reserved)将被忽略。以下是处理流程: 对所有的包分request handling和completion handling,按不同的规范处理。 Request Handling Rules: 如果请求是一个不支持的请求包,并且需要响应,则Completion Status=UR,即不支持的请求。如果请求包是一个Message 包则按Message包处理规则处理,否则对这个request进行处理。如果请求违反器件编程定义则给出ca响应,即响应器件放弃该请求,否则做出正确应答。 completion handling: 如果接收到一个completion包的Transaction ID和requester的Transaction ID不一致则这个应答包是非预期包。合法的应答包将按Compl.Status域处理并提取有效数据负荷。 五.virtual channel(vc)Mechanism虚拟通道机制。 虚拟信道(virtual channel)在总线中提供用TC域来区分的虚拟信息通路,即某一传输通路,有不同的流程控制机制(Flow Control)。当某流程控制出现拥塞时,其他通路依然畅通。VC有自己的独立流控制,是实现Qos的秘诀。VC通道是解决拥塞的基础。 在Switch内部,VC通道机制如下: 每个TLP包并不包含具体的VC信息,VC是由TC映射得到的。每个器件的TC/VC映射是不同的,TC0/VC0是固定的。具体TC、VC映射如下: 一个或多个TC映射到一个VC,同一个TC不能映射到不同的VC上,连接双方的映射机制一致。除了TC0外,其他的可以软件设置。链路两端的映射方案要一致,如图是一种映射方案。 具体的虚拟通道是由VC ID决定和识别的。 现在介绍Flow Control,每个虚拟通道有独立的流程控制的缓冲空间。在收发双方,流程控制信息是用数据链路包(DLLP)打包发送的,其中的“VC ID“就是用来载送虚拟通道的识别。总的来说,流程控制是由数据交易层(Transaction Layer)搭配了数据链路层(Data Link Layer)来处理的,只是,处理层通常是针对接收到的TLP打包,生成TC,再由TC映射到VC。流程控制信息是FCP(Flow Control Package),即DLLP打包的一种。流程控制的信用单位是Credit,也就是接收器的缓冲空间是4DW。信用单位:就是接收端缓冲空间大小的基本单位。流程控制能分辨三种包:posted requests(p)、non-posted requests(Np)、completions(cpl)。还可以分辨三种包的包头Header和数据Data,可以这样说,每个虚拟通道(VC)对应的特定流程控制包含6种不同的流程控制信息:1、PH=posted Request Header;2、PD=posted request Data Payload;3、NPH=non-posted request Header;4、NPD=non-posted request Data Payload;5、CPLH=completion Header;6、CPLD=completion Data Payload。各种包对应的流程控制如下表; 六.data integrity数据完整性 主要的数据完整性保证之一是Data Link Layer中的crc(lcrc)。为了确保数据端对端的可靠性在Transaction层的TLp Digest域还选择性的做一ECRC校验,ECRC的初值是FFFF FFFF,算法实现如下: Transaction Layer specifications只是pcie总线规范的一层规范,主要处理数据包的传送管理,此外还有Data Link Layer规范和physical Layer规范。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服