5.1 TLP的格式

当处理器或者其他PCIe设备访问PCIe设备时,所传送的数据报文首先通过事务层被封装为一个或者多个TLP,之后才能通过PCIe总线的各个层次发送出去。TLP的基本格式如51所示。


5.1 <wbr>TLP的格式

一个完整的TLP1个或者多个TLP PrefixTLP头、Data Payload(数据有效负载)TLP Digest组成。TLP头是TLP最重要的标志,不同的TLP其头的定义并不相同。TLP头包含了当前TLP的总线事务类型、路由信息等一系列信息。在一个TLP中,Data Payload的长度可变,最小为0,最大为1024DW

TLP Digest是一个可选项, 一个TLP是否需要TLP DigestTLP头决定。Data Payload也是一个可选项,有些TLP并不需要Data Payload,如存储器读请求、配置和I/O写完成TLP并不需要Data Payload

TLP PrefixPCIe V2.1总线规范引入,分为Local TLP PrefixEP-EP TLP Prefix两类。其中Local TLP Prefix的主要作用是在PCIe链路的两端传递消息,而EP-EP TLP Prefix的主要作用是在发送设备和接收设备之间传递消息。设置TLP Prefix的主要目的是为了扩展TLP头,并以此支持PCIe V2.1规范的一些新的功能。

TLP头由3个或者4个双字(DW)组成。其中第一个双字中保存通用TLP头,其他字段与通用TLP头的Type字段相关。一个通用TLP头由FmtTypeTCLength等字段组成,如52所示。

5.1 <wbr>TLP的格式

如果存储器读写TLP支持64位地址模式时,TLP头的长度为4DW,否则为3DW。而完成报文的TLP头不含有地址信息,使用的TLP头长度为3DW。其中Byte 4~Byte 15的格式与TLP相关,下文将结合具体的TLP介绍这些字段。

5.1.1 通用TLP头的Fmt字段和Type字段

FmtType字段确认当前TLP使用的总线事务,TLP头的大小是由3个双字还是4个双字组成,当前TLP是否包含有效负载。其具体含义如51所示。

 51 Fmt[1:0]字段

Fmt[2:0]

TLP的格式

0b000

TLP大小为3个双字,不带数据。

0b001

TLP大小为4个双字,不带数据。

0b010

TLP大小为3个双字,带数据。

0b011

TLP大小为4个双字,带数据。

0b100

TLP Prefix

其他

PCIe总线保留

 

其中所有读请求TLP都不带数据,而写请求TLP带数据,而其他TLP可能带数据也可能不带数据,如完成报文可能含有数据,也可能仅含有完成标志而并不携带数据。在TLPType字段中存放TLP的类型,即PCIe总线支持的总线事务。该字段共由5位组成,其含义如52所示。

52 Type[4:0]字段

TLP类型

Fmt[2:0]

Type[4:0]

描述

MRd

0b000

0b001

0b0 0000

存储器读请求;TLP头大小为3个或者4个双字,不带数据。

MRdLk

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值