Цитата(aaarrr @ Apr 13 2010, 01:46)

Пробовал когда-то - получилось, что исполнение из RAM немного (единицы %%) медленнее.
В общем, у меня получилось вот что.
Исполнялся вот этот код:
Код
volatile int arry_dest[20];
volatile int arry_src[20];
TIM2->CR1 = TIM_CR1_CEN;
for(int index = 0; index <10; index++) arry_dest[index] = arry_src[index];
TIM2->CR1 = 0;
lcd.PrintText("tacts: %u", 0, 0, NO_FLAGS, RGB_BLUE, TIM2->CNT);
после компиляции цикл выглядит так:
Код
;;;47 TIM2->CR1 = TIM_CR1_CEN;
MOVS r0,#1
LSLS r2,r0,#30
STRH r0,[r2,#0]
;;;48 for(int index = 0; index <10; index++) arry_dest[index] = arry_src[index];
LDR r1,|L4.56|
MOVS r0,#0
SUB r3,r1,#0x50
|L4.16|
LDR r4,[r1,r0,LSL #2]
STR r4,[r3,r0,LSL #2]
ADDS r0,r0,#1
CMP r0,#0xa
BLT |L4.16|
;;;49 TIM2->CR1 = 0;
MOVS r0,#0
STRH r0,[r2,#0]
STM32F103RET6, ядро на 72 МГц, 2 такта ожидания для флеш:
RAM - 116 тактов
FLASH - 122 такта
ядро на 24 МГц, 0 тактов ожидания флеш:
RAM - 116 тактов
FLASH - 75 тактов
Ну,
zltigo как обычно прав, озу проигрывает флехе на малой частоте. На большой - немного выигрывает.