2

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

Это довольно сложно для меня, я предполагаю скорость чтения: 40 МБ / с и скорость записи 30 МБ / с.
USB High Speed - это USB 2.0 и работает в полудуплексном режиме.

Не могли бы вы помочь мне оценить это время?

Моя попытка : Время записи: 1000 МБ /30 МБ = 33 с.
Время чтения: 1000 МБ /40 МБ = 25 с.
25 с + 33 с /2 = 25 с + 17 с = 42 с
Как видите, я делю на 2 из-за полудульпекса.

2 ответа2

1

Во-первых, USB 2.0 имеет скорость передачи данных 480 Мбит / с = 60 МБ / с. Реальная скорость передачи данных немного ниже.

И полудуплекс означает, что только одно устройство на шине может отправлять данные одновременно.

Теперь это зависит от вашего оборудования. Если эта карта действительно имеет четыре независимых USB-контроллера, одна шина USB используется для чтения, а другая для записи (одновременно), и ни один из них не работает на скорости 60 МБ / с. А база данных PCIe настолько быстрая, что вам не о чем беспокоиться.
Узким местом является пишущая USB-флешка со скоростью 30 МБ / с, и это занимает около 33 секунд.

Если на карте есть только один USB-контроллер и 4x USB-концентратор, все данные должны проходить дважды (и не одновременно) через одно USB-соединение между концентратором и контроллером. "Пишущий" флеш-накопитель может принимать данные только со скоростью 30 МБ / с, а данные с "считывающего" флеш-накопителя также будут запрашиваться со скоростью 30 МБ / с. Здесь 30 МБ / с +30 МБ / с = 60 МБ / с, и поскольку 2 ГБ передаются по одной шине USB, это снова занимает 33 секунды.

Тем не менее, реалистичная скорость передачи данных USB 2.0 ниже. Если это 50 МБ / с, это займет около 42 секунд.

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

0

Почему вы хотите разделить время записи пополам? При ваших (оптимистичных) предположениях скорости записи 30 МБ / с и 40 МБ / с для чтения ответ прост: в ЛУЧШЕМ случае вашему прикладному уровню потребуется 25 с, чтобы прочитать ВЕСЬ файл, а затем 33 с, чтобы записать его на другой диск. , Таким образом, это займет всего 25+33 = 58 с, а не на секунду меньше. Это самая оптимистичная оценка в соответствии с вашими основными предположениями для скорости передачи данных. Если в вашем прикладном уровне имеется меньший буфер, чтение и запись будут выполняться с меньшим количеством чередований, поэтому время передачи будет несколько больше из-за накладных расходов протокола (ов).

ДОБАВЛЕНИЕ: Я полагаю, что путаница происходит из-за неправильного предположения, что каждый порт в показанной карте работает как независимый канал. Это не. Все контроллеры EHCI реализованы как "корневые концентраторы", что означает, что каждый контроллер имеет только один процессор списка (он же DMA), и все порты HS имеют одинаковую пропускную способность 480 Мбит / с. Чтобы чтение / запись проходили параллельно, нужно установить в систему две карты. Или больше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .