【PCIe Byte Enable】

PCIe Byte Enable 及与TPH关系

Byte Enable

PCIe Byte Enable 在mem/IO/Cfg TLP中被应用并且在各种不同TLP中的没有区别,PCIe中Byte Enable与AXI中wstrb类似起到mask的作用,但是PCIe不支持request数据全部字节的mask,只支持数据头和尾部各一个DWord的mask,因此PCIe只引入了First Byte Enable和Last Byte Enable。
Byte Enable 在TLP Header中位置:
在这里插入图片描述

Continue Byte Enable

Continue Byte Enable指的是byte enable 在1之间不可以有0。

  • TLP length域为1DW
    Last Byte Enable 必须为0;
  • TLP length域大于1DW
    First Byte Enable 不可以为0;
    Last Byte Enable 不可以为0;
  • TLP length域大于等于2DW
    First Byte Enable和Last Byte Enable及之间的数据必须是连续的。
    Example:
    First Byte Enable: 1100b; Last Byte Enable 0011b;
    First Byte Enable: 1000b; Last Byte Enable 0111b;

Non-Continue Byte Enable

Non-Continue Byte Enable指的时Byte Enable 在1之间有0。
Example:
1010b/0101b/1001b/1011b/1101b

  • TLP length域为1DW
    • First Byte Enable可以是任意的值;
  • TLP length域大于2DW
    • length 是4DW对齐的情况,First Byte Enable和Last Byte Enable才支持Non-Continue;

zero write & zero read

Zero write是length为1DW,并且First Byte Enable为all zero的写场景,这种场景在某些protocols下有应用场景,Spec中的Example 是LN protocol,详细协议参见Spec Section 6.21
Zero read是length为1DW,并且First Byte Enable为all zero的读场景,这种场景通常被用来flush target mem。

TPH

当requester本身知道数据的用法,可以在TLP中添加Hints来提高系统效率,为了实现该功能TLP Header中引入TH和PH两个域。
在这里插入图片描述
TH表示Requester是否知道数据的用法,也即PH域是否有效。
PH域encoding:
在这里插入图片描述
下面用Device Write to Host Read的例子来说明TPH是怎样提高系统效率的:
------------------------------------------未完待续---------------------------------------------

Byte Enable 与TPH的关系

当TLP Header中TH为1且length大于1 DW时,mem_read中First Byte Enable 和Last Byte Enable都要为1。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值