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

 
 
> Выполнение кода из ОЗУ STM32F4, Хочу увеличить призводительность
Sekat
сообщение Sep 10 2013, 13:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Подскажите по SUBJ. Это реальный путь для STM32F4 повысить производительность?
С ходу попробовал разместить подпрограммку в ОЗУ - время выполнения осталось прежним. Я так понимаю, что число WaitStates автоматически не уменьшилось до 0. Есть ли какие элегантные способы для STM32F4 (кроме как установки числа WS вручную при входе в озушный код), с учетом многозадачной среды , с учетом того, что размещаемый код в общем случае может прерываться другими задачами не из ОЗУ, добиться требуемого результата?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
aaarrr
сообщение Sep 10 2013, 13:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Sekat @ Sep 10 2013, 17:07) *
Подскажите по SUBJ. Это реальный путь для STM32F4 повысить производительность?
С ходу попробовал разместить подпрограммку в ОЗУ - время выполнения осталось прежним.

У Flash в наличии две шины и ускоритель, у ОЗУ - одна. Так что результат примерно таким и должен быть. WS на ОЗУ не распространяются.
Go to the top of the page
 
+Quote Post
Sekat
сообщение Sep 10 2013, 14:19
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Цитата(aaarrr @ Sep 10 2013, 17:20) *
У Flash в наличии две шины и ускоритель, у ОЗУ - одна. Так что результат примерно таким и должен быть. WS на ОЗУ не распространяются.

Спасибо. Жаль, я рассчитывал...
Для информации по производительности, уж коль скоро такая тема была создана. Плата STM32F4 Discovery.
Реально из ОЗУ даже медленнее работает, чем из Flash. Не очень на много, но медленнее (примерно полпроцента). Далее установки для варианта выполнения программы из Flash. Кэш кода и данных включены, PRFTEN выключен. Включение последнего дает прирост производительности примерно 2%. Уменьшение WS с 4-х до 3-х (при этом еще работает) дает прирост производительности еще ~3%. Установить WS 2 не позволяет (уже не работает).
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 10 2013, 16:29
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Sekat @ Sep 10 2013, 17:07) *
Есть ли какие элегантные способы для STM32F4

Попробуйте замапить ОЗУ на нулевой адрес (SYSCFG_MEMRMP), должно стать быстрее. Да, ну и код выполнять из адресов 0x00******, а не 0x20******. Дело в том, что инструкции из 0x20****** идут в процессор через шину System Interface, в она вносит лишний такт задержки на каждую инструкцию и не умеет заглатывать две 16-битные инструкции в один присест, в отличие от шины ICode.
В мануале на процессор это расписано, и вот тут сегодня тоже обсуждалось.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 11 2013, 02:34
Сообщение #5


Гуру
******

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



Может просто - по-старинке - переписать критичные места на асме? sm.gif
Go to the top of the page
 
+Quote Post
LWW
сообщение Sep 14 2013, 09:36
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471



Задрать тактовую под 260 мгц и выполнить код из озу. Потом всё вернуть обратно..
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:30
Рейтинг@Mail.ru


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