USB 主机控制器速度/吞吐量:在所有端口之间分割还是每个端口保证?

USB 主机控制器速度/吞吐量:在所有端口之间分割还是每个端口保证?

我有一台带有 6 个 USB 端口的计算机。其中两个端口是 10 Gbps 端口,另外四个是 5 Gbps 端口。

每个端口是否保证理论速度(吞吐量)(即一个端口 10 Gbps + 另一个端口 10 Gbps,其余 4 个端口每个端口 5 Gbps)?

如果不是这种情况,那么这个(或任何其他)特定 USB 主机控制器总体上和每个端口提供的最大速度/吞吐量是多少?

我试图让这个问题简单一点,但我(某种程度上)知道总线、根集线器和通道的概念。我仍然不完全清楚这一切应该如何工作,最重要的是,如何通过登录远程计算机(运行 Linux)并在命令行中提取这些信息来找到这些问题的答案。好吧,假设这是可能的。 lsusb 似乎不能回答所有这些问题。

答案1

您可能已经猜到了,这取决于您拥有什么控制器。

通常有一个带有内置集线器的单个控制器。在这种情况下,控制器与集线器只有一条链路,这是限制因素,我猜你的情况是 10 Gbps总共,所有端口共享。

市场上声称支持额定带宽的每个端口。但那些是不寻常的。

还有一件显而易见的事情,当您进行文件传输等操作时,您将能够获得大约 60% 的原始带宽,如果您在同一个集线器上有中断/等时设备,甚至可能更低。


USB 3.0 总线通常以 PCIe 设备的形式出现。PCIe 2.0 具有 5Gbps/通道的原始带宽,PCIe 3.0 具有 10Gbps/通道。但是,链接速度可能会降低。因此,首先您可以查看 USB 控制器使用哪个接口以及它的宽度:lspci -vv

我检查了我手上的一个附加 USB3.0 卡,该命令的输出包括以下行:

                LnkSta: Speed 5GT/s (ok), Width x1 (ok)

非常不言自明:此卡在 PCIe 2.0 模式下工作,具有 1 个通道,带宽为全带宽。它有 2 个端口(我刚知道),因此这些端口将提供总共不超过 4 Gbit/s,受 PCIe 总线限制。请注意,PCIe 2.0 使用 8/10 位线路数据编码,因此 5 GT/s 只留下 4 Gbit/s 的带宽。

我能检查的另一张卡是 HP ProBook 450 G0 内置的。这很难评估,因为相应的 PCI 设备不报告链接速度。它显示它是 C210 芯片组的一部分,并且它的所有 PCIe 桥接器都显示 5 GT/s x1,但降级为 2.5 GT/s。我想这意味着我无法通过其 USB3.0 端口获得超过 2 Gbit/s 的整体速度。

相关内容