USB3.0 / USB3.1 Gen 1 Root Hub 报告的带宽超过 5Gbps,这是怎么可能的?

USB3.0 / USB3.1 Gen 1 Root Hub 报告的带宽超过 5Gbps,这是怎么可能的?

旧标题:这款 USB3.0 集线器是伪装的 USB3.1 (Gen 2) 集线器吗?报告称带宽超过 5Gbps

我正在运行几个 USB3 机器视觉摄像头。每个摄像头的分辨率为 2448x2048,帧率为 75 fps,8 位数据,因此大约为 3Gbp/s。在一台电脑上,我无法全速运行两个摄像头,但在另一台电脑上我可以。我(以前)认为单个 USB3.0/3.1 Gen 1 集线器的速度限制为 5Gbp/s。

这是一个需要提出的重要问题,因为过去我们在所谓的“单个控制器”上运行多个高带宽摄像头时遇到了问题。现代摄像头很容易使单个 USB3.1 连接饱和。过去的解决方案是添加 PCI 扩展卡。在某些情况下,这似乎没有必要,我很想知道为什么。

  • 在之前的编辑中,我将 Root Hub(摄像机插入其中)称为“Hub”,这引起了一些混淆 - 这是我无知的,我不知道有区别。这似乎很关键。
  • 网上许多流行信息表明,即使是根集线器也应该限制在 5Gbps,例如:

单个 USB 主控制器几乎总是服务于多个 USB 端口,但这些端口可用的总带宽将被共享。想象一下一个 USB 端口连接了一个四端口甚至八端口集线器。任何主控制器或根集线器的总可用带宽可能接近以下值(您的带宽可能会有所不同):

• USB 3.0 — Total theoretical bandwidth per host controller = 5Gbps (625MB/s)
• USB 3.0 — Total practical bandwidth per host controller = 3.2Gbps (~400MB/s)
• USB 2.0 — Total theoretical bandwidth per host controller = 480Mbps (60MB/s)
• USB 2.0 — Total practical bandwidth per host controller = 308Mbps (~36MB/s)

https://www.oculus.com/blog/oculus-roomscale-balancing-bandwidth-on-usb/

  • 主板供应商宣传所有东西都只是 USB3.0 和 USB3.1。实际上,这通常是 USB3.1 Gen 1 (5Gbps) 和 USB3.1 Gen 2 (10Gbps)。这造成了进一步的混乱。
  • 此外,Windows 将 USB3.1 Gen 1 根集线器显示为 USB3.0

设置:

  • 两款相机均支持 USB3.0
  • 根据主板文档,两个摄像头都直接插入主板,插入 USB3.1 Gen 1 插座。
  • 根据设备管理器的报告,两个摄像头都插入同一个 USB Root Hub,例如:

在此处输入图片描述

观察结果:

  • 在一台机器上,华硕 H110M-R主板,我得到了预期的行为,一个摄像头全速运行(75fps),另一个摄像头降低到 7fps 左右。两个摄像头都在同一个 USB3.0 根集线器中。

  • 在另一台机器上,华硕 Impact VIII 主板,两个摄像头都将全速运行(不会降低 fps)。事实上,我们可以插入更多摄像头,并且可以达到 10Gbp/s 左右(可能更高一点)。我们获得 10Gbps 的事实表明这实际上是一个 USB3.1 Gen 2 控制器,但 Windows 报告我们正在使用 USB3.1 Gen 1 控制器(报告为 USB3.0)。这也可能是巧合的接近带宽限制(如果我们真的获得了理论上的 10Gbps 吞吐量,我会感到惊讶)。

  • 也可以进行手动验证 - 我可以在摄像机前挥手,并且两者都明显以 > 50fps 的速度运行(至少)。

  • 由于查看软件会自动调整第一台电脑上的帧速率(降低),我不明白为什么另一台电脑上的帧速率会不正确。同样,带宽监控软件(高级 USB 端口监控器)似乎也是正确的,如果我们手动降低其中一台摄像机的速度,带宽图就会发生变化。

有关主板的更多信息:

  • Impact VIII 宣传称拥有两个控制器:USB3.1 Gen 1 和 USB3.1 Gen 2。端口在背板上物理分离。有四个后置端口标记为 USB3.0(前面有两个),还有一个红色的 USB-C 和 USB-A 标记为 USB3.1。
  • H110M-R 有两个 USB3.1 Gen 1 端口和 6 个 USB2 端口。
  • Impact VIII 采用英特尔 Sunrise Point-H USB 3.0 xHCI 控制器PCI\VEN_8086&DEV_a12f) 和适用于 USB3.1 的 Intel Alpine Ridge DSL6540 控制器PCI\VEN_8086&DEV_15b6)。
  • H110M-R 也报告PCI\VEN_8086&DEV_a12f其为 USB3.0 控制器。
  • 那么我们显然使用的是同一类型的根集线器?
  • Impact VIII 使用 Z170 芯片组,而 H110M-R 使用 H110 芯片组。

PCH 包含一个可扩展主机控制器接口 (xHCI) 主机控制器,该控制器支持最多 14 个 USB 2.0 端口和最多 10 个 USB 3.0 端口,并考虑了板级布线、ACPI 表和 BIOS。此控制器允许高达 5Gb/s 的数据传输。该控制器支持总线上的超高速 (SS)、高速 (HS)、全速 (FS) 和低速 (LS) 流量。xHCI 控制器支持所有 USB 3.0 端口上的 USB 调试端口。xHCI 还支持 USB 连接 SCIS 协议 (UASP)。

摘自 100 系列手册https://www.intel.com/content/www/us/en/chipsets/100-series-chipset-datasheet-vol-1.html

假设这些设备确实在全速运行,那么一些想法/可能性是:

  • Impact VIII 是否使用单个 USB (Gen 2) 控制器来运行所有端口(但枚举为两个)?规格似乎表明不是,设备管理器报告有两个控制器。
  • 单个 USB3.0 控制器能支持超过 5Gbps 吗?我认为不能。
  • USB3.1 集线器可以将自己宣传为 USB3.0 集线器吗?

然而,主要问题是 -为什么一个系统限制为 5Gbps,而另一个却没有,而两者似乎使用单个 USB3.1 Gen 1 控制器(同一类型)来插入摄像头吗?

除非 Windows 报告有误,否则我不会使用 Gen 2 控制器。我要调查一下,看看我实际上可以在 Impact VIII 上占用多少带宽。

答案1

请参阅下面 Ali C 的回答。


你将摄像头插入根枢纽。我猜测这些端口实际上是连接到 Z170 芯片组。

你必须考虑两件事:

  1. “根集线器”不是“集线器”——它是一种提供nUSB 端口。
  2. “根集线器”上的所有端口并不像标准“集线器”那样通过单个 USB 链路进行传输,因此,如果根集线器以足够的带宽连接到系统,则跨端口的总带宽可能会超过 USB 规格。

马克西姆斯 VIII 冲击使用Z170 芯片组- 框图如下。如您所见,它支持“最多 10 个 USB 3.0 端口“。 Z170 框图

H110M-R使用H110 芯片组- 支持“最多 4 个 USB 3.0 端口“,所以我期待类似的能力 -如果你直接连接到主板的 USB 3.0 端口

但从你的措辞来看,我怀疑这些摄像头是通过物理/外部连接的中心在这台电脑上... 在这种情况下,所有相机数据都需要通过集线器和电脑之间的单个 USB 3.0 链路传输。如果不是这种情况,那么可能是芯片组之间的驱动程序或架构改进...


如果 Root Hub 与处理器之间有带宽,那么端口上的总带宽将能够超过 USB 3.0 带宽。

但是,如果您有一个通过单个 PCIe 通道连接的根集线器,那么带宽将受到 PCIe 链路的限制(对于单通道第五代链路仍然只有 3.9GB/s),因此两个端口只能使用 ~3.9Gb/s。

由于 H110 的 DMI2 链路(5 GT/s)与 CPU 之间的差异,以及 Z170 的 DMI3 链路(8 GT/s),可能会产生类似的效果。

答案2

Root Hub 与普通 Hub 没什么区别。Root Hub 的总带宽由主机控制器的架构以及 xHCI 控制器与内部结构之间的数据接口以及 xHCI 与 USB PHY(它们的组合,决定了可能的端口数量)之间的数据接口决定。如果是带有 Gen1 PHY 的原始 USB 3.0 核心控制器,则吞吐量不能超过 5 Gbps。

对于这一观察结果,唯一合理的解释是 Z170 芯片本质上具有 USB 3.1 Gen2 核心,内部具有相应的 PIPE 10Gbps 总线,但各个 PHY 只能达到 Gen1 速度。PHY 被限制到 Gen1 速度的原因可能有很多 - 新编码协议中未解决的错误、物理层未完全满足 USB-IF 认证标准(可能是抖动、可能是眼图,等等),或者还有许多其他缺陷,例如电源管理故障或链路训练不稳定。此外,如果一个具有 10 个超高速端口的系统在预期带宽的十分之一时瘫痪,公众会感到非常恼火,人们可能会产生感知失调。

答案3

根据硬件 ID ( PCI\VEN_8086&DEV_15b6),这是Alpine Ridge (DSL6540) 控制器确实是 USB 3.1-Gen2/Thunderbolt3。

http://imgur.com/a/g9rvn

因此,此 USB3.0 来自 Windows 10 的通用 USB3.x 驱动程序,所以这应该只是设备管理器中的显示问题。

相关内容