|
|
  |
STM32F4: разница в скорости обращения при размещении массива в DRAM и в FLASH программ?, есть ли универсальный ответ что быстрее? |
|
|
|
Jun 13 2017, 12:56
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Ruslan1 @ Jun 13 2017, 14:07)  Ладно, понял, спасибо. Раз ответ на мой вопрос не такой однозначный как я думал- буду получать ответ локально. Вот смотрите - написал для Вас за 4 минуты нужный Вам тест  Код 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-битных последовательных чтений памяти. Всё!
|
|
|
|
|
Jun 13 2017, 13:16
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Уважаемы jcxz, спасибо! попробую. Но не нужно меня так буквально понимать, если я пишу что много чего не умею- это не значит, что я не знаю как протестировать  Хотя, конечно, до уровня ассемблера я не собирался спускаться в данном тесте.  Придется, значит, все-таки подключать железяку и смотреть живьем.
|
|
|
|
|
Jun 14 2017, 19:06
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Спасибо всем, кто откликнулся. Вопрос был неуместный, мне следовало смотреть "ширше", а я в частный буфер уперся. Когда начал анализировать, что мне собственно нужно с этим делать- получилось, что задача эта будет из самых низкоприоритетных, и общее время выполнения зависит уж совсем не от того, где я этот массив положу. Профайлинг показал, что общее время вычислений (не только чтение буфера, естественно) скачет от 16 до 69 миллисекунд (зависит от других задач с высокими приоритетами), тут хоть где размещу- разницы не увижу, так как другие задачи могут съесть сильно больше, чем собственно нужная мне обработка. Но на будущее спасибо, почерпнул кое-что для себя из дискуссии.
|
|
|
|
|
Jun 15 2017, 06:40
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(jcxz @ Jun 15 2017, 06:20)  Профайлинг у Вас неправильный. Нужно встать на начало измеряемого участка; поставить бряк на его конец; запретить прерывания; нажать кнопку Run в отладчике; когда остановится на бряке, посмотреть содержимое счётчика тактов. Вот и всё. А Вы температуру на Марсе меряете...  Я про то и говорю, что именно эта "температура на Марсе" мне и нужна будет в реальности, а не тики изолированной функции в лаборатории на столе. Ну, будет оно на 24микросекунды быстрей или медленней, как это скажется в условиях, когда общее время выполнения в реальных условиях из-за окружающих причин плавает на в 1000 раз бОльшие величины? Потому и написал, что "вопрос неуместный", то есть для меня не актуальный. Другими словами- информация о том, что при заливке вот этого бензина автомобиль сможет двигаться со скоростью 320 км/ч, а не 250, никак не изменит время моей поездки из А в Б в час пик по центру города. Исследование ради исследования?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|