用是连接两个不同的 PCI 总线域,进而连接两个处理器系统,本章将在第2.5节中详细介绍
PCI 非透明桥。
使用PCI桥可以扩展出新的PCI总线,在这条PCI总线上还可以继续挂接多个PCI设备。
PCI 桥跨接在两个 PCI 总线之间,其中距离 HOST 主桥较近的 PCI 总线被称为该桥片上游总
线(Primary Bus),距离HOST主桥较远的PCI总线被称为该桥片的下游总线(Secondary Bus)。
如图2 8所示,PCI 桥1的上游总线为 PCI 总线 x0,而 PCI 桥1的下游总线为 PCI 总线 x1。
这两条总线间的数据通信需要通过 PCI 桥1。
通过 PCI 桥连接的 PCI 总线属于同一个 PCI 总线域,在图2 8中,PCI 桥1、2和3连接
的 PCI 总线都属于 PCI 总线 x域。在这些 PCI 总线域上的设备可以通过 PCI 桥直接进行数据
交换而不需要进行地址转换;而分属不同 PCI 总线域的设备间的通信需要进行地址转换,如
与 PCI 非透明桥两端连接的设备之间的通信。
如图2 8所示,每一个 PCI 总线的下方都可以挂接一个到多个 PCI 桥,每一个 PCI 桥都
可以推出一条新的 PCI 总线。在同一条 PCI 总线上的设备之间的数据交换不会影响其他 PCI
总线。如 PCI 设备21与 PCI 设备22之间的数据通信仅占用 PCI 总线 x2的带宽,而不会影响
PCI 总线 x0、x1与 x3,这也是引入 PCI 桥的另一个重要原因。
由图2 8我们还可以发现 PCI 总线可以通过 PCI 桥组成一个胖树结构,其中每一个桥片
都是父节点,而 PCI Agent 设备只能是子节点。当 PCI 桥出现故障时,其下的设备不能将数
据传递给上游总线,但是并不影响 PCI 桥下游设备间的通信。当 PCI 桥1出现故障时,PCI
设备11、PCI 设备21和 PCI 设备22将不能与 PCI 设备01和存储器进行通信,但是 PCI 设备21
和 PCI 设备22之间的通信可以正常进行。
使用 PCI 桥可以扩展一条新的 PCI 总线,但是不能扩展新的 PCI 总线域。如果当前系统
使用32位的 PCI 总线地址,那么这个系统的 PCI 总线域的地址空间为4GB 大小,在这个总线
域上的所有设备将共享这个4GB 大小的空间。如在 PCI 总线 x域上的 PCI 桥1、PCI 设备01、
PCI 设备11、PCI 桥2、PCI 设备21和 PCI 设备22等都将共享一个4GB 大小的空间。再次强调
这个4GB 空间是 PCI 总线 x 域的“PCI 总线地址空间”,和存储器域地址空间和 PCI 总线 y
域没有直接联系。
处理器系统可以通过 HOST 主桥扩展出新的 PCI 总线域,如 MPC8548处理器的 HOST 主桥
x和 y可以扩展出两个 PCI 总线域 x和 y。这两个 PCI 总线域 x和 y 之间的 PCI 空间在正常
情况下不能直接进行数据交换,但是 PowerPC 处理器可以通过设置 PIWARn 寄存器的 TGI 字
段使得不同 PCI 总线域的设备直接通信,详见第2.2.3节。
许多处理器系统使用的 PCI 设备较少,因而并不需要使用 PCI 桥。因此在这些处理器系
统中,PCI 设备都是直接挂接在 HOST 主桥上,而不需要使用 PCI 桥扩展新的 PCI 总线。即
便如此读者也需要深入理解 PCI 桥的知识。
PCI 桥对于理解 PCI 和 PCIe 总线都非常重要。在 PCIe 总线中,虽然在物理结构上并不
含有 PCI 桥,但是与 PCI 桥相关的知识在 PCIe 总线中无处不在,比如在 PCIe 总线的 Switch
中,每一个端口都与一个虚拟 PCI 桥对应,Switch 使用这个虚拟 PCI 桥管理其下 PCI 总线
子树的地址空间。
1