Flash vs SRAM

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Flash vs SRAM

Сообщение Z_h_e »

Доброго времени суток друзья.
Предлагаю пофилософствовать по поводу скорости выполнения кода из флеш и озу.

В этом топике, опытным путем я опровергнул свои рассуждения от том, что код в STM32 выполняется быстрее из флеш, чем из ОЗУ.

Тов. Reflector, провел свой эксперимент и он считает что код выполнится быстрее из флеш.

Я попробовал повторить эксперимент Reflectorа. Но слегка изменил его код.

Код: Выделить всё

	volatile uint64_t a = -1;
    while(1)
    {  
    	GPIOA->ODR^=1;//Инвертируем выход A0   
    	a /= 7;
    	a=-1;
    }
Частоту так же смотрел осциллом на порте, переменную а каждый раз переинициализировал, чтобы частота на выходе не скакала.

Тут уже и у меня из флеш стал код быстрее выполнятся.

Из флеш частота на порте 133кГц.
Изображение

Из ОЗУ 126кГц, т.е. чуток медленнее.
Изображение

В обоих случаях у меня МК stm32f103, оптимизация выключена.

На данный момент я делаю следующий вывод. Технически код выполняется из ОЗУ все же быстрее чем из флеш. Но если исполняемые команды активно оперируют данными из ОЗУ, то системная шина перегружается, что приводит к задержкам выборок инструкций. И можно сделать вывод (или предположить) что один код может выполняться быстрее во флеш, а другой в ОЗУ.

Кто что думает?
Вложения
ОЗУ.jpg
(53.67 КБ) 2065 скачиваний
из флеш.gif
(53.07 КБ) 1707 скачиваний
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Flash vs SRAM

Сообщение Reflector »

Еще одна проверка, на этот раз замерял скорость вывода строки текста(~150 символов)на LCD экран. Для F103 получил 1'845'419 / 1'892'254, для F429 - 444'147 / 651'920 тактов, все в пользу флеша.
Реклама
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Flash vs SRAM

Сообщение musor »

а что философствовать берем 2 штта и смотрим время доступа к конкретной ячейке даных там и там...
зря штоли в мобиле делают совмещеные RAM+Flashв обшем корпусе-много ног и места на плате экономим при паралелном доступе...про последователный говорить смысла нет это чисто внешний фэйс- для ввода выврода инфэрно
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Flash vs SRAM

Сообщение Z_h_e »

musor писал(а):а что философствовать берем
А не так все просто. Я ж говорю, один код у меня выполняется быстрее в ОЗУ, другой во флеш.

Добавлено after 1 minute 20 seconds:
Кроме того есть акселераторы и буфер предвыборки (забыл как он там правильно называется).
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Эиком - электронные компоненты и радиодетали
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Flash vs SRAM

Сообщение Reflector »

Ага, для F103 у меня тайминги для экрана ненормально большие стояли, видимо тестил и не поменял. Теперь стало 559'919 / 796'601, т.е. разница уже существенная и сравнима с F4.

Добавлено after 36 minutes 13 seconds:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3269434#p3269434"]В обоих случаях у меня МК stm32f103, оптимизация выключена.[/uquote]
А смысл выключать оптимизацию при проверке скорости? Я прогнал несколько тестов без оптимизации и действительно получил обратные результаты, в частности модификация твоего теста из RAM работала на ~1/5 быстрее, но с оптимизацией уже на 1/4 медленнее...
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Flash vs SRAM

Сообщение Z_h_e »

А какая разница включена она или нет? Лишь бы код был один и тот же и в ОЗУ и во Флеш.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Flash vs SRAM

Сообщение Reflector »

[uquote="Z_h_e",url="/forum/viewtopic.php?p=3269535#p3269535"]А какая разница включена она или нет?[/uquote]
Если посмотреть на тему из которой мы пришли и на тему в который ты первоначально проводил измерения, то там и там все крутилось вокруг получения максимального быстродействия, т.е. обычно изначально людей интересует можно ли выполнять код из RAM и что-то с этого поиметь. Отладочный код может быть медленнее в десятки и сотни раз, тот факт, что он при этом чуть быстрее при выполнении из RAM, может быть и несколько неожиданный, но достаточно бесполезный с точки зрения практического применения. Окончательный вариант будет оптимизирован, следовательно такой код и нужно сравнивать.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Flash vs SRAM

Сообщение Z_h_e »

Если обсуждать конкретную задачу то да. Если обсуждать возможности МК в целом, то без разницы. Тут может даже нужно ближе к ассемблеру быть, что бы видеть что МК делает.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Flash vs SRAM

Сообщение ARV »

Я, конечно, в ARM-ах понимаю меньше, чем свинья в апельсинах, но всеж-таки своим мнением поделюсь... Чисто умозрительно: RAM разделяется между различными периферийными устройствами, да хоть тем же DMA, и поэтому шина доступа к ней должна как-то арбитрироваться... flash, как я понимаю, использует только CPU для считывания опкодов, и поэтому арбитраж не требуется... Следовательно, априори из RAM будет медленнее исполняться... особенно при активном использовании периферийных устройств, работающих с RAM в обход CPU.

Глупость сморозил?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Flash vs SRAM

Сообщение Z_h_e »

Да вроде нет, логично.. Я тоже так считал, пока не получил обратное. Теперь имею два разных результата. Все же наверняка практически во всех случаях полезного варианта кода выполнение кода из флеш будет быстрее , хотя Аrm Arm'у рознь с их клубком шин.

Добавлено after 17 minutes 7 seconds:
flash, как я понимаю, использует только CPU
Сложнее там все. Физически гавардская архетиктура, логически неймоновская. Данные можно перегонять хоть куда, выполнять код тоже. Поди еще из перефирии можно :), но скорее всего произойдёт исключение. Я тоже очень далек от просветления дзен по арм. Но я к тому что специальная шина для выборки инструкций может быть задействована и под другое. Данные во Флеше тоже лежат, пишутся туда конечно редко
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: Flash vs SRAM

Сообщение Oxford »

Зачем uint64_t используете? Скриншоты ассемблера прикладывайте для оценки.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Flash vs SRAM

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3269623#p3269623"]Зачем uint64_t используете?[/uquote]
Нужно было на чем-то потестить, а одна простая операция 64-х битного деления трансформируется в достаточно тяжелый код, даже при наличии аппаратной поддержки.
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: Flash vs SRAM

Сообщение Oxford »

Это понятно, просто придется тогда разговаривать о 64 битной арифметике на 32 битной архитектуре.
Интересно посмотреть листинги что получается.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
AlphaLaiman
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Ср ноя 27, 2013 21:28:40
Откуда: Москва

Re: Flash vs SRAM

Сообщение AlphaLaiman »

Странно, что до сих пор никто не упомянул, что в STM32 есть опция подключения SRAM к более быстрым шинам Ibus и Dbus (так называемый ремаппинг, вместо адресов на 0х20000000 будут адреса на 0х00000000), а еще есть CCMRAM (адреса на 0х10000000)
Скорость выполнения в порядке возрастания:
1. Из RAM
2. Из RAM с ремаппингом (примерно также, как и Flash, плюс-минус такт)
3. Из Flash
4. Из CCMRAM (но эта опция есть только в STM32F3хх и STM32F7xx)
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: Flash vs SRAM

Сообщение Oxford »

У кортексов память фиксированная. А медленные шины это какие?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
AlphaLaiman
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Ср ноя 27, 2013 21:28:40
Откуда: Москва

Re: Flash vs SRAM

Сообщение AlphaLaiman »

[uquote="Oxford",url="/forum/viewtopic.php?p=3269679#p3269679"]У кортексов память фиксированная. А медленные шины это какие?[/uquote]
Медленная шина - это Sbus, к ней подключена периферия и по-умолчанию подключена SRAM (и только к ней).
В стмках есть регистр SYSCFG->MEMRMP, с помощью которого можно "повесить" SRAM на шины Ibus и Dbus. Обращение к ней будет идти в таком случае по адресам на 0х00000000. Но физически память конечно останется там же, где и была, и по адресам на 0х20000000 к ней тоже можно будет обращаться (например, для DMA)
ИзображениеИзображение
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: Flash vs SRAM

Сообщение Oxford »

Это Cortex M4 процессор. В Cortex M3 этого контроллера конфигурации нет. Я с M4 пока не работал.

Да все верно, там можно подключать внешнюю и внутреннюю память на шину данных. Плюс физическое подключение, например загрузка из внешней памяти (выбор типа памяти доступной по адресу 0x0000 0000)
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
AlphaLaiman
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Ср ноя 27, 2013 21:28:40
Откуда: Москва

Re: Flash vs SRAM

Сообщение AlphaLaiman »

[uquote="Oxford",url="/forum/viewtopic.php?p=3269698#p3269698"]Это Cortex M4 процессор. В Cortex M3 этого контроллера конфигурации нет. Я с M4 пока не работал.[/uquote]
Если не знаете точно, зачем спорить на пустом месте? В некоторых контроллерах на Cortex-M3 такая опция есть. И вообще, это фича конкретно STM32, а не Cortexов в целом.
Пожалуйста, вот на Cortex-M3 вам пример:
Изображение
И вот тут http://we.easyelectronics.ru/STM32/vypo ... v-iar.html например, есть про сравнение скоростей. Как раз на Cortex-M3.
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: Flash vs SRAM

Сообщение Oxford »

Если не знаете точно, зачем спорить на пустом месте? В некоторых контроллерах на Cortex-M3 такая опция есть. И вообще, это фича конкретно STM32, а не Cortexов в целом.
Пожалуйста, вот на Cortex-M3 вам пример:

Где я спорил? Не знаю точно что именно? В CorteX M3 контроллера конфигурации нет, это я точно знаю. Откройте мануал и покажите мне.
Пример чего приведен на картинке?
Последний раз редактировалось Oxford Ср дек 27, 2017 01:01:52, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
AlphaLaiman
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Ср ноя 27, 2013 21:28:40
Откуда: Москва

Re: Flash vs SRAM

Сообщение AlphaLaiman »

[uquote="Oxford",url="/forum/viewtopic.php?p=3269704#p3269704"]В CorteX M3 контроллера конфигурации нет. Откройте мануал и покажите мне.[/uquote]
Не во всех
http://www.st.com/content/ccc/resource/ ... 240193.pdf страница 219
Ответить

Вернуться в «ARM»