扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

PCIe domain和segment介绍

21小时前
220
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

PCIe Segment(段)是一个硬件层面的概念,指一组完全独立的PCIe总线域;而PCIe Domain(域)是Linux内核在软件层面为每个Segment分配的编号。

·PCIe Segment:是硬件概念。它代表一个完全独立的PCIe总线树,由独立的Root Complex(根复合体)管理。不同Segment之间的地址空间和配置空间是互相隔离的。多Segment常见于大型服务器,用于突破单个总线域只能有256个总线的限制。

·PCIe Domain:是Linux内核中的软件表示。内核使用域号来区分不同的硬件Segment。因此,可以在Linux的lspci -t命令的输出中看到“Domain: Bus: Device. Function”的格式,这个Domain号实际上对应的就是硬件Segment。

Segment和Domain的核心区别在于:一个Segment是物理上独立的总线树,而一个Domain则是内核给这个树分配的软件编号。举个例子,如果一台服务器有4个物理的PCIe Segment,在Linux中我们就会看到4个Domain(通常编号为0、1、2、3)。

一个系统中的每个PCIe 设备使用Domain: Bus: Device. Function来唯一标识,具体含义与取值范围如下:

标识符 名称 含义 范围
Domain 域号 区分不同主机/根复合体(Host Bridge)。 0000 - FFFF
Bus 总线号 设备所连接的总线号(总线 0 为起点)。 00 - FF
Device 设备号 总线上的设备(槽位 / 逻辑设备),最多 32 个。 00 - 1F
Function 功能号 物理设备上的子功能(例如多功能网卡)。 0 - 7

lspci -t的输出以根(Root Complex)为起点,用 +-、| 等字符表示树状连接关系。

- 0000:00:根节点(域 0000,总线 00)。

+- 0000:00:07.1-[04]---+00:07.1 是一个桥接器(Bridge),它创建了下游 次级总线(secondary bus),编号为 [04](或区间 [04-0b])。

0000:04:00.00000:04:00.1:这些是桥接器 00:07.1 管理的下游设备(在次级总线 04 上)。

区间 [05-06] 表示该桥接器管理一个连续的下游总线范围(05到06),常见于switch或多级桥接。

参考:

1. 《PCI Express体系结构导读》

2.深入解析 lspci:5 分钟读懂 PCI/PCIe 拓扑与链路状态(LnkCap / LnkSta)

相关推荐