pcie switch下的endpoint数量上限

想问下pcie系统中,子设备上限是多少。我网上查找说是受BDF限制,在BDF中,Bus Number占用8位,Device Number占用5位,Function Number占用3位。显然,PCIe总线最多支持256个子总线,每个子总线最多支持32个设备,每个设备最多支持8个功能。
从上面来看我一个switch下面理论上最多可以接32个endpoint。但我实际接了13个endpoint就不能再多了,多了就无法识别。所以除了受BDF影响外,肯定还有其他地方影响pcie设备上限。是什么呢?和pcie bar有关系吗

回答引用ChatGPT

  • PCIe设备的上限确实受到BDF(Bus-Device-Function)编号的限制,每个BDF编号都对应一个唯一的PCIe设备。根据PCIe规范,Bus Number占用8位,Device Number占用5位,Function Number占用3位,因此PCIe总线最多支持256个子总线(Bus Number取值范围为0255),每个子总线最多支持32个设备(Device Number取值范围为031),每个设备最多支持8个功能(Function Number取值范围为0~7)。
  • 除了BDF编号的限制之外,还有其他因素可能影响PCIe设备的上限。其中一个可能的因素是系统中可用的PCIe资源的数量和分配方式,例如PCIe Root Complex(PCIe根复杂)的数量和配置、PCIe交换机的数量和配置、PCIe资源分配的策略等。如果PCIe资源分配不合理,可能会导致某些设备无法识别或无法正常工作。
  • 与PCIe BAR(Base Address Register,基址寄存器)没有直接关系,PCIe BAR主要用于描述PCIe设备的I/O端口和内存地址空间,由操作系统或驱动程序进行配置和管理。PCIe BAR的数量和大小通常由PCIe设备的规格决定,与设备的上限没有直接关系。

望采纳,
PCIe设备上限的另一个影响因素是PCIe BAR(Base Address Register),它是PCIe设备的地址空间,用于存储设备的内存地址,每个PCIe设备都有一个BAR,它的大小受PCIe总线的限制,如果PCIe总线的BAR空间不够,就会影响PCIe设备的上限