TLP-Common Packet Header Fields

写在前面:

1、本文参考来源PCIe 6.2,2024.02.25

2、仅作为个人学习记录和分享,转载请注明出处

3、个人能力有限,协议的理解均基于个人,如有错误还望指出


文章目录

目录

1.For Non-Flit Mode

2.For Flit Mode

2.1Header Base

2.2.OHC-A

2.3.OHC-B

2.4.OHC-C



1.For Non-Flit Mode

图1.Common Packet Header Field for Non-Flit Mode

图1为Non-Flit模式下的通用包头接口,其中从左至右依次为Byte0-Byte3,每个Byte中的bit按从高到低排序。图中各个域的解释如下:

Fmt:一般来讲表示Header的大小--3/4DW是否包含数据

Type:表示TLP的类型--读/写/配置等,一般Fmt跟Type有规定的组合,详见协议Table2-3

T9/T8:一般为Tag的bit9和bit8,不采用10bit时这两个bit位为0

TC:表示traffic class,跟传输的优先级相关

A2/Attr:Attr[2:0],表示采用的排序规则 

R:表示Reserve,一般为0

TH:TLP Hints,表示是否存在TLP Processing Hint和TPH TLP Prefix,也就是PH和ST是否有效,PH一般来将表示此段数据的操作频率和类型,ST在MSIX-Table中配置,表示更细的操作颗粒度

TD:表示是否存在TLP Digest

EP:表示当前TLP是否为poisoned

length:表示当前TLP的payload的大小,注意一般0表示1024DW,1表示1DW


2.For Flit Mode

2.1Header Base

图2.First DW of Header Base for Non-Flit Mode

图2表示的为Flit Mode的Header Base的第一个DW,其中各个域的含义为:

Type:表示当前TLP的类型,包括读/写/配置/DMWr等,其中还表明当前Header Base的大小/是否包含payload data等

TC:跟Non-Flit Mode含义一致

OHC:Orthogonal Header Content,包括OHC-A/OHC-B/OHC-C等

TS:表示Trailer Size,主要包括包含ECRC的1DW大小/IDE MAC的3DW大小/IDE MAC和PCRC的4DW大小

Attr:跟Non-Flit Mode含义一致

Length:跟Non-Flit Mode含义一致

一般来讲Header Bse后紧跟OHC,可以包含你多个和多类型的OHC,但是需要按照A-B-C-E的顺序。Receiver必须检查Request-OHC是否符合规则,如果不符合则处理为UR,对Complete来说则处理为UC。


2.2.OHC-A

图3.OHC-A1至OHC-A5

1)OHC-A1

主要适配场景为:

  • 包含具体字节使能和或者PASID的memory request
  • 采用地址路由的包含PASID的message和路由到RC的包含PASID的message
  • translation请求

NW:表示No Write,此bit位除了translation请求外均为Reserved

PV:表示PASID Valid,置1时表示PASID有效,清零时表示PASID无效,此外同时表示PMR和ER是否有效

PMR:Privileged Mode Rquested,此bit位除了translation请求外均为Reserved

FDBE/LDBE:表示当前TLP的payload中的第一个/最后一个DW中的字节使能

ER:Execute Requested 此bit位除了translation请求外均为Reserved

2)OHC-A2

主要适配的场景为:IO请求中必须包含

历史遗留应用,在此不做解释

3)OHC-A3

主要适配的场景为:配置请求中必须包含

Destination Segment/Reserved:当DSV清零时为Reserved,置1时为Destination Segment

DSV:Destination Segment Valid

FDBE/LDBE:表示当前TLP的payload中的第一个/最后一个DW中的字节使能

4)OHC-A4

主要适配的场景为:ID路由的消息,其要求包含Destination Segment和/或PASID(此场景下必须包含)

Destination Segment/Reserved:当DSV清零时为Reserved,置1时为Destination Segment

DSV:Destination Segment Valid

PV:PASID Valid

5)OHC-A5

主要适配的场景为:completions

  • 不成功的completions必须
  • 包含lower address[1:0]的Non-UIO completions并且其不为00b
  • 需要包含Deestination Segment的completions,因为其相关的请求的Requester Segment与Completer获取到的Segment不一致
  • 当cpl-status为succeccful和lower address[1:0]为00b和completer's的Segment Captured bit清零时均满足时必须不包含OHC-A5
  • 满足上一点中的三个条件时同时满足对应requester也不包含Requester Segment或者包含的Requester Segment与completer获取的Segment不一致和TEE-IO Supported清零或者Completion不是一个Selective IDE Stream时,被允许不包含OHC-A5

Destination Segment/Reserved:当DSV清零时为Reserved,置1时为Destination Segment

DSV:Destination Segment Valid

LA:Low Address的低两bit

Cpl.Status:表示CPL的状态,包括SC/CA/UR等

总结:场景需求说明:

1)对所有Memory Request来说允许包含OHC-A1

2)对OHC-A1来说,当请求中需要包含OHC-A1中的域信息时,OHC-A1都必须被实现,当OHC-A1没有被实现时,对请求超过/等于2DW的FDBE和LDBE均被视为1111b


2.3.OHC-B

图4.OHC-B

主要适配场景为:仅适配地址路由场景,当OHC-B出现在别的类型的TLP中时,其所有域均为Reserved

ST:Steering Tag,操作颗粒度

PH:Processing Hint

HV:Hints Valid,表示PH和SY有效,具体情况如下:

  • 00b--PH和ST均无效并Reserved
  • 01b--PH和ST[7:0]有效,但是ST[15:8]无效并Reserved
  • 10b--保留编码,receiver必须将其看待为00b
  • 11b--PH[1:0]和ST[15:0]均有效

AMA:Address Translation Services Memory Attribute

AV:AMA Valid,表示AV是否有效


2.4.OHC-C

图5.OHC-C

主要适配场景:

1)IDE TLP必须包含OHC-C

2)Non-IDE TLP在想要指示Requester Segment的情况下也必须包含OHC-C

Requester Segment:此域当RSV失效时为Reserved

PR_Sent_Counter:分成两种:

  • 使用-NPR后缀,一般出现在传输Non-Posted请求中,表示最后一个Non-Posted请求或者IDE同步消息传输完成后传输的Posted请求个数
  • 使用-CPL后缀,一般出现在传输CPL完成中,表示最后一个CPL完成或者IDE同步消息传输完成后传输的Posted请求个数

Stream_ID:表示IDE Stream的ID,请求与完成需一致

Sub_Stream:关联于TLP类型:

  • IDE TLP中:000b-Posted Request;001b-Non-Posted Request;010b-Completion;011b-110b,reeceiver的行为未定义;对IDE Completionn TLP来说,Requester Segement必须为Reserved且RSV必须清零
  • Non-IDE TLP中:其值必须为111b,同时PR_Sent_Counter/Stream_ID/K/T均为Reserved

K:表示一个聚合单元的第一个TLP(翻转)

T:被TEE管理机制使用,表示TLP来自一个受信的可执行环境

补充说明:

  • 对Requester的要求:

1)当Segment Captured Bit为清零状态时,所有Non-IDE消息和Memory请求不允许包含带有Requester Segment的OHC-C

2)当Segment Captured Bit置1时,由Requester初始化的所有消息请求都必须包含带有Requester Sgment的OHC-C

3)当Segment Captured Bit置1时,Requester允许在Memory请求中包含带有Requester Segment的OHC-C

4)当Segment Captured Bit清零时,由Requester初始化的ID路由的消息请求都不可以包含Destination Segment并且DSV为清零状态

  • 对Completer的要求:

1)当Segment Captured bit被清零时,completer必须在包含OHC-A5的所有completion中将completer Segment域置0

2)completer必须在configuration request中将OHC-A5的DSV和Destination Segment域置0

3)对没有Requester Segment的NP请求的Completion其OHC-A5的DSV和Destination Segment均置0

4)跟第三点相反的就必须包含Destination Segment

5)当Segment Captured Bit置1,且收到包含Requester Segment的NP Memory Reuqest,其对应的completion必须包含Destination Segment

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值