Например TDA7294

Форум РадиоКот • Просмотр темы - Кто то доставал до дна производительности STM32F1 ?
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт янв 28, 2020 23:13:21

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 73 ]  1, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Пт июн 28, 2019 13:20:42 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 86
Откуда: Зеленоград
Рейтинг сообщения: 4
Очень интересны проекты, так скажем "высоконагруженные" в которых не хватало бы производительности камушков STM32F103

Ассемблеристы есть ? 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Пт июн 28, 2019 13:48:18 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 136
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3549
Рейтинг сообщения: 1
Для этого не нужен ассемблер, это не авр. Для этого надо досконально знать периферию а не юзать софтовоеногодрочерство


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Пт июн 28, 2019 14:12:08 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 86
Откуда: Зеленоград
Рейтинг сообщения: 0
Для этого не нужен ассемблер, это не авр. Для этого надо досконально знать периферию а не юзать софтовоеногодрочерство


Хм, открытия не сделал конечно, я с этим согласен, но все же хотелось бы привлечь в эту ветку ассемблерного умельца

Есть просто проект, который скоро нащупает дно производительности, хотелось бы обсудить отладку и всякие тонкости по тактам выполнения кода


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Пт июн 28, 2019 14:43:49 
Мучитель микросхем

Карма: -14
Рейтинг сообщений: 0
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 453
Рейтинг сообщения: 0
Очень интересны проекты, так скажем "высоконагруженные" в которых не хватало бы производительности камушков STM32F103

Если удалось "достать до дна", то обычно это уже приводит к неработоспособности алгоритма работающего в реальном времени.
А если говорить не о реальном времени, то любое устройство, которое например отображает какие-то данные для пользователя, может работать на дне (только своей задачей визуализации) - ну и что?

Добавлено after 1 minute 31 second:
Ассемблеристы есть ? 8)

Иногда пишу отдельные функции на асме. В том числе - и для оптимизации по скорости. Только обычно на CM4.


Вернуться наверх
 
Molex: соединения, связь, инновации

Развитие техники предъявляет все более высокие требования к разъемам и скорости передачи данных. Соединения становятся прецизионными и наукоемкими изделиями. На сегодня Molex – это не только высокотехнологичные разъёмы, но и инновационные устройства передачи данных.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Пт июн 28, 2019 15:24:29 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 86
Откуда: Зеленоград
Рейтинг сообщения: 0
Очень интересны проекты, так скажем "высоконагруженные" в которых не хватало бы производительности камушков STM32F103

Если удалось "достать до дна", то обычно это уже приводит к неработоспособности алгоритма работающего в реальном времени.
А если говорить не о реальном времени, то любое устройство, которое например отображает какие-то данные для пользователя, может работать на дне (только своей задачей визуализации) - ну и что?

Добавлено after 1 minute 31 second:
Ассемблеристы есть ? 8)

Иногда пишу отдельные функции на асме. В том числе - и для оптимизации по скорости. Только обычно на CM4.



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

Может есть какие то примерчики реализаций оптимизации? я конечно местами использую асм для обхода ситуаций - не понятно почему генерируемых компилятором - но не уверен что делаю все правильно, т.к. литературы и примеров - раз-два в доступе..

Так скажем на перспективу изучаю вопрос


Вернуться наверх
 
Как реализовать минимальное энергопотребление беспроводного микроконтроллера STM32WB55

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

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Пт июн 28, 2019 15:41:02 
Мучитель микросхем

Карма: -14
Рейтинг сообщений: 0
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 453
Рейтинг сообщения: 0
Может есть какие то примерчики реализаций оптимизации?

Ну что значит "примерчики"? Для каждой задачи - своё решение.
А из общий мелочей, ну например вместо:
int i;
if ((int)(i -= N) < 0) i = 0;
если известно, что (uint)i < (1u<<31) можно использовать:
i = __USAT(i - N, 31);
Изучайте систему команд CPU - много полезного найдёте!

т.к. литературы и примеров - раз-два в доступе..

Единственная литература которая для этого нужна: http://infocenter.arm.com/help/topic/co ... 3_dgug.pdf
Больше ничего не нужно.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Пт июн 28, 2019 15:54:45 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 86
Откуда: Зеленоград
Рейтинг сообщения: 0
Может есть какие то примерчики реализаций оптимизации?

Ну что значит "примерчики"? Для каждой задачи - своё решение.
А из общий мелочей, ну например вместо:
int i;
if ((int)(i -= N) < 0) i = 0;
если известно, что (uint)i < (1u<<31) можно использовать:
i = __USAT(i - N, 31);
Изучайте систему команд CPU - много полезного найдёте!

т.к. литературы и примеров - раз-два в доступе..

Единственная литература которая для этого нужна: http://infocenter.arm.com/help/topic/co ... 3_dgug.pdf
Больше ничего не нужно.


Вот этот документ как раз то что нужно - спасибо!


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Вт июл 02, 2019 11:35:50 
Первый раз сказал Мяу!

Карма: 3
Рейтинг сообщений: 16
Зарегистрирован: Пн янв 16, 2012 00:49:07
Сообщений: 32
Откуда: Москва
Рейтинг сообщения: 0
На 72МГц ногодрыг предел 12МГц и это синтетически на ассемблере просто переключение ноги в цикле и с учетом особенностей конвеера. Если просто на Си это же написать, уже будет вроде 8МГц, просто переключение ноги в цикле. Что-то осмысленное вообще драматические цифры выдаст по сравнению с тактовой.

Чтобы просто поменять значение ноги на порту, нужно:
1. Загрузить в регистр адрес.
2. Загрузить в регистр значение по этому адресу.
3. Изменить значение.
4. Записать обратно.

В том же STM8 это можно сделать одной командой bset/bres :). На 16МГц STM8 из аккумулятора через bccm можно выплюнуть ногодрыгом осмысленный байт на 8МГц.

Благо у STM32 богатая периферия и следует ее хорошо изучить и использовать.


Последний раз редактировалось dekus Вт июл 02, 2019 13:16:12, всего редактировалось 1 раз.

Вернуться наверх
 
Распродажа паяльных станций ATTEN и аксессуаров!
Индукционная паяльная станция AT315D - 3 977 ₽, станция паяльная AT80D – 2177 ₽, станция паяльная AT936b – 1000 ₽!

Заходите в раздел акции и спецпредложения на сайте prist.ru, покупайте измерительные приборы, инструмент и паяльно-ремонтное оборудование по специальным ценам.
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Вт июл 02, 2019 13:10:56 
Мучитель микросхем

Карма: -14
Рейтинг сообщений: 0
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 453
Рейтинг сообщения: 0
На 72МГц ногодрыг предел 12МГц и это синтетически на ассемблере просто переключение ноги в цикле и с учетом особенностей конвеера.

Про ногодрыг тут никто вроде и не говорил. С чего Вы его сюда приплели? :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Вт июл 02, 2019 13:17:17 
Первый раз сказал Мяу!

Карма: 3
Рейтинг сообщений: 16
Зарегистрирован: Пн янв 16, 2012 00:49:07
Сообщений: 32
Откуда: Москва
Рейтинг сообщения: 0
Я ничего не приплетал. Второе сообщение прочитайте. Про ногодрыг и перефирию. Я продолжил :).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 06:12:44 
Держит паяльник хвостом
Аватар пользователя

Карма: 12
Рейтинг сообщений: 123
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 953
Рейтинг сообщения: 0
Если просто на Си это же написать, уже будет вроде 8МГц, просто переключение ноги в цикле.
Неправда, будет то же самое. С-ные компиляторы сейчас умные.

Что-то осмысленное вообще драматические цифры выдаст по сравнению с тактовой.

Чтобы просто поменять значение ноги на порту, нужно:
1. Загрузить в регистр адрес.
2. Загрузить в регистр значение по этому адресу.
3. Изменить значение.
4. Записать обратно.

В том же STM8 это можно сделать одной командой bset/bres :).
Вы мешаете в кучу особенности разных архитектур и эффект от применения ассемблера по сравнению с C.

Три простых примера. Тут компилятор раскрутил цикл.

Сделаем цикл подлиннее, не дадим ему самовольничать

И всё же с раскруткой было быстрее, поможем ему чутка


А вот ещё панкуха. Поменяем на обратный порядок бит на 32-битной шине.

Или вот то же самое на 8-битной.


Резюме! Всё нужно применять к месту. Ассемблер там где без него действительно не обойтись. Ногодрыг, собственно, тоже.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 07:37:45 
Первый раз сказал Мяу!

Карма: 3
Рейтинг сообщений: 16
Зарегистрирован: Пн янв 16, 2012 00:49:07
Сообщений: 32
Откуда: Москва
Рейтинг сообщения: 0
Неправда, будет то же самое. С-ные компиляторы сейчас умные.

Вы можете выложить скриншот с осциллографа или лог. анализатора с результатом 12МГц на F103 72МГц с простым кодом - переключение туда сюда одной ноги в бесконечном цикле?

Умный компилятор все равно не умнее человека :).


Последний раз редактировалось dekus Ср июл 03, 2019 08:15:06, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 08:01:43 
Держит паяльник хвостом

Карма: 15
Рейтинг сообщений: 163
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 948
Рейтинг сообщения: 0
Вы можете выложить скриншот с осциллографа или лог. анализатора с результатом 12МГц на F103 72МГц с простым кодом - переключение туда сюда одной ноги в бесконечном цикле?

STM32 - это далеко не один устаревший F1, у меня F3 при 120MHz за 2 такта берет данные с порта и складывает в массив, т.е. наверняка можно получить меандр частотой 60MHz(при запуске из CCM), если без цикла, конечно. Опять же быстрый ногодрыг у мк на ядре M0+, там при обращении к портам идет работа напрямую с ними, минуя шину.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 08:08:37 
Держит паяльник хвостом
Аватар пользователя

Карма: 12
Рейтинг сообщений: 123
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 953
Рейтинг сообщения: 0
Вы можете выложить скриншот с осциллографа или лог. анализатора с результатом 12МГц на F103 72МГц с простым кодом - переключение туда сюда одной ноги в бесконечном цикле (что может быть проще)? Я не говорю что это не возможно, просто убедиться.
Железок сегодня под рукой нет, но нет оснований не доверять листингам
Код:
  for(PA_1 NOGA;;)
  {
    NOGA=1;
    NOGA=0;
  }

Код:
        LDR.N    R0,??DataTable4_2  ;; 0x40010810
        MOVS     R1,#+2
??main_0:
        STR      R1,[R0, #+0]
        STR      R1,[R0, #+4]
        B.N      ??main_0


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 09:41:10 
Открыл глаза

Зарегистрирован: Вс мар 24, 2013 17:21:28
Сообщений: 47
Рейтинг сообщения: 0
Действительно 12 МГц :)
Код:
void setup() {
GPIOA_BASE->CRL = 0x33 ;//PA0 -выход
asm volatile (
  "mov   R0, %[port]"   "\n\t"
  "mov   R1, 0x1"         "\n\t" 
  "loop:"                        "\n\t"
  "str   R1, [R0,#+0]"    "\n\t" // BSRR <- (1 << 0)
  "str   R1,  [R0,#+4]"   "\n\t" // BSR  <- (1 << 0)
  "B.N  loop"                  "\n\t"     
: : [port]"r" (&GPIOA_BASE->BSRR)
: "r0","r1"
);


Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 10:12:14 
Первый раз сказал Мяу!

Карма: 3
Рейтинг сообщений: 16
Зарегистрирован: Пн янв 16, 2012 00:49:07
Сообщений: 32
Откуда: Москва
Рейтинг сообщения: 0
Не поленился. Кейл, оптимизация O3, speed. Да, 2 STR в цикле. Это все понятно. Но это был вопрос с подвохом. Но я же не просто так специально дописал про конвеер до этого.

Код:
#include <stm32f10x.h>

#define TEST_PIN 4
int main()
{
   RCC->APB2ENR = RCC_APB2ENR_IOPAEN;
   GPIOA->CRL = 0x03 << (TEST_PIN*4);
   while(1) {
      GPIOA->BRR = 1<<TEST_PIN;
      GPIOA->BSRR = 1<<TEST_PIN;
   }
}


Код:
    10:         while(1) {
0x0800031E 4906      LDR      r1,[pc,#24]  ; @0x08000338
0x08000320 F44F3040  MOV      r0,#0x30000
0x08000324 6008      STR      r0,[r1,#0x00]
    11:                 GPIOA->BRR = 1<<TEST_PIN;
0x08000326 4905      LDR      r1,[pc,#20]  ; @0x0800033C
0x08000328 2010      MOVS     r0,#0x10
    12:                 GPIOA->BSRR = 1<<TEST_PIN;
0x0800032A 1F0A      SUBS     r2,r1,#4
0x0800032C 6008      STR      r0,[r1,#0x00]
0x0800032E 6010      STR      r0,[r2,#0x00]
    10:         while(1) {
0x08000330 E7FC      B        0x0800032C


И обращаем внимание на адрес перехода. Не повезло.
И получаем 10МГц :( .

Тот же самый код, только добавляем перед циклом 2 NOP, чтобы выровнять переход до 0x08000330
Код:
   11:                 GPIOA->BRR = 1<<TEST_PIN;
0x0800032A 2010      MOVS     r0,#0x10
0x0800032C 4904      LDR      r1,[pc,#16]  ; @0x08000340
    12:                 GPIOA->BSRR = 1<<TEST_PIN;
0x0800032E 1F0A      SUBS     r2,r1,#4
0x08000330 6008      STR      r0,[r1,#0x00]
0x08000332 6010      STR      r0,[r2,#0x00]
    10:         while(1) {
0x08000334 E7FC      B        0x08000330


Теперь обращаем внимание на адрес перехода.
И о чудо, уже 12МГц.

И это только один простой пример и только работы конвеера. Куча нюансов где никакой компилятор не справится, по сравнению с человеком.


Последний раз редактировалось dekus Ср июл 03, 2019 10:42:00, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 10:28:14 
Держит паяльник хвостом
Аватар пользователя

Карма: 12
Рейтинг сообщений: 123
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 953
Рейтинг сообщения: 0
И это только один простой пример и только работы конвеера. Куча нюансов где никакой компилятор не справится, по сравнению с человеком.
Это тоже неправда. Многократно замечал "выкрутасы" компилятора по изменению очерёдности исполнения команд и выравниванию nop-ами как раз с целью оптимизации доступа и работы конвейера. Компиляторы уже давно это всё понимают. Их разработчики годами занимаются повышением эффективности. Я вот не могу похвастаться, что завсегда сделаю лучше компилятора. Да, часто можно сделать лучше, но только потому что я знаю про код который пишу немного больше, чем говорю компилятору.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 10:32:13 
Первый раз сказал Мяу!

Карма: 3
Рейтинг сообщений: 16
Зарегистрирован: Пн янв 16, 2012 00:49:07
Сообщений: 32
Откуда: Москва
Рейтинг сообщения: 0
Вам конкретный пример привел про отсутствие 2Мгц из 12 со всеми листингами для повторения.


Последний раз редактировалось dekus Ср июл 03, 2019 10:35:37, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 10:34:40 
Друг Кота

Карма: 38
Рейтинг сообщений: 228
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 13032
Рейтинг сообщения: 0
"Ага! — сказали суровые сибирские лесорубы. И ушли рубить лес топорами." :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кто то доставал до дна производительности STM32F1 ?
СообщениеДобавлено: Ср июл 03, 2019 10:50:53 
Держит паяльник хвостом
Аватар пользователя

Карма: 12
Рейтинг сообщений: 123
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 953
Рейтинг сообщения: 0
Вам конкретный пример привел про отсутствие 2Мгц из 12 со всеми листингами для повторения.
На эти "грабли" с одинаковым успехом можно наступить и на асме. И если вы о них знаете, то костылять их будете одинаково что на сишечке, что на асме.

Кстати, 2 МГц у вас слизали, скорее всего, не конвейер, а синхронизация между разными шинами.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 73 ]  1, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y