Влияет ли концентратор USB на производительность?


24

У меня есть два устройства, с которыми я хочу добиться максимальной пропускной способности и задержки (например, MIDI- барабаны и MIDI-клавиатура).

Будет ли подключение обоих к одному и тому же порту USB через концентратор эффективно ограничивать максимальную скорость передачи данных до 1/2 для каждого из них?

Я предполагаю, что да, но я не знал, имел ли USB-концентратор доступ к протоколу квитирования и предоставления приоритетов (например, сначала пусть устройство с более длинным накопленным буфером данных обменивается данными).

Ответы:


17

Да. Все устройства, подключенные через USB-концентратор, совместно используют пропускную способность, доступную для этого концентратора. Не конкретно на 50% каждый, хотя. У вас есть 480 Мбит / с для работы с каждым концентратором USB 2.0 на компьютере . Что я имею в виду под этим? Ну, ваш компьютер имеет встроенные USB-концентраторы. Да, не каждый порт является отдельным лицом. В большинстве случаев, когда вы видите, что два USB-порта расположены один над другим, они находятся внутри концентратора.

Это также относится к двум портам бок о бок на ноутбуках. Поэтому не думайте, что вы можете просто подключить два концентратора к USB-портам, расположенным рядом, и иметь МНОГО USB-портов для подключения устройств с высокой скоростью передачи данных.

Что вам действительно нужно сделать, это посмотреть на ожидаемые скорости передачи данных устройств, которые вы собираетесь подключить. Я ожидаю, что барабаны MIDI будут считаться низкой скоростью передачи, в то время как клавиатура будет либо низкой, либо средней скоростью передачи. Это можно сравнить с чем-то вроде звуковой карты USB ... которую вы бы не хотели использовать совместно с другим концентратором.

С концентратором с питанием каждое устройство получает необходимую ему мощность, а с концентратором без питания все устройства совместно используют любую мощность, которую может выдавать USB-порт хоста. Итак, есть, что также рассмотреть.

Скорее всего, вы уже знаете, но в случае проблем с задержкой драйверы ASIO4ALL излечат большинство, если не все потенциальные проблемы. Просто поместил это там.


+1 для ASIO4ALL. использовал это, чтобы убить мое отставание в Rocksmith. чудо-сообщество знает об этом!
верблюжья щетка

Вы уверены, что USB-аудиоконтроллер будет иметь узкое место в пропускной способности, если у него нет целого USB-контроллера ? Я думаю, что они должны быть рассчитаны на работу с концентраторами, по крайней мере, для двухканального звука.
Jiggunjer

28

На самом деле, я удивлен, что первый ответ принят и отклонен без каких-либо фактов, подтверждающих это утверждение, поскольку оно, скорее всего, неверно. И MIDI-барабаны, и MIDI-клавиатура почти наверняка являются низкоскоростными устройствами, поэтому они потребляют не более 1% полосы пропускания от высокоскоростного хаба максимум (2 * 1 Мбит / с / 480 Мбит / с * 100% = 0,4% ).

Действительно, наличие концентратора приведет к задержке, которая составляет порядка десятков микросекунд для низкоскоростных концентраторов или сотен наносекунд для высокоскоростных концентраторов. В последнем случае эта задержка исчезнет, ​​как только вы добавите задержку, введенную программным обеспечением MIDI.

Кроме того, протокол USB поддерживает приоритеты передачи (см. Передачи прерываний ), что позволит MIDI-устройствам сосуществовать даже с жестким диском или сканером на одной шине без особого влияния на их скорость передачи или задержку. Однако я не буду делать никаких заявлений, так как я не знаком с устройствами MIDI в частности.


15

Короткий ответ: вам действительно нужен концентратор Multi-TT для этого приложения, где 2 или более ваших USB-устройств, вероятно, имеют скорость 12 Мбит / с. Ищите «Multi-TT» на Amazon, Newegg или других сайтах, чтобы найти эти хабы.

К сожалению, эта важная техническая деталь редко упоминается. Большинство концентраторов используют более дешевую конструкцию Single-TT. Хорошие Multiple TT редко рекламируются как имеющие эту функцию, даже не отмеченные на упаковке. К сожалению, большинство людей, вероятно, даже никогда не слышали ТТ, и поэтому маркетологи не удосужились сказать вам, какой дизайн используют их хабы.

Вы можете проверить, имеет ли ваш концентратор эту функцию с помощью диспетчера устройств Windows. Найдите на вкладке «Дополнительно» слова «Hub имеет несколько TT».

Снимок экрана диспетчера устройств

В Linux тип концентратора можно проверить с помощью «lsusb -v | grep TT». Я не знаю ни одного простого способа проверить Macintosh, кроме утилиты «USB Prober», которую Apple публикует в своих инструментах разработки XCode.

TT расшифровывается как Transaction Translator. Детали сложны и полностью задокументированы в главе 11 спецификации USB, которую можно бесплатно загрузить с www.usb.org. Но в двух словах, TT конвертирует между 480 Мбит / с вашего ПК в более медленные скорости 12 или 1,5 Мбит / с.

Обычно, когда вы играете на этих музыкальных инструментах, их контроллеры генерируют MIDI-сообщения и затем упаковывают их в буферы памяти, которые ждут момента, когда ваш компьютер запросит данные. Когда ваш компьютер подключается напрямую, он отправляет сообщение, называемое токеном IN, на ваш прибор. Ваш прибор может ответить на токен IN двумя способами: либо пакетом DATA, либо токеном NAK, чтобы указать отсутствие данных. Ваш ПК очень быстро отправляет эти токены IN, поэтому в результате вы получаете почти мгновенную доставку музыкальных событий в виде MIDI-сообщений.

Однако, когда ваше MIDI-устройство с пропускной способностью 12 Мбит / с подключается через концентратор USB 2.0, происходит совсем другое взаимодействие, все со скоростью 480 Мбит / с. Ваш ПК фактически общается с Transaction Translator в хабе. Отправляет 2 сообщения. Сначала сообщение SSPLIT (Start Split Transaction) отправляется на TT. Если ТТ не занят, он отправляет подтверждение. Затем TT передает токен IN на вашу MIDI-клавиатуру со скоростью 12 Мбит / с. Между тем, ваш компьютер может обмениваться данными с другими устройствами со скоростью 480 Мбит / с. Ваша MIDI-клавиатура не может определить, пришел ли токен IN непосредственно с вашего ПК или с ТТ концентратора. Он делает то же самое, что и при подключении к компьютеру. ТТ внутри концентратора получает ответ NAK или DATA. Пока это происходит, ваш компьютер начинает отправлять сообщения CSPLIT (Complete Split Transaction) на ТТ концентратора. ТТ отвечает специальным токеном NYET, если ТТ все еще занят передачей данных со скоростью 12 Мбит / с или NAK или DATA с клавиатуры.

Если у вас есть подключенная и MIDI-клавиатура, и MIDI-барабан, что произойдет, если ваш ПК захочет отправить сообщение SSPLIT, чтобы попросить TT связываться с барабанами, но TT уже занят связью с клавиатурой? Только с одним TT концентратор может ответить NYET на новый запрос SSPLIT, потому что он занят выполнением IN + DATA со скоростью 12 Мбит / с. Вы определенно не хотите такой сценарий!

Несколько концентраторов TT имеют выделенный TT на каждом выходном порту (в который вы подключаете устройства). При наличии нескольких TT концентратор всегда может принять запрос SSPLIT, даже когда другие TT заняты связью с другими нисходящими устройствами. При наличии только одного ТТ ваш компьютер может в конечном итоге ожидать даже при пропускной способности 480 Мбит / с, поскольку концентратор имеет ограниченную способность преобразовывать более 1 сообщения за раз между различными скоростями.

В этом описании скрыты многие важные проблемы синхронизации USB, связанные с обработкой TT, но важным моментом является то, что концентраторы USB 2.0 могут использовать два совершенно разных дизайна. Вы действительно хотите избежать более дешевых концентраторов Single-TT.

Скорости USB 3.0 и 3.1 были упомянуты в других местах в этих ответах. Но ТТ в концентраторе никогда не конвертируются между 5 или 10 гигабитными скоростями и 480, 12 или 1,5 скоростями. Вместо этого концентраторы USB 3.0 и 3.1 работают как пара концентраторов. Гигабитные сигналы имеют собственные выделенные контакты в новых разъемах USB, которые подключаются к концентратору, который работает только на скорости 5 или 10 Гбит / с. Одновременная связь 480 Мбит / с происходит на исходных выводах, поэтому устройства со скоростью 12 и 1,5 Мбит / с преобразуются в ТТ с 480 Мбит / с, но никогда - в 5 или 10 Гбит / с.

В другом месте также упоминается «низкая скорость», что технически означает 1,5 Мбит / с на жаргоне USB, но может означать 1,5 или 12 Мбит / с в обычном разговоре. 12 Мбит / с в терминологии USB называется «полная скорость». Протокол USB MIDI, который технически является частью «спецификации звукового класса», использует «общий» протокол (а не протокол прерывания, как утверждается в другом ответе). Спецификация USB не допускает протокол массовой передачи на скорости 1,5 Мбит / с. Таким образом, если устройство USB MIDI очень сильно не нарушает скорость USB, оно всегда будет по крайней мере со скоростью 12 Мбит / с. Скорость USB MIDI может составлять 480 Мбит / с, в этом случае ТТ не применяются. Но подавляющее большинство продуктов USB MIDI сегодня все еще имеют скорость 12 Мбит / с.

Поэтому вы действительно хотите убедиться, что ваши USB-концентраторы относятся к типу Multi-TT, если вы планируете максимизировать производительность.


Как вы получаете это представление, показывающее устройства, использующие полосу пропускания в вашем изображении? У моих свойств даже нет этой вкладки.
user5389726598465

3

На самом деле, совместное использование одного USB-порта с помощью концентратора для увеличения количества подключаемых устройств, вероятно, не будет иметь большого значения, даже если вы используете все подключенные устройства одновременно. Большинство устройств не будут использовать большую часть передачи данных одновременно. Это даже меньше беспокоит, если вы используете порты USB 3.0 или 3.1, которые в 10 и 20 раз быстрее, чем 2.0, соответственно, но могут также отправлять и получать данные одновременно, обеспечивают большую мощность и будут работать с 2.0 устройства.

Как уже говорилось, до тех пор, пока через каждое устройство, подключенное к порту, подается достаточное количество энергии, проблем не должно быть.


1

Просто мой случай в качестве примера замедления USB 3.0 HUB, когда к нему подключено более одного устройства.

У меня есть два идентичных набора: SataIII - USB3.1 Gen2 Тип C Корпус с SSD на 480 ГБ.

Если я помещаю SSD в порт SataIII, команда Linux dd читает со скоростью более 500 МБ / с.

Если я помещаю SSD в корпус SataIII - USB 3.1 Gen2 Type C, команда Linux dd читает со скоростью около 413 МБ / с, независимо от того, какой из двух наборов я использую.

Странная вещь возникает, когда я подключаю к USB 3.0 оба корпуса и прошу linux читать с обоих (независимо от того, есть ли полоса LVM, RAID0 или две одновременные команды dd), он читает только со скоростью 2x150 = 300 МБ / с.

Поэтому, когда оба подключены, я теряю скорость около 413-300 = 113 МБ / с.

Другими словами:

  • Один SSD на USB 3 HUB, я получаю 413 МБ / с чтения
  • Два SSD на USB 3 HUB, я получаю 150 + 150 = 300 МБ / с чтения
  • Ожидаемое чтение (на SSD), когда два SSD на концентраторе USB 3 будут меньше 413/2 = 206 МБ / с, но они будут стоить около 150 МБ / с каждый, а не> 200 МБ / с, как и следовало ожидать.

Я начинаю думать, что проблема заключается в протоколе USB 3 Hub, который чередует полосу пропускания данных с обоими дисками, это добавляет огромные накладные расходы.

Таким образом, я могу подтвердить, что USB 3 концентратор, который у меня на руках, замедляет один SSD намного больше, чем максимальная полоса пропускания, когда более одного подключено одновременно.

Более того, я протестировал с одним SSD и очень медленной (менее 50 МБ / с) флешкой USB 3.0, объединенная скорость чтения USB Hub 3 снизилась до 263 МБ / с, поэтому я могу подтвердить, что объединенная потеря чтения составляет около 100 МБ / с, если Я подключаю любое другое запоминающее устройство USB.

И еще, и что еще хуже, я подключаю мышь (или клавиатуру), и скорость чтения SSD также составляет около 313 МБ / с, я отключаю мышь / клавиатуру, и скорость чтения SSD возвращается к 413 МБ / с, поэтому снова около 100 МБ / s скорость чтения теряется только потому, что мышь подключена (и используется); если я не двигаюсь, скорость чтения мыши возвращается к 413 МБ / с.

Таким образом, концентратор вызывает значительное снижение скорости чтения (около 100 МБ / с) на комбинированной скорости передачи, когда к нему подключено (и используется) не одно устройство, независимо от того, какое устройство другого типа я подключаю, как только он работает одновременно не более чем с одним, у меня суммарная скорость чтения почти на 100 МБ / с ниже, чем при использовании только одного устройства одновременно.

Я также проверил с тремя устройствами: SSD + мышь + клавиатура, я все еще теряю почти на той же скорости, около 100 МБ / с.

Если я читаю только с одного SSD, но оба подключены, я также получаю около 413 МБ / с.

USB 3.0 Hub цена была около 20 €, а не дешево.

Вывод: USB HUB 3.0 теряет скорость передачи данных в МБ / с, когда подключено (и выполняется) более одного устройства одновременно, кто знает почему! может быть, потому что он делит время передачи на количество устройств (довольно много) или может быть потому, что у него огромные накладные расходы на велосипедные устройства и т. д.

Надеюсь, что это поможет кому-то выявить проблему, все тесты были выполнены под Linux Live SystemRescueCD (последняя версия) с командой dd с status = progress, размером блока в один мегабайт и числом, равным одной тысяче (чтение всего 1 ГБ), dest device / DEV / нуль.

Я планирую (когда / если я стану богатым) купить другой USB 3.x HUB, на этот раз 3.1 Gen 2, чтобы проверить, происходит ли то же самое, или это та марка, которая имеет плохие алгоритмы прошивки.


SSD сильно отличаются от рассматриваемых устройств. Каждый SSD пытается передать данные со скоростью, превышающей полосу пропускания порта USB 3. Таким образом, вы теряете большую пропускную способность только при столкновениях.
fixer1234

1

Когда я использую прямое соединение между моим ноутбуком, который имеет жесткий диск 750 ГБ 5400 об / мин, и внешними жесткими дисками 8 ГБ, скорость передачи данных на самом деле намного ниже, чем при использовании USB-концентратора. Например, я недавно скопировал и вставил четыре фильма, добавив до 120 ГБ данных. Вот что случилось.

  1. Сначала я скопировал четыре фильма, добавив до 120 ГБ данных на жесткий диск моего ноутбука, а затем вставил их на один внешний жесткий диск объемом 8 ГБ. Передача заняла около 80 минут, потому что скорость передачи данных составляла всего около 30 мбс. Скорость передачи данных составляла от 20 до 35 Мбит / с.

  2. Во-вторых, я подключил другой внешний жесткий диск объемом 8 ГБ, который точно такой же модели. На этот раз я использовал 4-портовый USB 3.0 хаб. На этот раз скорость передачи данных была намного выше - иногда более 90 мбс. Скорость передачи данных составляла от 50 до 90 Мбит / с. Передача данных заняла всего 30 минут.

  3. В-третьих, в качестве эксперимента я подключил оба внешних жестких диска емкостью 8 ГБ одновременно через концентратор USB 3.0. Я скопировал все четыре фильма со 120 ГБ данных с одного жесткого диска на другой. На этот раз передача была еще быстрее, чем когда-либо. Скорость передачи данных составляла около 150 Мбит / с, и в скорости передачи не было никаких пиков. Это была устойчивая линия 150 мбс все время.

Я провел эксперименты с другими большими передачами данных. По какой-то причине прямое подключение USB 3.0 к внешнему жесткому диску намного медленнее, чем при использовании концентратора USB 3.0. ... Кто-нибудь знает, почему это?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.