pcie处理层协议详情中文详解.docx
- 文档编号:3546575
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:800.57KB
pcie处理层协议详情中文详解.docx
《pcie处理层协议详情中文详解.docx》由会员分享,可在线阅读,更多相关《pcie处理层协议详情中文详解.docx(15页珍藏版)》请在冰豆网上搜索。
pcie处理层协议详情中文详解
pcie(PCI-Express)处理层协议中文详解
处理层协议(transactionLayerspecification)
◆TLP概况。
◆寻址定位和路由导向。
◆i/o,memory,configuration,messagerequest、completion详解。
◆请求和响应处理机制。
◆virtualchannel(vc)Mechanism虚拟通道机制。
◆dataintegrity数据完整性。
一.TLP概况
处理层(transactionLayerspecification)是请求和响应信息形成的基础。
包括四种地址空间,三种处理类型,从下图可以看出在transactionLayer中形成的包的基本概括。
一类是对i/o口和memory的读写包(TLPS:
transactionLayerspackages),另一类是对配置寄存器的读写设置包,还有一类是信息包,描述通信状态,作为事件的信号告知用户。
对memory的读写包分为读请求包和响应包、写请求包(不需要存储器的响应包)。
而i/o类型的读写请求都需要返回I/O口的响应包,configuration包对配置寄存器的读写请求也有响应包。
这些请求包还可以按属性来分就是:
NP-nonposted,即请求需要返回completion的响应包;还有一种就是;poste,即不需要completion返回响应包。
例如上面的存储器写入请求包和Message包都隶属于posted包。
包的主要格式结构如下:
每种类型的包都有一定格式的包头(TlpHeader),根据不同的包的特性,还包括有效数据负荷(DataPayload)和tlp开销块(TlpDigest)。
包头中的数据用于对包的管理和控制。
有效数据负荷域存放有效数据信息。
具有数据的TLP传递是有一定规则的:
以DW为长度单位,发送端数据承载量不得超过“DeviceControlRegister”中的“Max_Payload_Size”数值,接收端中,所接收到的数据量也不能超过接收端“DeviceControlRegister”中的“Max_Payload_Size”数值。
TLpDigest域是32位的ECRC校验。
具体的包结构图如下:
由此图可看出数据从低字节的高位先发送,从左到右。
以下详细介绍TLPS的每个成分。
R为保留信息位,应设为0,路由器switch对此位不做修改,接收器应该忽略此位。
▲ Fmt[1:
0]:
FormatofTLP(seeTable2-2)–bits6:
5ofbyte0
▲ Type[4:
0]:
TypeofTLP–bits4:
0ofbyte0
▲ TC[2:
0]:
TrafficClass–bits[6:
4]ofbyte1,关于TC的作用将在下文说明。
▲ Attr[1:
0]:
Attributes–bits[5:
4]ofbyte2,详细介绍见下文
▲ TD:
1bindicatespresenceofTLPdigestintheformofasingleDWattheendoftheTLP标志TLPDigest域的有无。
▲ EP:
indicatestheTLPispoisoned–bit6ofbyte2有效数据中毒(出错)机制。
▲ Length[9:
0]:
LengthofdatapayloadinDW.
Fmt开销位说明TLPHeader的长度和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长度如下。
在不包含datapayload块的包中Length的值应被设置为保留值R,并被接收端忽略。
余下的各个开销位将在后文提到。
二.TLP打包定址和路由导向方式
主要有三种TLP寻址方式:
地址路由(address)、ID识别路由、间接路由(implicit)。
下面主要解释address和ID寻址方式,间接寻址将在后面提及。
address寻址主要用于memory和i/orequest请求包,memory读写请求包支持64位地址和32位地址,i/o读写请求只支持32位地址。
64位地址寻址的TLPHeader有4DW(16字节),32位地址寻址的TLPHeader有3DW长。
上图就是64位地址的4DW的包头和32位地址的3DW的包头。
对于memory读写request包,AT(addressTypefield)有如下的编码。
ID寻址方式主要用在configuration请求包、部分message包、响应包中。
ID包括Busnumber、Divcenumber、functionnumber为TLP定位目标接收器。
ID寻址的TLP包头长度也有4DW和3DW两种,ID在TLP中位置见下图。
第七个Byte(Byte7)是第一个DW数据负荷和最后一个DW数据负荷使能位(ByteEnables),ByteEnables在于memory,i/o,configuration请求包中有效,如图。
对于lastDWBE和1stDWBE中的每一个位,为0表示相应的数据字节不被读或写,为1表示相应的数据字节有效。
每个使能位相对应的字节如下。
处理层描述符(transactionDescriptor),用于请求器件和应答器件间转送处理层信息,包括三部分,TransacitonID、Attributes、Trafficclass(TC)。
如下图。
其中TransactionID包括:
RequesterID、Tag,如图。
Tag[7:
0]是由产生请求包的器件生成的,如果请求器件需要应答,则每个Tag[7:
0]和FunctionNumber是独一无二的。
TransactionID是一个全局标识符用于响应包寻址请求器件。
TC的规定如下,描述服务的层次和用于映射虚拟通道:
处理层描述符在请求包中第二个DW:
。
中图中看出,描述字符放在第二个DW的前三个字节中。
三.i/o,memory,configuration,messagerequest、completetion详解。
memory、i/o、configurationrequest包头除了基本的域之外还包括:
TransactionID即requesterID、Tag、LastDWBE、1stDWBE,放在第二个DW中。
以下分别介绍这三种不同的请求包。
memoryrequestpackage:
采用直接地址寻址,有64bit地址和32bit地址两种,其中读请求包的Length域不应大于Max_Read_Request_Size寄存器设置的值。
请求器件不会示例一个所访问的memory空间超过4KB的readrequest包。
以下是两种不同地址长度的memoryrequest包。
I/Orequest包:
I/Orequest包只有32位地址寻址。
有如下限制:
▲ TC[2:
0]mustbe000b
▲ Attr[1:
0]mustbe00b
▲ AT[1:
0]mustbe00b
▲ Length[9:
0]mustbe0000000001b
▲ LastDWBE[3:
0]mustbe0000b
格式如下:
可见每次只传送一个DW数据。
configurationrequest包:
configurationrequest包采用ID寻址方式,包头(TlpHeader长度是3DW)。
有如下规定:
•TC[2:
0]mustbe000b
•Attr[1:
0]mustbe00b
•AT[1:
0]mustbe00b
•[9:
0]mustbe0000000001b
•LastDWBE[3:
0]mustbe0000b
包格式:
Message包:
Message包分为:
INTxInterruptSignalingINTx中断信息包
PowerManagement电源管理机能。
ErrorSignaling错误信息包
LockedTransactionSupport锁住交易的支持
SlotPowerLimitSupport插槽电源限制的支持
Vendor-DefinedMessages制造商自行定义信息
所有的Message包都用Msg编码,即不包括数据负荷的Message包,除了Vendor_DefinedMessages和Set_Slot_Power_LimitMessage包,Message包有以下限制:
□ TheMessageCodefieldmustbefullydecoded(Messagealiasingisnotpermitted).
□ Exceptasnoted,theAttr[1:
0]fieldisreserved.保留Attr域。
□ AT[1:
0]mustbe00b.
□ Exceptasnoted,bytes8through15arereserved.保留包头部分的bytes8到byte15.
□ MessageRequestsarepostedanddonotrequireCompletion.Message包不需要返回响应包。
□ MessageRequestsfollowthesameorderingrulesasMemoryWriteRequests.
寻址方式:
隐含寻址,由Type域中的r[2:
0]决定,即Type域的最后三位。
具体寻址映射如下:
r[2:
0]是010时,寻址方式就是ID寻址。
completionrules(应答机制):
completion包用ID寻址方式,寻址使用的ID就是request提供的requesterID。
除了那些正常的域以外,还包括:
◆ CompleterID[15:
0]–IdentifiestheCompleter–describedindetailbelow
◆ CompletionStatus[2:
0]–IndicatesthestatusforaCompletion
◆ BCM–ByteCountModified
◆ ByteCount[11:
0]–TheremainingbytecountforRequest
◆ Tag[7:
0]–incombinationwiththeRequesterIDfield,correspondstotheTransactionID
◆ LowerAddress[6:
0]–lowerbyteaddressforstartingbyteofCompletion
compl.Status位有如下含义:
四.请求和应答处理机制
处理机制就是对接收到的经DataLinkLayer进行数据完整性验证的Tlp进行处理。
无效的包将被抛弃,保留字(reserved)将被忽略。
以下是处理流程:
对所有的包分requesthandling和completionhandling,按不同的规范处理。
RequestHandlingRules:
如果请求是一个不支持的请求包,并且需要响应,则CompletionStatus=UR,即不支持的请求。
如果请求包是一个Message包则按Message包处理规则处理,否则对这个request进行处理。
如果请求违反器件编程定义则给出ca响应,即响应器件放弃该请求,否则做出正确应答。
completionhandling:
如果接收到一个completion包的TransactionID和requester的TransactionID不一致则这个应答包是非预期包。
合法的应答包将按Compl.Status域处理并提取有效数据负荷。
五.virtualchannel(vc)Mechanism虚拟通道机制。
虚拟信道(virtualchannel)在总线中提供用TC域来区分的虚拟信息通路,即某一传输通路,有不同的流程控制机制(FlowControl)。
当某流程控制出现拥塞时,其他通路依然畅通。
VC有自己的独立流控制,是实现Qos的秘诀。
VC通道是解决拥塞的基础。
在Switch内部,VC通道机制如下:
每个TLP包并不包含具体的VC信息,VC是由TC映射得到的。
每个器件的TC/VC映射是不同的,TC0/VC0是固定的。
具体TC、VC映射如下:
一个或多个TC映射到一个VC,同一个TC不能映射到不同的VC上,连接双方的映射机制一致。
除了TC0外,其他的可以软件设置。
链路两端的映射方案要一致,如图是一种映射方案。
具体的虚拟通道是由VCID决定和识别的。
现在介绍FlowControl,每个虚拟通道有独立的流程控制的缓冲空间。
在收发双方,流程控制信息是用数据链路包(DLLP)打包发送的,其中的“VCID“就是用来载送虚拟通道的识别。
总的来说,流程控制是由数据交易层(TransactionLayer)搭配了数据链路层(DataLinkLayer)来处理的,只是,处理层通常是针对接收到的TLP打包,生成TC,再由TC映射到VC。
流程控制信息是FCP(FlowControlPackage),即DLLP打包的一种。
流程控制的信用单位是Credit,也就是接收器的缓冲空间是4DW。
信用单位:
就是接收端缓冲空间大小的基本单位。
流程控制能分辨三种包:
postedrequests(p)、non-postedrequests(Np)、completions(cpl)。
还可以分辨三种包的包头Header和数据Data,可以这样说,每个虚拟通道(VC)对应的特定流程控制包含6种不同的流程控制信息:
1、PH=postedRequestHeader;2、PD=postedrequestDataPayload;3、NPH=non-postedrequestHeader;4、NPD=non-postedrequestDataPayload;5、CPLH=completionHeader;6、CPLD=completionDataPayload。
各种包对应的流程控制如下表;
六.dataintegrity数据完整性
主要的数据完整性保证之一是DataLinkLayer中的crc(lcrc)。
为了确保数据端对端的可靠性在Transaction层的TLpDigest域还选择性的做一ECRC校验,ECRC的初值是FFFFFFFF,算法实现如下:
TransactionLayerspecifications只是pcie总线规范的一层规范,主要处理数据包的传送管理,此外还有DataLinkLayer规范和physicalLayer规范。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pcie 处理 协议 详情 中文 详解