PCIe Transaction layer: TLP,路由,流量控制
分类:
文章
•
2025-03-08 14:20:46
- TLP分为Mem/IO/Cfg/Message四种,通用的的格式为
- Header种包含当前TLP总线事务类型、data payload大小、路由、描述符等信息

a) Fmt和Type决定了当前TLP的总线事务类型Mem RW还是CplD,TLP header是3DW还是4DW,是否有data payload
b) TC与QoS相关,Attr与TLP的序相关,其他字段为一些标志位
c) Length是data payload的大小,0000000001 1DW,00000000001024DW
- Byte Enable字段主要用于非对齐传输,因为TLP的data payload是4byte(1DW)递增的,但如果首地址或尾地址不是4byte对齐,就需要该字段,某bit为0,代表payload中某个byte无效

- 基于地址的路由主要用于Mem/IO的Request,有64bit和32bit两种TLP
- 基于ID的路由主要用于Cfg和Completion,根据bus号、device号,function号
- Mem/IO/Cfg Requester,Mem可以32bit/64bit位宽,IO只能用32bit
a) Tag[9:0] is a 10-bit field generated by each Requester, and it must be unique for all outstanding Requests that require a Completion for that Requester. Requesters
b) Requester ID是源设备的bus/device/function号,因为对于NPR报文,其Cpl完成报文需要该源设备的ID号来路由;所以在Cfg TLP中就分别出现源设备ID,目的设备ID;Mem/IO TLP中出现源设备ID和目的设备地址


- Message Request有INTx中断信号、Power Management信号、Error Signaling信号、Vender-defiend等类型。Message采用implicit路由方式。Message code是message类型的编号,比如Assert_INTA/B/C/D Deassert_INTABCD ERR_FATAL等

- Completion报文。所有的Read,Non-posted Write(Cfg/IO wr),AtomicOp都需要cpl。基于ID路由,Byte count代表The remaining Byte Count for Request
- 总线的序:不同TC的TLP没有ordering的要求,不同VC则更没有ordering的要求

- 流量控制:每个TC都要map到某个VC,TC0/VC0之间的map is fixed。TC/VC是多对一的关系。每个VC都有单独的FC(Flow Control)。FC按照如下标准对不同的TLP分配credit进行流量控制
