概述
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报文的传递。
最后
以上就是畅快泥猴桃为你收集整理的pcie 设备号多少位_PCIe系列第四讲、TLP的路由方式的全部内容,希望文章能够帮你解决pcie 设备号多少位_PCIe系列第四讲、TLP的路由方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复