реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32F4: разница в скорости обращения при размещении массива в DRAM и в FLASH программ?, есть ли универсальный ответ что быстрее?
Ruslan1
сообщение Jun 13 2017, 08:11
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



есть STM32F429. И внешняя SDRAM, подключенная по 16-битной шине.
Нужно часто читать из массива 4-байтные величины (коэффициенты оконной функции). Где лучше разместить этот массив: в SDRAM или во FLASH программ, насколько велика разница?
Всегда ли это однозначно (XX быстрее чем YY), или все-таки нужно считать текущую времянку в соответствии с настройками шин?

Сейчас во флэше и все устраивает, но в будущем хочется просто генерировать массив после включения и класть в SDRAM, мне так удобнее, вот только про быстродействие непонятно.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 13 2017, 08:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ Jun 13 2017, 10:11) *
Всегда ли это однозначно (XX быстрее чем YY), или все-таки нужно считать текущую времянку в соответствии с настройками шин?

Зависит от частоты шины к SDRAM, наличия кеша флешь и др.
А в чём проблема просто померить варианты тот и тот? Минутное дело, сюда вопрос дольше писать. wink.gif
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jun 13 2017, 08:47
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(jcxz @ Jun 13 2017, 10:15) *
Зависит от частоты шины к SDRAM, наличия кеша флешь и др.
А в чём проблема просто померить варианты тот и тот? Минутное дело, сюда вопрос дольше писать. wink.gif

у меня могозадачка и много чего там крутится, запросто могу промахнуться при разовом тесте и измерить необъективно из-за того что оно что-то начало делать более приоритетное и ресурсоемкое. Думал мне просто скажут- все ежи однозначно бегут вот сюда, все уже разжевано и доказано sm.gif.
Ну и лень, опять же....
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 13 2017, 11:41
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ Jun 13 2017, 10:47) *
у меня могозадачка и много чего там крутится,

И запрещать прерывания тоже не умеете??
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jun 13 2017, 12:07
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(jcxz @ Jun 13 2017, 13:41) *
И запрещать прерывания тоже не умеете??

Я много чего не умею, чем дольше живу-тем больше всего не умею.

Ладно, понял, спасибо. Раз ответ на мой вопрос не такой однозначный как я думал- буду получать ответ локально.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 13 2017, 12:24
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я представляю, выбрать константу из памяти - далеко не единственная операция с использованием оконной функции. Вот если бы можно задать выбирать эти константы с упреждением, тогда, вообще было бы все равно, откуда. Можно ли?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 13 2017, 12:56
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ Jun 13 2017, 14:07) *
Ладно, понял, спасибо. Раз ответ на мой вопрос не такой однозначный как я думал- буду получать ответ локально.

Вот смотрите - написал для Вас за 4 минуты нужный Вам тест laughing.gif
Код
PUBLIC f1
f1: CPSID I
     MOVS R1, #250
f1_1: LDMIA R0!, {R2-R4,R12}
     LDMIA R0!, {R2-R4,R12}
     LDMIA R0!, {R2-R4,R12}
     LDMIA R0!, {R2-R4,R12}
     SUBS R1, R1, #1
     BNE f1_1
     CPSIE I
     RET

Объявляете его как:
extern "C" void f1(void const *);
Вначале вызываете с адресом в SDRAM, потом - во флешь. Смотрите сколько тактов получилось. Сравниваете.
Код выполняет 4000 32-битных последовательных чтений памяти.
Всё!
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jun 13 2017, 13:16
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Уважаемы jcxz, спасибо!
попробую.

Но не нужно меня так буквально понимать, если я пишу что много чего не умею- это не значит, что я не знаю как протестировать sm.gif

Хотя, конечно, до уровня ассемблера я не собирался спускаться в данном тесте. sm.gif
Придется, значит, все-таки подключать железяку и смотреть живьем.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 13 2017, 17:06
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



У вас же есть 16 К core coupled memory. Быстрее сложно придумать.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jun 14 2017, 19:06
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Спасибо всем, кто откликнулся.
Вопрос был неуместный, мне следовало смотреть "ширше", а я в частный буфер уперся.
Когда начал анализировать, что мне собственно нужно с этим делать- получилось, что задача эта будет из самых низкоприоритетных, и общее время выполнения зависит уж совсем не от того, где я этот массив положу.
Профайлинг показал, что общее время вычислений (не только чтение буфера, естественно) скачет от 16 до 69 миллисекунд (зависит от других задач с высокими приоритетами), тут хоть где размещу- разницы не увижу, так как другие задачи могут съесть сильно больше, чем собственно нужная мне обработка.
Но на будущее спасибо, почерпнул кое-что для себя из дискуссии.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 15 2017, 04:20
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(jcxz @ Jun 13 2017, 14:56) *
Вот смотрите - написал для Вас за 4 минуты нужный Вам тест laughing.gif

Там конечно не RET, а BX LR нужен. Запутался совсем с этим STM8 wacko.gif

Цитата(Ruslan1 @ Jun 14 2017, 21:06) *
Профайлинг показал, что общее время вычислений (не только чтение буфера, естественно) скачет от 16 до 69 миллисекунд (зависит от других задач с высокими приоритетами),

Профайлинг у Вас неправильный. Нужно встать на начало измеряемого участка; поставить бряк на его конец; запретить прерывания; нажать кнопку Run в отладчике; когда остановится на бряке, посмотреть содержимое счётчика тактов. Вот и всё. А Вы температуру на Марсе меряете... laughing.gif
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jun 15 2017, 06:40
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(jcxz @ Jun 15 2017, 06:20) *
Профайлинг у Вас неправильный. Нужно встать на начало измеряемого участка; поставить бряк на его конец; запретить прерывания; нажать кнопку Run в отладчике; когда остановится на бряке, посмотреть содержимое счётчика тактов. Вот и всё. А Вы температуру на Марсе меряете... laughing.gif


Я про то и говорю, что именно эта "температура на Марсе" мне и нужна будет в реальности, а не тики изолированной функции в лаборатории на столе. Ну, будет оно на 24микросекунды быстрей или медленней, как это скажется в условиях, когда общее время выполнения в реальных условиях из-за окружающих причин плавает на в 1000 раз бОльшие величины? Потому и написал, что "вопрос неуместный", то есть для меня не актуальный.

Другими словами- информация о том, что при заливке вот этого бензина автомобиль сможет двигаться со скоростью 320 км/ч, а не 250, никак не изменит время моей поездки из А в Б в час пик по центру города. Исследование ради исследования?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 14:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016