Freibier 4 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба Смастерил дубликатор microSD. Для синхронного копирования эталона на 6 карт одновременно. Инициализирую все карты одинаково - SDIO 4 bit High Speed. Все карты 16GB MicroSDHC Class 10 UHS-I, но разных производителей. Копирую ровно 1 гигабайт. Вот такие результаты получил при копировании эталона только на одну карту по очереди: (после имени время м:с и в скобках округлённая скорость МБ/с.) Patriot 1:28(12) Team 1:24(12) Goodram 1:20(13) Mibrand 1:04(16) Kioxia 1:10(15) SanDisk 1:12(14) И всё бы хорошо, но при одновременном копировании на все 6-ть карт получаю время 2:58! Думал что при одновременном копировании время будет ну примерно как у самой медленной карты, а получилось практически в два раза больше. Почему так сильно может падать скорость при одновременной записи? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 5 minutes ago, Freibier said: Почему так сильно может падать скорость при одновременной записи? Потому что они BUSY в разные моменты времени выставляют? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 5 минут назад, aaarrr сказал: Потому что они BUSY в разные моменты времени выставляют? Возможно. А это как-то побороть можно? А если все карты приемники будут абсолютно одинаковые и одного производителя, то такой эффект тоже возможен? Или готовности абсолютно не предсказуемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 7 minutes ago, Freibier said: А если все карты приемники будут абсолютно одинаковые и одного производителя, то такой эффект тоже возможен? Конечно: карты одинаковые, а дефекты NAND разные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба т.е. такое снижение скорости копирования вполне ожидаемо? Вот жеж я попал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба Какой алгоритм записи? Полагаю, вычитали кусок с флешки-оригинала, дальше разбили его на кусочки поменьше. И эти кусочки скармливаете болванкам, дожидаясь, пока каждая из всех 6 болванок закончит запись, прежде чем перейти к следующему "кусочку поменьше"? Тогда так не пойдет - каждой карте нужно выделить свой "поток обслуживания", и кормить ей данные тогда, когда она будет свободна. Вот тогда получите общую скорость записи сопоставимую с самой медленной флешкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Longiel 2 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 2 минуты назад, Arlleex сказал: каждой карте нужно выделить свой "поток обслуживания" Это тогда придётся делать буферы для всех потоков данных. Наверное буферы даже нестрашные по объёму можно сделать, раз все флешки +/- по отдельности одинаково работают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба Just now, Longiel said: Это тогда придётся делать буферы для всех потоков данных. Наверное буферы даже нестрашные по объёму можно сделать, раз все флешки +/- по отдельности одинаково работают. Индивидуальные буферы ни к чему, достаточно общего приличного объема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 14 минут назад, Arlleex сказал: дожидаясь, пока каждая из всех 6 болванок закончит запись, прежде чем перейти к следующему "кусочку поменьше"? Ну да, только "кусочки" равны одному сектору. Читаю один сектор, параллельно отправляя каждую тетраду всем картам, и потом жду когда все BUSY снимутся. Буфера вообще нет никакого. Всё до безобразия просто. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 1 minute ago, Freibier said: Читаю один сектор, параллельно отправляя каждую тетраду всем картам, и потом жду когда все BUSY снимутся. Ну вот. А правильнее будет прочитать блок в несколько Мбайт, а затем параллельно: - писать на карты, индивидуально обрабатывая BUSY - читать следующий блок в буфер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Longiel 2 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 6 минут назад, aaarrr сказал: Индивидуальные буферы ни к чему, достаточно общего приличного объема. Так этот объём нужно получить из источника и хранить в какой-то памяти. Если BUSY несинхронны значит к этой памяти нужно будет обращаться в разные места, но адрес чтения-то один? Правда если частота работы логики алгоритма распределения гораздо выше, чем обмен с флешками, то это не будет проблемой) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 12 минут назад, aaarrr сказал: Ну вот. А правильнее будет прочитать блок в несколько Мбайт, а затем параллельно: - писать на карты, индивидуально обрабатывая BUSY - читать следующий блок в буфер Т.е. читаем в буфер N Мбайт и отправляем "кусочками" равными сектору на первую карту пока она BUSY не выставит. Затем также отправляем следующей карте опять же до выставления ею BUSY. И так по кругу. Верно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 1 minute ago, Freibier said: Т.е. читаем в буфер N Мбайт и отправляем "кусочками" равными сектору на первую карту пока она BUSY не выставит. Затем также отправляем следующей карте опять же до выставления ею BUSY. Вы линии интерфейса между картами делите? Тогда ой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Longiel 2 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 57 минут назад, Freibier сказал: Для синхронного копирования эталона на 6 карт одновременно. Требуется пояснить: запись флешек на физическом уровне идёт параллельно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 8 декабря, 2021 Опубликовано 8 декабря, 2021 · Жалоба 10 минут назад, aaarrr сказал: Вы линии интерфейса между картами делите? Тогда ой. Все сигналы карт конечно раздельные и поступают на индивидуальные пины плис (токены от всех карт я же должен синхронно принимать). Но это уже без разницы. С этим проектом все понятно. Сделал дёшево и сердито - получил соответствующий результат. Просто думал не накосячил ли я где-то, а оказалось это вполне ожидаемый эффект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться