编辑
2024-02-28
记录知识
0
请注意,本文编写于 484 天前,最后修改于 59 天前,其中某些信息可能已经过时。

目录

PCIE事务层-tlp路由寻址
地址路由
ID路由
First/Last DW Byte

PCIE事务层-tlp路由寻址

tlp有三种方式路由,Address方式,ID方式和implicit(隐式) address和id是常用路由方式,implicit仅用作message request的type tlp包的路由,这里描述一下address和id。

地址路由

address 路由用作memory和io类型,如果是64位地址则header是4dword,32位地址则是3dword,如下

image.png

对于地址路由时,header的1dword的at字段在memory read/write和atomicOp请求时有效,其他tlp类型时,at字段保留。如下

image.png

也就是:00b=未转换的地址,01b=地址转换请求,10b=已转换的地址,11b=预留

如果存在转换的地址,则地址映射关系,体现在header域的byte8-byte15上,如下图所示

image.png

值得注意的是,对于4g以下的地址,请求必须以32位的格式。

ID路由

id路由通常作为配置请求,ID Routed Message和Completions。对于header中,需要定义Vendor_Defined Messages作为ID。

id路由通过BDF(Bus,Device,Function Numbers)来明确TLP的目的地址

对于ari和非ari设备,id路由的header域值如下

image.png

如果是4dword的tlp header,id路由的header布局如下.(不同字节的header由tlp的类型决定)

image.png

如果是3dword的tlp header,id路由的header布局如下

image.png

这里可以从byte8和byte9来确定BDF值作为id路由的依据

First/Last DW Byte

对于header的byte7,有两个字段,last dw/1st dw。它与byte2和byte3的length[9:0]有一定关系:

  • 如果length的长度是大于1dword,则1st的值不能为0000,last的值也不能为0000
  • 如果length的长度等于1字节,则last的值必须是0000