PCIE中基于地址的路由
工作原理
当一个TLP进行数据传递时,可能会经过多级Switch,最终到达目的地
在一个Switch中包含 了多个虚拟PCI-to-PCI桥。
在虚拟PCI-to-PCI 桥的配置寄存器空间中,包含一个桥片能够接收的物理地址范围。
PCIe总线通过这个 物理地址范围实现基于地址的路由。
当系统软件初始化PCI总线时,将合 理地设置这些寄存器,之后当TLP通过这些Switch时将根据这些寄存器选择合适的路径。
pci桥片配置中,描述了三组空间范围
IO空间
memory 空间
prefetchable空间
该空间通过两个参数进行描述,base和limit, 分别表示空间基地址和可访问空间的大小
TLP使用基于地址的路由时,一定要通过查询这组寄存器之后,再决定传送路径。
实际的例子
TLP1
RC中地址转换完成后,通过PCI BUS0, 送到switch, 并进入switch upstream口,到达P-P1桥片
检查base和limit寄存器,判断是否可以接收
如果在范围内,可以接收,将TLP从BUS0, 送到BUS1
如果不在范围内,不可接收,同时如果TLP1需要响应报文,则由switch发出,状态为unsupported request
switch接收TLP1后,送往P-P2,P-P3桥片,他俩判断base/limit寄存器,决定谁接收该TLP
图中P-P2接收后,送往EP1,完成TLP路由
TLP2
TLP2发往P-P3桥片,在P-P3桥片配置寄存器的Limit和Base寄存器中当然不会包含TLP2所访问的地址,此时P-P3 桥片将TLP2推至PCI Bus1
当TLP2到达PCI Bus1时,首先检查在PCI Bus1总线上的P-P2桥片是否可以接收此TLP,如果不能接收则TLP2通过P-P1桥片传递到PCI Bus0,即到达RC。
在MPC8548处理器中,到达RC的TLP首先通过Inbound寄存器进行地址转换,将TLP的PCI总线地址转换为处理器的地址,然后访问处理器中相应的存储器空间;
对于x86处理器而言,MCH也会完成PC I 域地址空间到存储器域地址空间的转换,然后访问处理器中相应的存储器空间。
TLP3
TLP3 的传递方式与TLP2的传递方式有些类似,当TLP3传递到PCI Bus1时,P-P2桥片将接收TLP3,并将TLP3传递到PCI Bus2上的EP1中。
TLP3在PCI总线域上进行数据传递,因此不需要进行PCI总线域到存储器域的地址转换。