[an error occurred while processing this directive]
Да, а убыстрение их функций (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SM 08 апреля 2004 г. 10:20
В ответ на: Согласен, только я имел в виду не это (+) отправлено Т34-85 08 апреля 2004 г. 10:08

по моему наблюдению происходит в основном из-за вживление в их недра своего параллельного кода. На примере той-же mthlib - там такая хренова туча NOP'ов в delay-слотах, что просто ужас. Вот Вам конкретный пример (функция rcpsp) - ну зачем тут ее вызывать из либы, если в нее можно вживить столько своей полезной функциональности??? Это копия из либы - я сюда ни одного изменения не вносил.


rcpsp .S1 A4,A5 ; x1 = 1/A4 [8-bits]

zero .L1 A3 ; two = 0

mpysp .M1 A4,A5,A6 ; tmp = arg1 * x1
|| mvkl .S1 0xff,A2 ; maximum exponent = 255

extu .S1 A4,1,24,A1 ; is exp1 = 0 ?

set .S1 A3,30,30,A3 ; two = 2.0 in SP FP (0x4000_0000)

xor .L1 A1,A2,A2 ; check for exp1=255=0xff

subsp .L1 A3,A6,A6 ; tmp = 2.0 - (arg1*x1)

nop 3

mpysp .M1 A5,A6,A5 ; x2 = x1*(2 - arg1*x1) [16-bits]

nop 3

mpysp .M1 A4,A5,A6 ; tmp = arg1 * x2

nop 3

[A2] subsp .L1 A3,A6,A6 ; tmp = 2.0 - (arg1*x2)

[!A2] zero .D1 A5 ; force xn=0 for exp=255=0xff

b .S2 b3 ; normal return

[!A2] zero .D1 A6 ; force tmp=0 for exp=255=0xff

[A1] mpysp .M1 A5,A6,A4 ; x3 = x2*(2 - arg1*x2) [32-bits]

nop 2

[!A1] set .S1 A4,0,30,A4 ; return exp/mant = all 1s (div.by 0)


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru