PCIe系列第四讲、TLP的路由方式

TLP的路由方式指的是TLP经过Switch或者PCIe桥片时采用哪条路径,最终到达EP或RC的方法。

PCIe总线继承了PCI总线的地址路由和ID路由方式,并新增了“隐式路由”方式。 

存储器和IO读写操作请求TLP使用基于地址的路由方式,这种方式使用TLP中的Address字段进行路由选径,最终到达目的地。

配置读写报文、“Vendor_Defined Messages”报文、cpl、cplD报文使用基于ID路由方式,这种方式使用PCI总线号(Bus Number)进行路由路径选择,在Switch或多端口RC的虚拟PCI-to-PCI桥配置空间中,包含如何使用PCI总线号进行路由路径选择的信息。

隐式路由主要用于Message报文的传递,在PCIe总线中定义了一系列消息报文,包括“INTx Interrupt Signaling(中断信号)”、“Power Management Message(电源管理信息)”、“Error Signal Message(错误信息)”等报文,在这些报文中,除了“Vendor_Defined Messages”报文,其他所有信息报文都使用隐式路由方式。

隐式路由是指从下游端口到上游端口进行数据传递的使用路由方式,或者用于RC向EP发出广播报文。

Egress端口和Ingress端口 

Egress端口指发送端口,即数据离开Switch使用的端口,ingress端口指的是接收端口即数据进入switch使用的端口(E,export)。

Egress端口和Ingress端口与上下游端口没有对应关系,在switch中,上下游端口可以作为Engress端口,也可以作为Ingress端口,如图所示,RC对EP3内部的寄存器进行读写操作时,Switch的上游端口为Ingress端口,下游端口为Egress。当EP3对主存储器进行DMA写操作时,该Switch的上游端口为Egress端口,而下游端口为Ingress端口。 

图片

上游端口和下游端口 

在PCIe总线中,Switch是一个特殊的设备,该设备由一个上游端口和2~n个下游端口构成,PCIe总线规定:在一个switch中可以与RC(Root Complex)直接或者间接相连的端口为上游端口,在PCIe总线中,RC的位置一般位于上方,这也是上游端口的由来。

在switch中除了上游端口外,其他所有的端口都被称为下游端口,下游端口一般与EP相连,或者链接下一级switch继续扩展PCIe链路,其中与上游端口相连的PCIe链路称为上游链路,与下游端口相连的PCIe链路称为下游链路。 

基于地址的路由 

在PCIe总线中,存储器读写和I/O读写TLP使用基于地址的路由方式。 

当一个TLP进行数据传递时,可能会经过多级Switch,最终到达目的地。Switch将根据存储器读写或者IO读写请求TLP的目的地址将报文传递到合适的Egress端口上。一个Switch包含几个端口,就包含几个虚拟PCI-to-PCI桥。 

在虚拟PCI-to-PCI桥的配置空间中,包含一个桥片能够接受的物理地址范围,PCIe总线通过这个物理地址实现基于地址的路由,这段配置寄存器如下图所示,当系统软件初始化PCI总线时,将合理的设置这些寄存器,之后当TLP通过这些Switch时将根据这些寄存器选择合适的路径。

图片

上图中的配置寄存器的配置过程由上位机完成,该配置寄存器描述了该虚拟PCI-to-PCI桥下游PCI子树使用的三组空间范围,分别为I/O、存储器、可预取的存储器空间,分别用Base和Limit两类寄存器描述,Base表示可访问空间的基地址,Limit表示可访问的空间的大小,一定要通过查询这组寄存器后,再决定传送路径。

图片

基于ID的路由 

在PCIe总线中,基于ID的路由方式主要应用于配置读写TLP和Cpl、CplD报文,此外Vender_Defined消息报文也可以使用这种基于ID的路由方式。 

基于ID的路由方式和基于地址的路由方式有较大的不同,两者的TLP头格式也存在着较大的区别:

图片

基于ID路由的TLP使用Bus Number、Device Number和Function Number进行路由寻址。 

PCIe总线规范规定,在一个PCI总线域空间中,最多只能有256条总线,因此在一个TLP中,Bus Number由8位组成;而在一条总线中最多包含32个设备,因此TLP中的Device Number由5位组成;而每个设备最多包含8个功能,所以一个TLP的Function Number由3位组成。

配置读写请求TLP是基于ID路由的一组重要报文,其主要作用是读写PCIe总线的EP、Switch、PCIe桥片的配置寄存器,已完成PCIe总线的配置,在处理器上电后对PCIe系统进行枚举,为PCIe总线分配总线号,并设置Switch、EP、PCI桥的配置,如Limit寄存器组、Base寄存器组、BAR寄存器、Primary Bus Number、Secondary Bus Number、Subordinate Bus Number等配置参数。

隐式路由

PCIe总线相对于PCI总线的一大改进便是消除了大量的边带信号,这正是通过Message的机制来实现的。 

PCIe中心规定消息请求报文使用隐世路由方式,在PCIe总线中,有许多消息是直接发向RC或者来自RC的广播报文,这些报文不使用地址或ID进行路由,而是使用Msg或MsgD报文的Routing字段({Fmt,Routing})进行路由,这种路由方式称为隐式路由。所有采用隐式路由的TLP头都是4DW的,如下所示:

图片

其中,type字段决定了隐式路由的类型,具体如下所示:

图片

000b:路由到RC 

001b:使用地址路由 

010b:使用ID路由 

011b:来自RC的广播报文(隐式路由) 

100b:本地消息,在接收端结束(Legacy使用此种报文格式传递来自PCI总线的中断报文) 

101b:用于PCIe电源管理。 

110b~111b:reserved 

当一个报文使用隐式路由向EP传送时,EP将对routing字段进行检查,如果这个报文是“来自RC的广播报文”或者“本地报文”,EP将接收此报文。 

如果Switch接收到一个隐式路由的TLP时,Switch将根据Route字段的不同而分别处理。如果Switch上游端口接受了一条来自于RC的广播信息,则将该报文发送所有的下游端口;如果Switch接收到一条来自下游端口发向RC的报文时,Switch直接转发到上游端口,直至RC;如果Switch接收到一条使用隐式路由方式的本地消息报文,则Switch将接收并终结此报文,不再上传或下推。 

如果RC接收到一个使用隐式路由的TLP时,将根据Route字段而分别处理这些TLP,如果该Route字段为3’b000 or 3’b101,RC将接收该TLP,并作相应的处理;如果为3’b100,RC将接收该报文,并结束该TLP报文的传递。

https://mp.weixin.qq.com/s?__biz=MzA5NjI1NDk0NQ==&mid=2247484469&idx=1&sn=506e41a4bda961b207b8c4b0a126ea3c&chksm=90b3aabba7c423adcbfc319b1a09393efef94accc62046bed64d06946395164e9c4245a4cdcb&scene=178&cur_album_id=1462562427954216964#rd

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCI Express (PCIe) TLP (Transaction Layer Packet) 是 PCI Express 协议的一个重要部分,它用于在不同的 PCIe 设备之间传输数据。PCIe TLP 由四个部分组成:头部、有效载荷、可选的可扩展有效载荷和 FCS(帧校验序列)。 具体来说,PCIe TLP 的格式如下: |---------------------------| | PCIe TLP 头部 (12 字节) | |---------------------------| | 有效载荷 (0 - 1024 字节) | |---------------------------| | 可扩展有效载荷 (0 - 1024 字节) | |---------------------------| | FCS(帧校验序列)(4 字节) | |---------------------------| PCIe TLP 头部包括以下字段: - TC(传输类别):指定 TLP 的类型,比如请求(Memory Read/Write)、Completion 等。 - TD(传输方向):指定 TLP 的传输方向,是从上游设备到下游设备还是相反。 - EP(端点):指定 TLP 的目标设备端口号。 - Length(长度):指定有效载荷的长度。 - First DW BE(第一个双字节字节 Enable):指定有效载荷的第一个双字节的哪些字节是有效的。 - Last DW BE(最后一个双字节字节 Enable):指定有效载荷的最后一个双字节的哪些字节是有效的。 - Tag(标签):可选字段,用于匹配请求和 Completion TLP。 - Requester ID(请求者 ID):可选字段,用于标识发起 TLP 的设备。 - Completer ID(完成者 ID):可选字段,用于标识处理 TLP 的设备。 PCIe TLP 的有效载荷可以是数据、地址或控制信息。可扩展有效载荷在某些情况下用于传输额外的数据或信息。FCS 是一个校验序列,用于检测传输的错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值