Что влияет на скорость передачи данных по USB?

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

Сегодня расскажем о различных, в том числе не очевидных, факторах, влияющих на скорость передачи данных по USB.

В первой части в качестве примера мы рассчитали максимальную скорость передачи данных для USB 3.2 Gen 1 (ранее, USB 3.0). Как помните, указанная на упаковке, хоть и красивая, но, все же, малопонятная цифра, 5 Гбит/с, в переводе на реальные цифры составила 625 МБ/с. Однако, эта скорость, как мы неоднократно упоминали, недостижима, и вот почему...

 

Накладные расходы при передаче данных

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

  • Протоколом обмена: Каждый пакет данных включает заголовки и служебную информацию, такие как адрес устройства, тип пакета и CRC (контрольная сумма) и пр. Это добавляет данные, не относящиеся к основной полезной информации, но необходимые для корректной передачи.
  • Электропитанием и состоянием линии: Протокол USB включает контроль состояния линий данных и питания. В случае снижения напряжения или сигнала устройство должно корректировать передачу, что также создает задержки.
  • Контролем ошибок и перезапросами: USB использует проверку ошибок, и при их обнаружении пакет может быть повторно передан. Перезапросы добавляют дополнительную нагрузку на канал передачи.
  • Управляющими и синхронизационными сигналами: Для координации обмена данными, особенно в асинхронном режиме, USB периодически отправляет управляющие пакеты и синхронизирующие сигналы, которые также создают накладные расходы.


Эти накладные расходы зависят от версии USB и способа передачи данных (bulk, interrupt, isochronous и control transfer), так как каждая версия и метод имеют свои специфические накладные затраты. В среднем накладные расходы составляют около 10-20% от максимальной скорости. Согласитесь, это не мало.

 

Тип коммутации

Внешний носитель информации можно подключить к устройствам по-разному. Если говорить о ПК, то варианты соединения могут быть таким:

  • USB разъем на задней панели материнской платы. Это самое надежное и быстрое подключение, т.к. в этом случае нет никаких дополнительных переходников и кабелей, и носитель подключается напрямую.
  • USB разъем на передней (или верхней) панели системного блока. Это уже не прямое соединение, т.к. между USB разъемом, куда будет подключен носитель информации и материнской платой, будет дополнительный кабель и интерфейс, которые могут влиять на скорость передачи данных.
  • Разъем на плате расширения, подключенной по разъему PCI, у которой также есть свои ограничения. Так, слоты PCIe x1 могут ограничивать производительность по сравнению с x4 или x16.
  • Кабель-удлинитель USB. Подобные кабели, в свою очередь, также поддерживают определенную версию USB. Это не позволит получить скорость передачи выше той, которую поддерживает данный удлинитель. Кроме того, большое значение будет иметь качество самого кабеля и его длина.
  • Как в случае с ПК, так и в случае с другими устройствами, если они находятся в труднодоступном месте (системный блок установлен где-то под столом, телевизор очень плотно прижат к стене и т.п.) для удобства подключения может быть использован USB переходник "папа-мама". В зависимости от его длины и качества, скорость передачи данных также уменьшится.


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

 

Тип и размер файлов

Не мало на скорость передачи данных по USB влияет тип и размер файлов.

  • Большие файлы: При передаче файлов большого размера, таких как видео, образы дисков или архивы, скорость передачи данных обычно более стабильна и ближе к максимальной пропускной способности интерфейса. Это происходит потому, что процесс передачи не прерывается часто для начала и окончания передачи данных, что позволяет использовать большие блоки данных и более эффективно задействовать пропускную способность.
  • Маленькие файлы: При передачи множества мелких файлов, таких как текстовые документы или фотографии, скорость передачи может значительно снизиться. Это связано с уже упомянутыми выше накладными расходами на каждую операцию записи/чтения, вызванными необходимостью частой инициализации и завершения передачи для каждого файла. Даже при высокой теоретической пропускной способности USB, такие накладные расходы могут замедлить реальную передачу данных.

 

Файловая система, фрагментация, кэш

Файловая система USB накопителя и его фрагментация, также оказывает заметное влияние на скорость передачи данных. Основные факторы, влияющие на производительность USB шины, включают:

  • Файловая система: Файловая система, используемая на устройстве хранения (например, NTFS, FAT32, exFAT), может влиять на скорость передачи данных. Некоторые файловые системы лучше справляются с обработкой больших файлов, тогда как другие более оптимизированы для множества мелких файлов.
    • FAT32 — лучше подходит для маленьких файлов, но имеет ограничения на размер отдельного файла (максимум 4 ГБ).
    • NTFS и exFAT — лучше справляются с передачей больших файлов и поддерживают улучшенные алгоритмы кэширования, что снижает накладные расходы при работе с мелкими файлами.
  • Фрагментация: Если диск сильно фрагментирован (особенно это касается файловых систем, таких как NTFS), это может замедлить передачу данных, так как системе приходится искать отдельные части файлов в разных местах на диске.
  • Кэширование и буферизация: Операционная система ПК и устройство хранения данных часто используют кэширование и буферизацию для оптимизации передачи данных. При передаче больших файлов кэширование позволяет значительно увеличить скорость, так как данные передаются блоками. При передаче множества мелких файлов, эффективность кэширования снижается, что также влияет на скорость.

 

Параллельно запущенные процессы

Параллельно запущенные процессы на ПК могут существенно влиять на скорость передачи данных по USB, и это влияние обусловлено несколькими факторами:

  • Нагрузка на процессор: Передача данных по USB требует ресурсов процессора, особенно для обработки потоков данных, проверки ошибок и управления буферами. Если одновременно запущены ресурсоемкие задачи, такие как видеообработка, виртуализация или тяжелые приложения, они могут «отбирать» ресурсы у передачи данных по USB. Это приводит к задержкам в обработке данных, снижая скорость передачи и увеличивая время ожидания.
  • Нагрузка на оперативную память (RAM): USB-контроллеры и ОС часто используют оперативную память для буферизации данных. Если запущенные процессы потребляют много оперативной памяти, системе может не хватить свободного объема для буферов USB. В таких случаях данные могут передаваться меньшими порциями, что замедляет скорость передачи и может приводить к прерывистой передаче. При нехватке оперативной памяти ОС может использовать подкачку, что увеличивает задержки, так как данные кэшируются на жестком диске или SSD, а это медленнее, чем оперативная память.
  • Нагрузка на диск (I/O операции):  Если данные передаются с/на накопитель, используемый другими процессами, параллельные операции ввода-вывода могут создать «узкое место». Например, при передаче больших файлов по USB и одновременно выполняемой загрузке данных на диск производительность резко снижается, так как диск вынужден обрабатывать несколько запросов параллельно. При этом случайные (несколько мелких) операции ввода-вывода еще больше замедляют передачу, особенно на механических HDD. SSD-накопители более устойчивы к многозадачности, но при интенсивной нагрузке тоже теряют в скорости.
  • Прерывания и приоритеты задач: ОС при распределении ресурсов использует приоритеты процессов, чтобы обеспечить устойчивую работу. Если передача данных по USB запущена как фоновая задача с низким приоритетом, она может уступить более важным процессам. Этот механизм предотвращает зависания системы, но снижает скорость передачи данных. Прерывания, возникающие от других устройств, также могут замедлять передачу, поскольку система переключается на обслуживание этих прерываний, откладывая выполнение операций для USB.
  • Программное обеспечение и службы ОС: Антивирусы, брандмауэры и службы резервного копирования могут активно сканировать файлы при их передаче, что увеличивает время доступа и обработки данных. Например, антивирус может проверять каждый файл, поступающий на USB-накопитель, что замедляет общую скорость записи. Системные обновления и другие автоматические задачи (например, индексирование данных) также могут конкурировать за ресурсы системы, задерживая процесс передачи.
  • Энергопотребление и тепловыделение: При одновременной загрузке процессора и других компонентов энергопотребление увеличивается, а при перегреве система может снижать производительность для защиты оборудования. И все это опять же может повлиять на скорость передачи данных по USB, особенно на ноутбуках, которые автоматически снижают тактовую частоту для экономии энергии и охлаждения.


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

 

Расчет реальной скорости передачи данных по USB

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

Имея, более-менее, конкретную цифру, на которой сходятся некоторые инженеры и исследователи - 20% на накладные расходы, можем попробовать посчитать. У нас была, как помните, исходная скорость 625 МБ/с. Вычтем из нее накладные расходы:

625 МБ/с – 20% = 500 МБ/с 

Минус, множество вышеописанных факторов, которые, хоть и неопределенно, но все же неминуемо будут влиять на скорость работы. У них нет конкретного числового выражения, но давайте под них заложим 10%:

500 МБ/с – 10% = 450 МБ/с 

Итого, более менее реальная скорость для USB 3.2 Gen 1, будет порядка 450 МБ/с. Повторюсь: это не означает, что она всегда будет равна этому значению. Она может быть как больше, так и меньше, и всегда будет плавающей. Но, в любом случае, это более реальная цифра, чем изначальные 625 МБ/с. К этой цифре реальная скорость будет лишь стремиться.

Если интересно, все желающие сами могут поэкспериментировав с любой флэшкой.

 

Первая часть цикла: Как узнать реальную скорость передачи данных по USB?