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

 
 
 
Reply to this topicStart new topic
> Скорость выполнения кода из флеша и ОЗУ у Cortex-M3
pirx
сообщение Aug 12 2013, 09:50
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 12-08-13
Пользователь №: 77 884



С одной стороны у Cortex-M3 при выполнении кода из ОЗУ для выборки команд и данных будет использоваться лишь одна шина.
Но с другой стороны на больших тактовых частотах приходится включать дополнительную задержку перед чтением из флеша (для STM32F103 два периода тактовой частоты при 48 MHz < SYSCLK <= 72 MHz, если я правильно понял даташит).
Будет проигрыш или выигрыш в скорости при размещении кода в ОЗУ?
Проверить на практике мне затруднительно – нужно разбираться со скриптами линкера и прочим.
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Aug 12 2013, 10:23
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
Но с другой стороны на больших тактовых частотах приходится включать дополнительную задержку перед чтением из флеша
там есть prefetch buffer, при включении которого задержка флеша нивелируется:
Цитата
"Prefetch buffer (2 x 64-bit blocks): it is enabled after reset; a whole block can be
replaced with a single read from the Flash memory as the size of the block matches the
bandwidth of the Flash memory. Thanks to the prefetch buffer, faster CPU execution is
possible as the CPU fetches one word at a time with the next word readily available in
the prefetch buffer"


Сообщение отредактировал ukpyr - Aug 12 2013, 10:27
Go to the top of the page
 
+Quote Post
Flexz
сообщение Aug 12 2013, 10:26
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Учитывайте что у флешки в этих МК широкая шина и за один цикл обращения считывается ЕМНИП 128 бит, применительно к F103. Поэтому простой линейный код не страдает от расположения во фшелке. А вот с ветвящимся не так однозначно, с одной стороны при ветвлениях будет возникать задержка по обращению к флешу (если код во флешке), а с другой - ветвящийся код обычно активно работает с данными, поэтому задержка будет возникать и на шине данных (если код в озу), а если с оперативкой еще и DMA контроллер работает - будет только хуже.

Так что пишите код во флешку и не заморачивайтесь.
Go to the top of the page
 
+Quote Post
kan35
сообщение Aug 15 2013, 16:16
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



У STM32F2 и STM32F4 есть еще кэш, называемый ART. Он разделен на кэш инструкций и кэш данных, предсказывает ветвления. Заявляется что 99% кода выполняется с 0-м waitstate.
Go to the top of the page
 
+Quote Post

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

 


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


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