Предлагаю пофилософствовать по поводу скорости выполнения кода из флеш и озу.
В этом топике, опытным путем я опровергнул свои рассуждения от том, что код в STM32 выполняется быстрее из флеш, чем из ОЗУ.
Тов. Reflector, провел свой эксперимент и он считает что код выполнится быстрее из флеш.
Я попробовал повторить эксперимент Reflectorа. Но слегка изменил его код.
Код: Выделить всё
volatile uint64_t a = -1;
while(1)
{
GPIOA->ODR^=1;//Инвертируем выход A0
a /= 7;
a=-1;
}Тут уже и у меня из флеш стал код быстрее выполнятся.
Из флеш частота на порте 133кГц.
Из ОЗУ 126кГц, т.е. чуток медленнее.
В обоих случаях у меня МК stm32f103, оптимизация выключена.
На данный момент я делаю следующий вывод. Технически код выполняется из ОЗУ все же быстрее чем из флеш. Но если исполняемые команды активно оперируют данными из ОЗУ, то системная шина перегружается, что приводит к задержкам выборок инструкций. И можно сделать вывод (или предположить) что один код может выполняться быстрее во флеш, а другой в ОЗУ.
Кто что думает?






