Цитата
Да, я зафиксировал такой эффект.
Но именно Dhrystone и Whetstone меняли свои результаты не более чем на 1%
А вот простой цикл (ниже) от простого смещения на 8 байт дает изменение результата на 20% !
;-------------------------------------------------------------------------------------------------------------
; Задержка на (t+1)*10 тактов
;-------------------------------------------------------------------------------------------------------------
us_Delay
MOV R1,#0
B label1
label2
NOP
NOP
NOP
NOP
NOP
ADD R1,R1,#1
label1
CMP R1,R0
BLT label2
BX LR
Причем откдючение Branch cache на полученные пропорции влияния не оказывает.
И именно смещение на 8-ь байт дает худший вариант.
Однозначно что-то с burst FLASH намутили.
(sergvks @ Jul 31 2007, 15:59)
Попробуйте поэкспериментировать на Whetstone, если добавлять просто NOPы в стартап результат начинает прилично меняться,
хотя никаких memcpy там нет.
Ничего нет тут странного, и то что результат аж 20% это нормально и burst FLASH тут не причем, во всем виноват конвеер

, команда BLT label2 и BX очисчает конвеер, и вот в каком месте он очистится, точнеее какие даные уже загружены в конвеере от этого и зависит производительность. Тоесть если вы хотите сделать точную задержку в тактах или посчитать сколько тактов уходит на функцию,на ядрах с конвеером забудьте ! точность приблизительно равна T = кол-во переходов * размер конвеера. вот и получите +- T тактов. Это если несчитать всяких колpий на шинах, особенно когда работает ПДП если он есть

.