棋子 · 2月17日

PCIe 知识点:TLP Byte Enables rules

1.什么是 byte enable

PCIe 协议规定 TLP 中的 data payload 是 1DW(特殊情况此处不介绍)对齐的,因此在使用 addr 的 TLP 中省略了 addr[1:0],为了指示 DW 中的有效字节,PCIe TLP header 使用 First/Last DW Byte Enables 表示 data payload 的首个/最后一个 DW 中的哪些 byte 是有效的。对应字节的 byte enable 为 1 则表示字节有效。

Memory, I/O, and Configuration Requests 的 TLP header 需要用到 Byte Enable.如图 2-32 所示,First/Last DW Byte Enables 位于 TLP header 的 byte 7。如表 2-10 所示,First DW BE[0]位于 TLP byte7 的 bit 0,表示 data payload 的 byte 0。First DW BE[1]位于 TLP byte7 的 bit 1,表示 data payload 的 byte 1。Last DW BE[3]位于 TLP byte7 的 bit 7,表示 data payload 的最后一个 byte。

image.png

Image

2.Byte Enables rules

  • 如果 request 的 length 表示 data 长度大于 1DW,则当前 TLP header 中的 First DW BE[3:0] f 字段不能等于 0000b
  • 如果 request 的 length 表示 data 长度等于 1DW,则当前 TLP header 中的 last DW BE[3:0] f 字段必须等于 0000b
  • 如果 request 的 length 表示 data 长度大于 1DW,则当前 TLP header 中的 last DW BE[3:0] f 字段不能等于 0000b
  • length 为 1DW 的请求中,允许出现非连续的 First DW BE,例如 1DW 的请求中 First DW BE[3:0]为 1010b, 0101b, 1001b, 1011b, 1101b 都是允许的。
  • 在 2DW 对齐的 memory 请求中,如果请求的 length 为 2DW,则 last DW BE[3:0] 和 First DW BE[3:0]均允许出现非连续。
  • 长度为 2DW 的非 2DW 对齐的 memory Requests 和 长度大等于 3DW 的 memory Requests ,其 First DW BE[3:0] 和 First DW BE[3:0] 设置必须要保证有效字节连续,例如

First DW BE: 1100b, Last DW BE: 0011b

First DW BE: 1000b, Last DW BE: 0111b

  • zero-length Write:是 length 为 1DW 且所有字节都是无效的(即 First DW BE[3:0] 和 last DW BE[3:0] 均为的 0000b)Write Request,除非特殊说明,否则此请求不应该对 Completer 造成任何影响(即不会在 Completer 产生写操作)。
  • zero-length Write 常常用作 flush 请求。例如,为了确认之前发起的 Post write 已被目标设备完成,发送一个 zero-length read 且读地址和 Post write 的写地址保持一致,当收到 zero-length read 的 completion 时就能确保 Post write 已被目标设备完成。
  • zero-length Read:长度为 1DW 且所有字节都是无效的(即 First DW BE[3:0] 和 last DW BE[3:0] 均为的 0000b)read Request,其对应的 Completion 必须指明长度为 1DW,且包含长度为 1DW 的 data payload
  • 如果接收到的 TLP header 中的 First DW BE[3:0]和 last DW BE[3:0]违背了本章节的规定,协议并没有规定 Receiver/Completer 的行为
  • Receiver 可以选择检查 Byte Enables rules,一旦进行检查且分析 TLP 违背了 Byte Enables rules,则把 TLP 当做畸形 TLP 处理

3.参考文档

PCI Express Base Specification Revision 6.2, section 2.2.5, p. 182.

END

作者:IC小鸽
文章来源:IC小鸽

推荐阅读

更多 IC 设计干货请关注IC 设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
21035
内容数
1326
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息