Как стать автором
Обновить

Комментарии 6

Спасибо. Нужная статья. Правда, есть некоторые сомнения в том, что на реальных «микроконтроллерных» проектах задействование кеша приведет к настолько сильному увеличению производительности, что перекроет издержки. Впрочем, задачи бываю разные. И знать такие вещи крайне желательно.
И еще (в качестве пожелания) — не увидел в статье есть ли (и если есть, то какая именно и как проявляется) зависимость включенного режима кеширования и применения инструкций эксклюзивного доступа (LDREX/STREX).
Правда, есть некоторые сомнения в том, что на реальных «микроконтроллерных» проектах задействование кеша приведет к настолько сильному увеличению производительности, что перекроет издержки. Впрочем, задачи бываю разные.


Согласен, все зависит от задачи. Я, кстати, хоть и рассказываю про микроконтроллеры ARM, а забыл упомянуть в каких сериях из линейки Cortex-M вообще есть кэш. Восполню это в комментарии. На сайте ARM есть сравнительная таблица «Cortex-M comparison table». Из нее видно, что D-Cache может быть только у Cortex-M7 и Cortex-M55, а у Cortex-M35P только I-Cache. А это же самые старшие процессоры из Cortex-M. У остальных моделей кэшей нет. Так что если кто-то выбирает какой-нибудь Cortex-M7 под свою задачу (а не Cortex-M0 или Cortex-M4), наверное что-то немаленькое запустить хочет, а там уже и кэш подключить можно.

И еще (в качестве пожелания) — не увидел в статье есть ли (и если есть, то какая именно и как проявляется) зависимость включенного режима кеширования и применения инструкций эксклюзивного доступа (LDREX/STREX).

Спасибо, действительно, в статье про это нет. Думаю что либо в комментарии, либо в будущем в статьях постараемся этот вопрос затронуть.
На скромном опыте, кэш в M4 отбивает до 30% быстродействия, в среднем, процентов 16.
Смотрел осциллографом, а-ля ZX-Spectrum по бордюру.
Но, внутренний шум выше, АЦП начинает врать минимум на 1 бит больше.
M4 это Cortex-M4? Интересно, а в нем разве процессорный кэш имеется?
А какие, собственно, издержки? Насколько я понимаю, если вынести буфера DMA в регион MPU c отключенным кешированием — в рантайме вообще ничего делать не нужно. Если STM32F7, как показано в этой статье, эффект кэширования не всегда хорошо заметен, то на STM32H7, с их высокими частотами, должен быть очень существенным. Кроме того, кэш команд позволяет, добавлением копеечной quadSPI flash, нарастить память программ дешевых контроллеров STM32H750 до 8..16 МБайт, и таким образом снабдить устройства на этих контроллерах развитым пользовательским интерфейсом — графическим, звуковым, и web.
Все так. Это был завуалированный вопрос о доступности кешей. Просто хотелось, чтоб автор сам написал. Что он и сделал. За что ему спасибо. Увы, только в форме ответа в комментариях (э-хе-хе...). Понятно, что строить очередную метеостанцию на старших Cortex-M пока (к счастью) желающих нет. А в чисто «управленческих» M0...M4 кеши отсутствуют.

Впрочем, признаюсь — у меня Cortex-M закончился на M4. Дальше были уже А-шки. Потому про возможности M7/H7 я мало что знаю. Отчасти потому и удивился и статье и комментарию чуть выше. Впрочем, кто его знает что понадобится завтра… Хотя… Скорее всего там, где мне не будет хватать M4-ого все так же останется A-шка. Мне кажется, что прикладное ПО лучше пишут прикладные программисты. Я слишком испорчен нехваткой ресурсов — в результате все мои прикладные вещи получаются немного странными… Хоть и работающими.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий