spirit_1 5 6 мая, 2022 Опубликовано 6 мая, 2022 · Жалоба Решили попробовать частично перейти на китайские контроллеры CH32 взамен СТМ32 Для начала решил стравнить производительность. Был создан длинный цикл в коттором выполнялось несколько операций -взятие из массива , умножение. деление сложение , возврат результата в массив Все целочисленное Сравнени происходило с стм32ф429 vs CH32V307 частоты обеих шин были 144 мгц(макс для китайца) Первый тест показал отставание китайца раза в 2 Анализ кода выяввил что ассемблер использует медленную операцию деленя у китайца. После оптимизации настроек компилятора стал работать нормально Общее отсавание китайца гдето 15-18% что думаю очень неплохо за такие деньги Код на асме при этом длиннее раза в 2 у китайца , но он RISC , думаю это нормально по сравнению в АРМ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 87 6 мая, 2022 Опубликовано 6 мая, 2022 · Жалоба 4 часа назад, spirit_1 сказал: Сравнение происходило с стм32ф429 vs CH32V307 А правильно писать не умеете? Или это теперь такая реклама? ) STM32F429 vs CH32V307 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 6 мая, 2022 Опубликовано 6 мая, 2022 · Жалоба Код на асме при этом длиннее раза в 2 у китайца , но он RISC , думаю это нормально по сравнению в АРМ Дык STM32 тоже, как ни удивительно, RISC (-8Ж и MSP430 тоже (хоть и не в тему). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 6 мая, 2022 Опубликовано 6 мая, 2022 · Жалоба 1 час назад, Obam сказал: Дык STM32 тоже, как ни удивительно, RISC (-8Ж и MSP430 тоже (хоть и не в тему). У 32-битного STM32 есть 16-битные инструкции. Считается, что смесь 16/32-Thumb-2 на четверть плотнее 32-ARM, и на четверть производительнее 16-Thumb. С RISC-V не знаком. Говорят, что в CH32V307 набор команд IMAFC, буковка C - означает, что инструкции могут быть короткими. Видимо, ТС имел ввиду две разные RISC системы команд: RISC-V-IMAFC и Thumb-2, и почувствовал их различия. ТС может, стоит компилятору как-то дать понять о всем наборе инструкций выбранного МК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 7 мая, 2022 Опубликовано 7 мая, 2022 · Жалоба 7 часов назад, adnega сказал: С RISC-V не знаком. Говорят, что в CH32V307 набор команд IMAFC, буковка C - означает, что инструкции могут быть короткими. Да, все верно, но только в сравнении плотности и скорости кода это ему мало помогает судя по моему личному опыту: RV32IMC проигрывает Thumb-2 по размеру прошивки приблизительно 25-30%, а по скорости, в зависимости от сложности алгоритма, может проиграть ещё больше. Так, например, реализация ЭЦП на эллиптических кривых из-за невозможности эффективной реализации умножения больших чисел проигрывает чуть ли в 1.5 - 2 раза (на сколько я помню). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 7 мая, 2022 Опубликовано 7 мая, 2022 · Жалоба Вроде, за это RISC-V и критикуют, типа, перегнули уж в сторону упрощения. И поговаривают, что ARM не такой уж и RISC, а местами очень даже и CISC ;) Насколько я понял, в RISC-V можно добавлять свои команды - может, появятся в будущем команды вида "сделай все хорошо". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 7 мая, 2022 Опубликовано 7 мая, 2022 · Жалоба 4 часа назад, adnega сказал: Вроде, за это RISC-V и критикуют, типа, перегнули уж в сторону упрощения. На Хабре недавно писали, что такое упрощение даёт хорошие преимущества реализациям этой системы команд в процессорах. А вот для микроконтроллеров, у которых нет кешей, блоков предсказания ветвления и т.п. это по-видимому выходит боком. 4 часа назад, adnega сказал: Насколько я понял, в RISC-V можно добавлять свои команды - может, появятся в будущем команды вида "сделай все хорошо". Не совсем так: безусловно можно делать свои расширения, но это принципиально ничем не отличается от реализации своего блока ускорения какого-то алгоритма или чего-то в этом роде. Есть же МК с аппаратными блоками шифрования данных, расчета CRC и т.п. И совсем другое дело обеспечение стандартизации расширения системы команд в комитете RISC-V и реализация эффективной поддержки этого расширения в компиляторах. Поэтому процесс развития идёт неспешно, но идёт. А ведь потом ещё нужно дождаться реализации этих решений в железе... В этом плане ARM и его Thumb2 выглядит практически идеально: они почти сразу попали если не в 10ку, то очень очень близко, что в значительной степени и обеспечивает им популярность. PS: https://github.com/riscv/riscv-code-size-reduction Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 7 мая, 2022 Опубликовано 7 мая, 2022 · Жалоба 28 минут назад, makc сказал: А вот для микроконтроллеров Я в подавляющем большинстве случаев использую ядро только с целью инициализации периферии. Если и надо что-то посчитать, то это не загружает ядро значительно. Есть, конечно, исключения, но это как обычно - заказчик хочет больше и больше. 28 минут назад, makc сказал: Не совсем так: безусловно можно делать свои расширения, но это принципиально ничем не отличается от реализации своего блока ускорения какого-то алгоритма или чего-то в этом роде. Есть же МК с аппаратными блоками шифрования данных, расчета CRC и т.п. Согласен. Я тоже в основном рассчитываю на периферию. Принципиальное различие, по-моему, лишь в том, что инструкции работают с РОН, а периферийные блоки - это как бы память - считай тормоза. Т.е. систему команд эффективно расширять, если нужно что-то часто и сложно делать над данными в РОН, для всего остального - периферийный ускоритель. Thumb-2 - это читерство - посмотрели какие команды чаще всего используются ЯВУ и их оптимизировали - отсюда и результат. Жду отладку на CH32V307 - нужно самому пощупать. Пока пытаюсь читать по теме. Есть что-то годное? Я нашел "Цифровая схемотехника и архитектура компьютера: RISC-V" Сара Л. Харрис, Дэвид Харрис, под редакцией А. Ю. Романова Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 231 7 мая, 2022 Опубликовано 7 мая, 2022 · Жалоба 20 минут назад, adnega сказал: Thumb-2 - это читерство - посмотрели какие команды чаще всего используются ЯВУ и их оптимизировали - отсюда и результат. Я бы не назвал это читерством, это скорее грамотный анализ предметной области и правильная реализация на его основе. Красивыми идеями сыт не будешь... Тут не шашечки нужны, нужно ехать. 22 минуты назад, adnega сказал: Жду отладку на CH32V307 - нужно самому пощупать. Пока пытаюсь читать по теме. Есть что-то годное? Из литературы ничего не подскажу, кроме стандарта на ISA и её расширения + описания конкретных реализаций. И ещё стоит посмотреть ассемблерные листинги имеющихся исходников, скомпилированных gcc под RV32IMC - это хорошо помогает понять, что это такое. И заодно оценить и другие узкие места этой архитектуры, в частности отсутствие аппаратного сохранения контекста в стеке при вызове обработчика прерывания, в отличие от привычного Cortex-M3/M4. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 7 мая, 2022 Опубликовано 7 мая, 2022 · Жалоба У 32-битного STM32 есть 16-битные инструкции. Считается, что смесь 16/32-Thumb-2 на четверть плотнее 32-ARM, и на четверть производительнее 16-Thumb. Спасибо, Сap (-8Ж поговаривают, что ARM не такой уж и RISC, а местами очень даже и CISC ;) По сравнению с MSP430 (одна стр, 27 команд - UAL QRC 5(?)стр, не считал) таки да, были бы операнды "память-память" - вполне себе. В этом плане ARM и его Thumb2 выглядит практически идеально: они почти сразу попали если не в 10ку, то очень очень близко, что в значительной степени и обеспечивает им популярность Если учесть, чтO от нормальной 32-разрядной архитектуры оставляла Thumb (R8-R12 практически балласт ну и тд) - выхода не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться