Перейти к содержанию
    

CH32V307 Test

Решили попробовать частично перейти на китайские контроллеры CH32 взамен СТМ32

Для начала решил стравнить   производительность.

Был создан длинный цикл в коттором выполнялось несколько  операций -взятие из массива , умножение. деление сложение , возврат результата в массив

Все целочисленное

Сравнени происходило с стм32ф429 vs CH32V307

частоты обеих шин были 144 мгц(макс для китайца)

Первый тест показал отставание китайца раза в 2

Анализ кода выяввил что ассемблер использует  медленную операцию деленя у китайца. После оптимизации  настроек компилятора стал работать нормально

Общее отсавание китайца гдето 15-18% что думаю очень неплохо за  такие деньги

Код на асме при этом длиннее раза в 2 у китайца , но он RISC , думаю это нормально по сравнению в АРМ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, spirit_1 сказал:

Сравнение происходило с стм32ф429 vs CH32V307

А правильно писать не умеете? Или это теперь  такая реклама? )

STM32F429 vs CH32V307

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Код на асме при этом длиннее раза в 2 у китайца , но он RISC , думаю это нормально по сравнению в АРМ


Дык STM32 тоже, как ни удивительно, RISC (-8Ж и MSP430 тоже (хоть и не в тему).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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, и почувствовал их различия.

ТС может, стоит компилятору как-то дать понять о всем наборе инструкций выбранного МК?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, adnega сказал:

С RISC-V не знаком. Говорят, что в CH32V307 набор команд IMAFC, буковка C - означает, что инструкции могут быть короткими.

Да, все верно, но только в сравнении плотности и скорости кода это ему мало помогает судя по моему личному опыту: RV32IMC проигрывает Thumb-2 по размеру прошивки приблизительно 25-30%, а по скорости, в зависимости от сложности алгоритма, может проиграть ещё больше. Так, например, реализация ЭЦП на эллиптических кривых из-за невозможности эффективной реализации умножения больших чисел проигрывает чуть ли в 1.5 - 2 раза (на сколько я помню).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде, за это RISC-V и критикуют, типа, перегнули уж в сторону упрощения. И поговаривают, что ARM не такой уж и RISC, а местами очень даже и CISC ;)

Насколько я понял, в RISC-V можно добавлять свои команды - может, появятся в будущем команды вида "сделай все хорошо".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, adnega сказал:

Вроде, за это RISC-V и критикуют, типа, перегнули уж в сторону упрощения.

На Хабре недавно писали, что такое упрощение даёт хорошие преимущества реализациям этой системы команд в процессорах. А вот для микроконтроллеров, у которых нет кешей, блоков предсказания ветвления и т.п. это по-видимому выходит боком.

4 часа назад, adnega сказал:

Насколько я понял, в RISC-V можно добавлять свои команды - может, появятся в будущем команды вида "сделай все хорошо".

Не совсем так: безусловно можно делать свои расширения, но это принципиально ничем не отличается от реализации своего блока ускорения какого-то алгоритма или чего-то в этом роде. Есть же МК с аппаратными блоками шифрования данных, расчета CRC и т.п. 

И совсем другое дело обеспечение стандартизации расширения системы команд в комитете RISC-V и реализация эффективной поддержки этого расширения в компиляторах. Поэтому процесс развития идёт неспешно, но идёт. А ведь потом ещё нужно дождаться реализации этих решений в железе...

В этом плане ARM и его Thumb2 выглядит практически идеально: они почти сразу попали если не в 10ку, то очень очень близко, что в значительной степени и обеспечивает им популярность.

PS: https://github.com/riscv/riscv-code-size-reduction

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, makc сказал:

А вот для микроконтроллеров

Я в подавляющем большинстве случаев использую ядро только с целью инициализации периферии.

Если и надо что-то посчитать, то это не загружает ядро значительно.

Есть, конечно, исключения, но это как обычно - заказчик хочет больше и больше.

28 минут назад, makc сказал:

Не совсем так: безусловно можно делать свои расширения, но это принципиально ничем не отличается от реализации своего блока ускорения какого-то алгоритма или чего-то в этом роде. Есть же МК с аппаратными блоками шифрования данных, расчета CRC и т.п.

Согласен. Я тоже в основном рассчитываю на периферию.

Принципиальное различие, по-моему, лишь в том, что инструкции работают с РОН, а периферийные блоки - это как бы память - считай тормоза. Т.е. систему команд эффективно расширять, если нужно что-то часто и сложно делать над данными в РОН, для всего остального - периферийный ускоритель.

Thumb-2 - это читерство - посмотрели какие команды чаще всего используются ЯВУ и их оптимизировали - отсюда и результат.

Жду отладку на CH32V307 - нужно самому пощупать. Пока пытаюсь читать по теме. Есть что-то годное?

Я нашел "Цифровая схемотехника и архитектура компьютера: RISC-V" Сара Л. Харрис, Дэвид Харрис, под редакцией А. Ю. Романова

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, adnega сказал:

Thumb-2 - это читерство - посмотрели какие команды чаще всего используются ЯВУ и их оптимизировали - отсюда и результат.

Я бы не назвал это читерством, это скорее грамотный анализ предметной области и правильная реализация на его основе. Красивыми идеями сыт не будешь... Тут не шашечки нужны, нужно ехать.

22 минуты назад, adnega сказал:

Жду отладку на CH32V307 - нужно самому пощупать. Пока пытаюсь читать по теме. Есть что-то годное?

Из литературы ничего не подскажу, кроме стандарта на ISA и её расширения + описания конкретных реализаций. И ещё стоит посмотреть ассемблерные листинги имеющихся исходников, скомпилированных gcc под RV32IMC - это хорошо помогает понять, что это такое. И заодно оценить и другие узкие места этой архитектуры, в частности отсутствие аппаратного сохранения контекста в стеке при вызове обработчика прерывания, в отличие от привычного Cortex-M3/M4.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У 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 практически балласт ну и тд) - выхода не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...