USB集线器会影响性能吗?


24

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

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

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

Answers:


17

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

这在笔记本电脑上并排使用两个端口时也适用。因此,不要以为可以将两个集线器并排插入USB端口,而要用很多USB端口将高数据传输速率的设备插入。

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

使用有源集线器,每个设备都将获得所需的电源,而使用不带电集线器时,所有设备将共享主机USB端口可以提供的任何电源。因此,还有要考虑的问题。

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


+1代表ASIO4ALL。用它杀死了我在洛克史密斯的滞后。难怪岩石匠社区不知道这一点!
camelbrush 2014年

如果USB音频控制器本身没有完整的USB控制器,您确定它会遇到吞吐量瓶颈吗?我认为它们应该设计用于集线器,至少用于2声道音频。
jiggunjer '16

28

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

实际上,集线器的存在会引入延迟,对于低速集线器,延迟约为数十微秒,对于高速集线器,延迟约为数百纳秒。在后一种情况下,一旦您添加了MIDI软件引入的延迟,该延迟将消失。

而且,USB协议支持传输优先级(请参阅“ 中断传输”),即使在同一总线上具有硬盘驱动器或扫描仪的情况下,MIDI设备也可以共存,而不会对其传输速度或延迟产生很大影响。但是,由于我不太熟悉MIDI设备,因此我不会发表任何声明。


15

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

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

您可以使用Windows设备管理器检查集线器是否具有此功能。在“高级”选项卡中查找“集线器具有多个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令牌,即DATA数据包或NAK令牌以指示无数据。您的PC会非常快速地发送这些IN令牌,因此结果几乎是瞬间将音乐事件作为MIDI消息传递。

但是,当您的12 MBit / sec MIDI设备通过USB 2.0 HUB连接时,会发生截然不同的通信,所有通信速度均为480 MBit / sec。您的PC实际上与集线器中的事务转换器进行通信。它发送2条消息。首先,SSPLIT(开始拆分事务)消息被发送到TT。 如果TT不忙,它发送一个确认。然后,TT将IN令牌以较低的12 MBit /秒的速度传输到MIDI键盘。同时,您的PC能够以480 Mbit /秒的速度与其他设备通信。您的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,集线器就可以以新的SSPLIT请求答复NYET,因为它正忙于以12 MBit / sec的速度执行IN + DATA。您绝对不希望出现这种情况!

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

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

这些答案中的其他地方都提到了USB 3.0和3.1速度。但是集线器中的TT从未在5或10吉比特速度和480、12或1.5速度之间转换。而是将USB 3.0和3.1集线器用作一对集线器。千兆位信号在较新的USB连接器中有自己专用的引脚,该引脚连接到仅以5或10 Gbit / sec速度运行的集线器。原始引脚上同时发生480 Mbit / sec的通信,因此TT将12和1.5 MBit / sec的设备转换为480 Mbit / sec,但从未转换为5或10 Gbit / sec。

其他地方还提到了“低速”,从技术上讲,这是USB术语中的1.5 Mbit / sec,但在休闲对话中可能是1.5或12 Mbit / sec。USB术语将12 Mbit / sec称为“全速”。USB MIDI协议在技术上是“音频类规范”的一部分,它使用“批量”协议(而不是中断协议,如另一个答案所述)。USB规范不允许以1.5 Mbit /秒的速度进行批量传输协议。因此,除非USB MIDI设备严重违反USB速度,否则它将始终至少为12 Mbit / sec。USB MIDI的速度可能为480 Mbit / sec,在这种情况下,TT不适用。但是,当今绝大多数USB MIDI产品仍保持12 Mbit / sec的速度。

因此,如果您打算最大程度地提高性能,则确实要确保USB集线器是Multi-TT类型。


您如何获得显示设备消耗图像带宽的视图?我的媒体资源甚至没有该标签。
user5389726598465

3

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

如前所述,只要有足够的功率通过与端口相连的每个设备,就不会出现任何问题。


1

以我为例,当连接多个设备时,USB 3.0 HUB速度变慢。

我有两套相同的产品:带有480GB SSD的SataIII至USB3.1 Gen2 Type C机箱。

如果我将SSD放在SataIII端口中,Linux dd命令的读取速度将超过500MiB / s。

如果我将SSD放入SataIII到USB 3.1 Gen2 Type C机箱中,则Linux dd命令的读取速度将接近413MiB / s,无论我使用的是哪两组。

当我将两个机箱都插入USB 3.0并要求linux从这两个机箱读取时(无论LVM条带化,RAID0还是两个并发的dd命令),奇怪的事情来了,它只能以2x150 = 300 MiB / s的速度读取。

因此,当两者都插入时,我的速度接近413-300 = 113MiB / s。

换一种说法:

  • 将一个SSD插入USB 3 HUB,读取速度为413MiB / s
  • 将两个SSD插入USB 3 HUB,我的读取速度为150 + 150 = 300MiB / s
  • 当将两个SSD插入USB 3集线器时,指定的读取(每个SSD)将接近413/2 = 206MiB / s,但每个仅为150MiB / s,而不是假定的> 200MiB / s。

我开始认为问题出在USB 3集线器协议上,以交替使用两个驱动器的数据带宽,这增加了巨大的开销。

因此,我可以确定当同时连接多个USB 3集线器时,它会比最大带宽降低一个SSD的速度大得多。

另外,我用一个SSD和一个非常慢(小于50MiB / s)的USB 3.0棒进行了测试,USB Hub 3的组合读取速度下降到263MiB / s,因此我可以确定组合读取松散是大约100MiB / s,如果我插入任何其他USB存储设备。

而且,更糟糕的是,我插入了一个鼠标(或键盘),SSD的读取速度也接近313MiB / s,拔下了鼠标/键盘,SSD的读取速度又回到了413MiB / s,所以再次接近100MiB / s。仅由于连接(并使用了)鼠标而导致读取速度下降;如果我不移动鼠标,读取速度将回到413MiB / s。

因此,当不仅连接了一个设备(并正在使用),无论我连接的是哪种其他设备,集线器都会导致综合传输速率上的读取速度大幅下降(接近100MiB / s)。它不仅可以同时工作一个,而且比在smae时间仅使用一个设备时的读取速度低近100MiB / s。

我还用3种设备进行了测试:SSD +鼠标+键盘,但我仍然以几乎相同的速度(大约100MiB / s)松动。

如果我仅读取一个SSD,但都已连接,则我也接近413MiB / s。

USB 3.0集线器的价格约为20欧元,不便宜。

结论:当同时连接多个设备(并进行传输)时,USB HUB 3.0释放了许多MiB / s传输速度,谁知道呢!可能是因为它将时间传输量除以设备数量(非常消耗),或者可能是因为它在循环设备上有巨大的开销,等等。

希望这可以帮助某人识别问题,所有测试均在Linux Live SystemRescueCD(最新版本)下使用dd命令进行,状态状态为进度,块大小为1兆字节,计数为一千(读取总计1GiB),目标设备/ dev / null。

我打算(何时/如果我有钱的话)购买另一个USB 3.x HUB,这次是3.1 Gen 2,以检查是否发生相同的现象,或者该品牌的固件算法不佳。


SSD与所讨论的设备有很大不同。每个SSD都试图以大于USB 3端口带宽的方式传输数据。因此,仅在发生冲突时,您就会损失大量带宽。
fixer1234 '18

1

当我使用具有750GB 5400rpm硬盘驱动器的便携式计算机和8GB外部硬盘驱动器之间的直接连接时,传输速率实际上比使用USB集线器时要慢得多。例如,我最近复制并粘贴了四部电影,总共增加了约120GB的数据。这是发生了什么事。

  1. 首先,我在笔记本电脑硬盘驱动器上复制了四部电影,这些电影总共增加了120GB的数据,然后将它们粘贴到一个8GB的外部硬盘驱动器上。传输大约需要80分钟,因为数据传输速率仅为30mbs。数据传输速率的峰值在20mbs至35mbs之间。

  2. 其次,然后连接另一个完全相同型号的8GB外部硬盘驱动器。这次我使用了4端口USB 3.0集线器。这次,数据传输速度更快-有时超过90mbs。数据传输速率的峰值在50mbs到90mbs以上之间。传输数据仅用了30分钟。

  3. 第三,作为实验,我通过USB 3.0集线器同时连接了两个8GB外部硬盘驱动器。我将所有具有120GB数据的四部电影从一个硬盘复制到另一个硬盘。这次传输比以往任何时候都更快。数据传输速率约为150mbs,并且传输速率完全没有峰值。整段时间都是150mbs的稳定线。

我已经对其他大型数据传输进行了实验。由于某些原因,直接USB 3.0与外部硬盘驱动器的连接要比使用USB 3.0集线器时慢得多。... 有人知道为什么吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.