PCIe Transaction layer: TLP,路由,流量控制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/maxwell2ic/article/details/90759360
  1. TLP分为Mem/IO/Cfg/Message四种,通用的的格式为
  2. 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
  3. Byte Enable字段主要用于非对齐传输,因为TLP的data payload是4byte(1DW)递增的,但如果首地址或尾地址不是4byte对齐,就需要该字段,某bit为0,代表payload中某个byte无效

  4. 基于地址的路由主要用于Mem/IO的Request,有64bit和32bit两种TLP
  5. 基于ID的路由主要用于Cfg和Completion,根据bus号、device号,function号
  6. 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和目的设备地址


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

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

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

猜你喜欢

转载自blog.csdn.net/maxwell2ic/article/details/90759360
今日推荐