ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้
-
- ну мне кажется, что это всяко быстрей, чем по байтику копировать - IBAH(Вчера, 18:51)
- Библиотечные memcpy не по байтику копируют, там разогнано. Ну и
опять же, зачем? Куда-то опаздываем? - SciFi(Вчера, 19:07)
- Мы не опаздываем, мы НЕ УСПЕВАЕМ... - klen(Вчера, 22:17)
- Быстрее будет только на заметных объемах данных, т.к. ДМА надо
настроить, это время. А еще ДМА может работать на частоте в разы
ниже процессорной, тогда выигрыша по скорости может не быть. AlexBi(104 знак., Вчера, 19:06)
- А в этих ваших интернетах пионеры пишуть, что через ДМА получается
меднение чем через memcpy() - IBAH(Вчера, 19:16)
- ДМА для пересылки надо несколько тактов. Например для STM32F103 пишут что надо 5 тактов, тактируется ДМА от АНВ (будем считать оно тактируется частотой ядра). Для пересылки память память ядром могут использоваться команды LDM/STM с ними на пересылку одного слова может уходить менее 3 тактов. Итого получается что ядром быстрее. Но это вопрос к реализации ДМА в STM32F103 - AlexBi(Вчера, 19:45)
- А в этих ваших интернетах пионеры пишуть, что через ДМА получается
меднение чем через memcpy() - IBAH(Вчера, 19:16)
- Могу ошибаться, но разве DMA не через раз (условно) шевелится,
только когда шина высвободилась?... POV(189 знак., Вчера, 18:55)
- Обычно шины ОЗУ и ПЗУ разные, шина ОЗУ часто свободна - AlexBi(Вчера, 19:09)
- Насколько я понимаю проц имеет самый высокий приоритет на шине, и
если его усыпить, то DMA все по быстренькому перекидает, и гораздо
быстрее чем проц ручками. - IBAH(Вчера, 19:09)
- Всё уже было. Вот тут с картинками: SciFi(2 знак., Вчера, 19:14 - 19:25, ссылка, картинка)
- Странно: почему у newlib-nano такое сильное отставание в memcpy()? Eddy_Em(107 знак., Сегодня, 09:03)
- Там как раз по байтику. Зато минимум кода. - SciFi(Сегодня, 09:16)
- Ты в листинг загляни. Бывает, оно оптимизирует и всё, что можно,
копирует полными словами. А бывает - по байтам. Может от версии
библиотеки зависеть. YMMV. - Nikolay_Po(Сегодня, 09:16)
- Еще ведь от модели МК зависит: на всяких "нулевках", если копировать невыровненными словами, будет хардфолт. Т.е. недостающие до слова из головы и хвоста надо побайтно, остальное - по словам. Eddy_Em(546 знак., Сегодня, 10:27)
- По умному эти функции должны инлайниться самим компилятором (его
оптимизатором), и не зависеть от библиотеки. Такие компиляторы
есть, но не все. - AlexBi(Сегодня, 09:51)
- memcpy не такая уж простая функция. я бы сказал, что инлайнятся реализации в зависимости от условий. самое жирное в плане реализации - копирование перекрывающихся областей - когда (src+size) > dst. потому везде пихать одинаковое - как-то нерационально. и вместо поиска оптимальной реализации в рантайме и соответствующего оверхеда это дело по возможности инлайнится именно компилятором. - Vit(Сегодня, 12:25)
- Есть плюсы и минусы у этого подхода. Обобщать "умно" или "неумно"
здесь едва ли имеет смысл. - SciFi(Сегодня, 09:54)
- Можете сказать какие есть минусы? - AlexBi(Сегодня, 09:56)
- Что интересно - с отключенным у DMA FIFO получается немного быстрее. - ЫЫyкпy(Сегодня, 07:12)
- негрузиться!!! что там? - IBAH(Вчера, 19:21)
- Странно: почему у newlib-nano такое сильное отставание в memcpy()? Eddy_Em(107 знак., Сегодня, 09:03)
- Всё уже было. Вот тут с картинками: SciFi(2 знак., Вчера, 19:14 - 19:25, ссылка, картинка)
- Библиотечные memcpy не по байтику копируют, там разогнано. Ну и
опять же, зачем? Куда-то опаздываем? - SciFi(Вчера, 19:07)
- ну мне кажется, что это всяко быстрей, чем по байтику копировать - IBAH(Вчера, 18:51)