Цитата(Alex2172 @ Sep 12 2006, 12:07)

Возьмем к примеру LPC2148, 60МГц, программа выполняется из ОЗУ. Например FIR.
Сколько инструкций необходимо АРМу чтобы реализовать, например, умножение на коэффициент с накоплением (ну вобщем то же, что ADSP21xx делает за один такт)?
сложный вопрос - зависит от типа умножения (mla, s/umlal).
у ARM7 'early termination' умножитель и количество тактов на умножение зависит от типа второго операнда. Занимает от 3х до 5и тактов.
Так же необходимо помнить, что загрузка коэффициента занимает некоторое время:
- Если это просто умножение на один коэффициент - то нет проблем - он один раз загружается в регистр и все.
- Если (коэффициенты) нужно грузить из памяти, то это 3 такта на каждый коэффициент.
Например КИХ фильтр -
r1 - указатель на данные (32 бита)
r2 - коэффициенты
r3 - мл. байт резалта
r4 - старший
----------------
mov r0, #Number_of_coeff
loop:
ldr r5, [r1, #4]
ldr r6, [r2, #4]
smal r4,r3, r5, r6 ; [r4,r3] += r5*r6
subs r0, r0, #1
bne loop
----------------
Итого тактов:
3
3
5
1
3
== 15 на коэффициент