Продолжительность инструкции LDR на STM32H7 в зависимости от памяти - PullRequest
2 голосов
/ 14 июня 2019

Я делаю некоторые оценки на STM32H7, на плате STM32H753I-EVAL2. Я использовал пример кода STMicro для настройки, записи и чтения QSPI Flash в режиме отображения памяти.

Меня удивили некоторые цифры относительно продолжительности обучения LDR:

  • Я измеряю количество циклов инструкций с помощью SysTick (подключен к тактовой частоте процессора). Насколько я понял: один цикл SysTick = один цикл CPU.

  • Я измерил две абсолютно идентичные инструкции ldrb.w Rn, [Rp, Rq] за исключением того, что в одном случае Rp является адресом в DTC-RAM, а в другом - адресом в QSPI Flash.

Результаты (код, выполненный из внутренней флэш-памяти): 15 циклов из DCTM-RAM, 12 циклов из QSPI.

Я удивлен результатами, я полагаю, что содержимое QSPI, если оно кэшировано, может объяснить цифры?

Также я считаю, что 15 циклов для одной инструкции LDR кажутся довольно значительными, как вы думаете? Что-то не так в моей процедуре?

1 Ответ

0 голосов
/ 14 июня 2019

Если внутренняя флэш-память не кэширована, или кеш недействителен, или конвейер был очищен или ... (многие другие), это может занять больше времени, чем инструкция, расположенная во флэш-памяти QSPI.

Для измерения времени выполнения у вас есть специальные регистры.

...