PCIe基础:Root Complex 、Host Bridge、PCIe Bridge、Switch基本概念

为了方便理解,本文首先介绍了传统的南北桥体系架构,随后再介绍了PCIe的系统架构。

1. 南北桥体系架构

南桥和北桥是传统计算机架构中的两个重要组件,它们共同负责连接CPU(中央处理器)与其他主要组件,并协调它们之间的数据传输和通信。

North Bridge(北桥)

  • 负责连接CPU和高速主存储器(RAM),以及一些其他高速设备接口,如AGP(加速图形端口)。
  • 北桥是系统中速度最快的部分,它通过高速总线(如系统总线或FSB总线)与CPU通信,以确保快速的数据传输。
  • 北桥还负责处理内存控制、缓存控制、总线控制等任务,直接影响系统的性能和响应速度。

南桥(Southbridge)

  • 负责连接各种低速外围设备接口,如USB(通用串行总线)、SATA(串行ATA)、以太网、声卡、并行端口等。
  • 南桥通常包含了系统中较慢的外围设备接口,并负责处理外围设备的控制和管理。
  • 南桥也负责处理一些低速设备的DMA(直接内存访问)、中断控制、电源管理等功能。
    在这里插入图片描述
    现在,传统的南北桥架构逐渐被更现代化的架构所取代,如集成在CPU芯片中的内存控制器和I/O控制器,以及更快速的PCIe总线等。

2. PCIe体系结构

PCIe架构主要由五个部分组成:Root Complex、PCIe Bus、Endpoint、Port and Bridge、Switch。

其整体架构呈现为一个树状结构,如下图所示:
在这里插入图片描述

3. Root Complex(RC)

Root Complex是整个PCIe设备树的根节点,CPU通过它与PCIe的总线相连,并最终连接到所有的PCIe设备上。

由于Root Complex是管理外部IO设备的,所以在早期的CPU上,Root Complex其实是放在了北桥(MCU)上 ,后来随着技术的发展,现在已经都集成进了CPU内部了。

如下图所示,System Agent就是PCIe Root Complex所在的位置。

PCIe Root Complex所在的位置
随着PCIe Lane的增加,PCIe控制器和Root Complex的数量也随之增加。因此,系统里面可以存在不只一个Root Complex。

通过设备管理器来查看如下所示:
在这里插入图片描述

4. PCIe总线(Bus)

PCIe上的设备通过PCIe总线互相连接。

PCIe的总线并不是传统意义上共享线路的总线(Bus),而是一个点对点的网络,如果把PCI比喻成网络中的集线器(Hub),那么PCIe对应的就是交换机了。

换句话说,当Root Complex或者PCIe上的设备之间需要通信的时候,它们会与对方直接连接或者通过交换电路进行点对点的信号传输。
在这里插入图片描述

5. PCIe Device

PCIe上连接的设备可以分为两种类型:

  • Type 0:它表示一个PCIe上最终端的设备,比如我们常见的显卡,声卡,网卡等等。
  • Type 1:它表示一个PCIe Switch或者Root Port。和终端设备不同,它的主要作用是用来连接其他的PCIe设备,其中PCIe的Switch和网络中的交换机类似。

5.1 BDF(Bus Number, Device Number, Function Number)

PCIe上所有的设备,无论是Type 0还是Type 1,在系统启动的时候,都会被分配一个唯一的地址,它有三个部分组成:

  • Bus Number:8 bits,也就是最多256条总线;
  • Device Number:5 bits,也就是最多32个设备;
  • Function Number:3 bits,也就是最多8个功能。

这就是我们常说的BDF,它类似于网络中的IP地址,一般写作BB:DD.F的格式。

所有连接到PCIe总线上的Type 0设备(终端设备),都可以来实现PCIe的Endpoint,用来发起或者接收PCIe的请求和消息。每个设备可以实现一个或者多个Endpoint,每个Endpoint都对应着一个特定的功能。比如:

  • 一块双网口的网卡,可以每个为每个网口实现一个单独的Endpoint;
  • 一块显卡,其中实现了4个Endpoint:一个显卡本身的Endpoint,一个Audio Endpoint,一个USB Endpoint,一个UCSI Endpoint;

这些我们都可以通过lspci或者Windows上的设备管理器来查看:

$ lspci -t -v
-+-[0000:c0]-+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
             # A NIC card with 2 ports:
 |           +-01.1-[c1]--+-00.0  Mellanox Technologies MT2892 Family [ConnectX-6 Dx]
 |           |            \-00.1  Mellanox Technologies MT2892 Family [ConnectX-6 Dx]
 +-[0000:80]-+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
             # A graphic card with 4 endpoints:
 |           +-01.1-[81]--+-00.0  NVIDIA Corporation TU104 [GeForce RTX 2080]
 |           |            +-00.1  NVIDIA Corporation TU104 HD Audio Controller
 |           |            +-00.2  NVIDIA Corporation TU104 USB 3.1 Host Controller
 |           |            \-00.3  NVIDIA Corporation TU104 USB Type-C UCSI Controller

5.2 RCIE(Root Complex Integrated Endpoint)

说到PCIe设备,脑海里面可能第一反应就是有一个PCIe的插槽,然后把显卡或者其他设备插在里面,就像我们上面看到的这样。但是其实系统中有大量的设备是主板上集成好了的,比如,内存控制器,集成显卡,Ethernet网卡,声卡,USB控制器等等。

这些设备在连接PCIe的时候,可以直接连接到Root Complex上面。这种设备就叫做RCIE(Root Complex Integrated Endpoint),如果我们去查看的话,他们的Bus Number都是0,代表Root Complex。

在这里插入图片描述

5.3 Port / Bridge

还有一类通过插槽连接的PCIe设备,这些设备则通过PCIe Port来连接。

本质上,所有这些连接其他设备用的部件都是由桥(Bridge)来实现的,这些桥的两端连接着两个不同的PCIe Bus(Bus Number不同)。

比如,一个Root Port其实是靠两个Bridge来实现的:

  • 一个(共享的)Host Bridge(上游连接着CPU,下游连接着Bus 0);
  • 一个PCI Bridge用来连接下游设备(上游连着的是Bus 0(Root Complex),下游连着的PCIe的设备(Bus Number在启动过程中自动分配)) 。
    在这里插入图片描述

因此,我理解一个Bridge就是一个硬件,它总是连接着2条总线:

  • 因为Bridge是一个设备,所以第一个总线为Bridge所挂载的总线;
  • 另一方面Bridge是为了与在不同的总线之间进行数据传输和通信,尤其是不同类型的总线,因此另一个通信的总线就是目标类型总线。
    • 如果是PCI-PCI,那么目标下游总线就是PCI类型;
    • 如果是PCI-PCIe,那么目标下游总线就是PCIe类型;

这里面目标下游总线都是我方便自己理解而讲的,并没有真正对应的专业名词。

5.4 Switch

PCIe Switch是一种用于扩展PCIe总线连接能力的设备。它类似于网络中的交换机,允许多个PCIe设备连接到同一个PCIe总线,从而实现对多个设备之间的通信和数据传输的管理。 个人理解是一种PCIe转PCIe的桥。
PCIe Switch内部主要有三个部分:

  • 一个Upstream Port和Bridge:用于连接到上游的Port,比如,Root Port或者上游Switch的Downstream Port;
  • 一组Downstream Port和Bridge:用于连接下游的设备,比如,显卡,网卡,或者下游Switch的Upstream Port;
  • 一根虚拟总线:用于将上游和下游的所有端口连接起来,这样,上游的Port就可以访问下游的设备了。
    在这里插入图片描述

参考文章:

1. PCIe(一) 基础概念与设备树

2. 老男孩读PCIe之二:PCIe拓扑结构

3. PCIe基本概念

4. 计算机组成原理 — PCIe 总线

  • 21
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值