4.2.2. Буфер Flash памяти
Если рассмотреть системную архитектуру МК STM32, не трудно заметить, что ядро Cortex-M3 связано с внутренней Flash памятью посредством отдельной шины инструкций I-Bus. Данная шина работает на той же частоте, что и ЦПУ, поэтому, после активизации ФАПЧ ядро будет пытаться работать с ней с максимальным быстродействием (72 МГц). Поскольку, большинство операций ЦПУ Cortex выполняет за один период синхронизации, то доступ к Flash памяти будет осуществляться каждые 1.3 нс. Сразу после запуска МК STM32 синхронизируется внутренним генератором частоты 8МГц, поэтому, проблем с доступом к Flash памяти на этом этапе еще нет. Однако сразу после активизации блока ФАПЧ и выбора его в качестве источника синхронизации время доступа к Flash памяти окажется слишком большим (35 нс), чтобы ЦПУ Cortex могло работать с максимальным быстродействием. Чтобы ЦПУ могло работать на частоте 72 МГц без состояний ожидания в цикле доступа, у Flash памяти предусмотрен буфер упреждающей выборки, состоящий из двух 64-битных буферов. Каждый из этих буферов отвечает за считывание 64-битного слова из Flash памяти и дальнейшую передачу 16- или 32-битных инструкций в ЦПУ Cortex. Данный способ хорошо совместим с инструкциями условного перехода набора инструкций Thumb-2 и предсказанием переходов на конвейере Cortex. В ходе нормального функционирования МК, программисту не следует выполнять каких-либо особых действий с буфером Flash памяти. Однако перед выбором ФАПЧ в качестве основного источника синхронизации необходимо убедиться, что буфер Flash памяти активен. Управление буфером осуществляется через регистр управления доступом к Flash памяти. Помимо активизации буфера, также необходимо задать количество состояний ожидания, которое необходимо буферу предварительной выборки для считывания 8 байт инструкций из Flash памяти. Задержка выбирается следующим образом:
- 0< SYSCLK <24МГц 0 состояний ожидания
- 24< SYSCLK <48МГц 1 состояние ожидания
- 48<SYSCLK <72 МГц 2 состояния ожидания
Данные состояния ожидания действуют между буфером предварительной выборки и Flash памятью и не оказывают влияния на ЦПУ Cortex. После выполнения ЦПУ инструкции из первой части буфера, вторая его часть загружается, таким образом, чтобы выполнение кода осуществлялось непрерывно с оптимальным быстродействием.
|