Перейти к содержанию
    

Скорость выполнения кода из флеша и ОЗУ у Cortex-M3

С одной стороны у Cortex-M3 при выполнении кода из ОЗУ для выборки команд и данных будет использоваться лишь одна шина.

Но с другой стороны на больших тактовых частотах приходится включать дополнительную задержку перед чтением из флеша (для STM32F103 два периода тактовой частоты при 48 MHz < SYSCLK <= 72 MHz, если я правильно понял даташит).

Будет проигрыш или выигрыш в скорости при размещении кода в ОЗУ?

Проверить на практике мне затруднительно – нужно разбираться со скриптами линкера и прочим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но с другой стороны на больших тактовых частотах приходится включать дополнительную задержку перед чтением из флеша
там есть 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Так что пишите код во флешку и не заморачивайтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...