TLP Format
今天我们来看一看Transaction Layer的TLP报文的具体组成。回顾一下前面我们讲到的Transaction Layer的报文。分为三个部分:Header、Data和ECRC。
Header包含了这个TLP的类型、格式、路由地址、数据长度等重要信息,是TLP报文的核心,通常长度为3DW或4DW。Data则是具体的数据区域,4K长度,如果数据的长度超过4K,则会有多个包含数据的TLP报文。ECRC是对Header和Data区域的校验和,在接收端这个校验和会重新计算一次并和发送的ECRC做比对,以确认这个报文的内容是否合法。
Header的第一个字节定义了这个报文的格式:
- Fmt定义了这个TLP Header是3DW长度的,还是4DW长度的。这个TLP是带Data的,还是不带Data的,比如读请求TLP就是不带数据的。
- Type定义了这个报文是Memory W/R还是Config W/R,或者是Message、Completion。
当Fmt和Type确认之后,不同类型的TLP后面的字段各不相同,具体可以参考Spec。
以下是一个64位地址的memory 访问的Header,它是4DW长度,可以看到Header里面Byte4和Byte5明确的表明这个报文的Requester是谁,byte8开始,表示访问的地址是多少: