USB 集线器会影响性能吗?

Swi*_*Run 41 usb performance midi usb-2

我有两个设备我想要最大的吞吐量和延迟(例如MIDI鼓和 MIDI 键盘。)

通过集线器将两者连接到同一个 USB 端口是否会有效地将最大数据传输速率限制为每个的 1/2?

我假设是的,但我不知道 USB 集线器是否有可用的握手和优先级协议(例如,让具有较长数据缓冲区的设备首先进行通信)。

Dmi*_*yev 37

实际上,我很惊讶第一个答案在没有任何事实支持该声明的情况下被接受和投票,因为它很可能是错误的。MIDI 鼓和 MIDI 键盘几乎可以肯定是低速设备,因此它们最多消耗不到 1% 的高速集线器带宽 (2*1 Mbit/s / 480 Mbit/s * 100% = 0.4% )。

事实上,集线器的存在会引入延迟,对于低速集线器来说是几十微秒,对于高速集线器来说是数百纳秒。在后一种情况下,一旦添加了 MIDI 软件引入的延迟,这种延迟就会消失。

此外,USB 协议支持传输优先级(请参阅中断传输),这将允许 MIDI 设备即使与同一总线上的硬盘驱动器或扫描仪共存,而不会对其传输速度或延迟产生太大影响。但是,我不会发表任何声明,因为我对 MIDI 设备并不特别熟悉。


Bon*_*art 24

是的。通过 USB 集线器连接的所有设备共享该集线器可用的带宽。虽然不是特别是每个 50%。您有 480 Mbit/s 的速度在计算机上使用每个 USB 2.0 集线器。我是什么意思?好吧,您的计算机内置了 USB 集线器。是的,并非每个端口都是一个单独的实体。在大多数情况下,当您看到两个 USB 端口一个叠在一起时,它们在内部一起位于一个集线器上。

这也适用于笔记本电脑上并排的两个端口。因此,不要认为您可以将两个集线器插入并排的 USB 端口,并拥有大量 USB 端口来插入高数据传输速率设备。

您真正需要做的是查看您打算连接的设备的预期数据传输速率。我希望 MIDI 鼓将被视为低传输率,而键盘将被视为低或中传输率。这将与 USB 声卡之类的东西进行比较......您不想与其他任何东西共享集线器。

使用有源集线器时,每个设备都会获得所需的电力,而使用无源集线器时,所有设备都可以共享主机 USB 端口可以输出的任何电源。因此,也需要考虑这一点。

您很可能已经知道,但对于延迟问题,ASIO4ALL驱动程序将解决大多数(如果不是所有)潜在问题。只是把它放在那里。


小智 24

简短的回答是您确实需要一个多 TT 集线器用于此应用程序,其中 2 个或更多 USB 设备可能是 12 Mbit/秒。在 Amazon、Newegg 或其他网站上搜索“Multi-TT”以找到这些集线器。

不幸的是,这个重要的技术细节很少被提及。大多数集线器使用更便宜的 Single-TT 设计。好的 Multiple TT 很少被宣传为具有此功能,甚至没有在包装上标明。遗憾的是,大多数人甚至可能从未听说过 TT,这可能就是营销人员不愿意告诉您他们的集线器使用哪种设计的原因。

您可以使用 Windows 设备管理器检查您的集线器是否具有此功能。在“高级”选项卡中查找“Hub 有多个 TT”字样。

设备管理器截图

在 Linux 上,可以使用“lsusb -v | grep TT”检查集线器类型。除了 Apple 在其 Xcode 开发工具中发布的“USB Prober”实用程序之外,我不知道有什么简单的方法可以检查 Macintosh。

TT 代表交易翻译器。详细信息很复杂,在 USB 规范的第 11 章中有完整记录,该规范可从 www.usb.org 免费下载。但简而言之,TT 可以将 PC 的 480 MBit/sec 转换为较慢的 12 或 1.5 MBit/sec 速度。

通常,当您演奏这些乐器时,它们的控制器会生成 MIDI 消息并将其打包到内存缓冲区中,等待您的 PC 请求数据。当您的 PC 直接连接时,它会向您的仪器发送一条称为 IN 令牌的消息。您的仪器可以通过两种方式响应 IN 令牌,数据包或 NAK 令牌以指示无数据。您的 PC 会非常快速地发送这些 IN 令牌,因此结果几乎是即时将您的音乐事件作为 MIDI 消息传送。

但是,当您的 12 MBit/sec MIDI 设备通过 USB 2.0 HUB 连接时,会发生非常不同的通信,全部为 480 MBit/sec。您的 PC 实际上与集线器中的事务转换器进行通信。它发送2条消息。首先,SSPLIT(Start Split Transaction)消息被发送到TT。 如果TT不忙,它发送一个确认。然后 TT 以较慢的 12 MBit/sec 速度将 IN 标记传输到您的 MIDI 键盘。同时,您的 PC 能够以 480 Mbit/sec 的速度与其他设备通信。您的 MIDI 键盘无法判断 IN 令牌是直接来自您的 PC 还是来自集线器的 TT。它的作用与连接到您的 PC 完全相同。集线器内的 TT 接收 NAK 或 DATA 响应。在此过程中,您的 PC 开始向集线器的 TT 发送 CSPLIT(完成拆分事务)消息。TT 用特殊的 NYET 令牌回复是 TT 仍在以 12 Mbit/sec 的速度忙于通信,或者来自键盘的 NAK 或 DATA。

如果您同时连接了 MIDI 键盘和 MIDI 鼓,如果您的 PC 希望发送 SSPLIT 消息要求 TT 与鼓进行通信,但 TT 已经忙于与键盘进行通信,会发生什么情况?仅使用单个 TT,集线器可能会回复 NYET 到新的 SSPLIT 请求,因为它正忙于以 12 MBit/sec 的速度执行 IN+DATA。你绝对不想要那种场景!

多个 TT 集线器在每个下游端口(您插入设备)上都有一个专用的 TT。使用多个 TT,集线器始终能够接受 SSPLIT 请求,即使其他 TT 正忙于与其他下游设备通信。 只有一个 TT,您的 PC 最终可能会等待,即使有足够的 480 MBit/sec 带宽,因为集线器在不同速度之间一次转换超过 1 条消息的能力有限。

这个描述掩盖了 TT 处理的许多重要的 USB 时序问题,但重点是 USB 2.0 集线器可以使用两种截然不同的设计。您真的想避免使用更便宜的 Single-TT 集线器。

USB 3.0 和 3.1 速度在这些答案中的其他地方有所提及。但是集线器中的 TT 永远不会在 5 或 10 Gb 速度与 480、12 或 1.5 速度之间转换。相反,USB 3.0 和 3.1 集线器作为一对集线器运行。千兆位信号在较新的 USB 连接器中有自己的专用引脚,连接到仅以 5 或 10 Gbit/sec 速度运行的集线器。原始引脚上同时进行 480 Mbit/sec 通信,因此 12 和 1.5 MBit/sec 设备被 TT 转换为 480 Mbit/sec,但从未转换为 5 或 10 Gbit/sec。

在别处还提到了“低速”,这在技术上是指 USB 行话中的 1.5 Mbit/sec,但在日常对话中可能意味着 1.5 或 12 Mbit/sec。12 Mbit/sec 在 USB 术语中被称为“全速”。USB MIDI 协议在技术上是“音频类规范”的一部分,它使用“批量”协议(不是中断协议,如另一个答案中所述)。USB 规范不允许 1.5 Mbit/sec 速度的批量传输协议。因此,除非 USB MIDI 设备严重违反 USB 速度,否则它的速度始终至少为 12 Mbit/sec。USB MIDI 的速度可能为 480 Mbit/sec,在这种情况下 TT 不适用。但是今天绝大多数 USB MIDI 产品的速度仍然是 12 Mbit/sec。

因此,如果您打算最大限度地提高性能,那么您确实想确保您的 USB 集线器是 Multi-TT 类型。


小智 5

实际上,即使您同时使用所有连接的设备,通过使用集线器来扩展您插入的设备数量来共享单个 USB 端口也可能没有太大关系。大多数设备一次不会使用太多的数据传输。如果您使用 USB 3.0 或 3.1 端口,则更不用担心,它们分别比 2.0 快 10 倍和 20 倍,但也可以同时发送和接收数据,提供更多功率,并且适用于 2.0设备。

如前所述,只要连接到端口的每个设备都有足够的电力运行,就不会出现问题。