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

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

Отправлено SM 08 апреля 2004 г. 13:16
В ответ на: Ясно. Спасибо за информацию (+) отправлено Т34-85 08 апреля 2004 г. 13:07

Компилер не умеет для линейного кода применять конвейеризацию с повторным использованием регистров - то есть с запрещенными прерываниями когда. Циклы на ура строит такие. А линейный код - никак. Он его делает почти таким-же, каким был оригинал на С. Для примера я сделал вот так - цикл на 6 перемножений (в плавучке) развернул вручную (это предиктор одного канала), а затем на других переменных написал квантователь (сравнение с таблицей и выбор подходящего номера строки, но для другого канала) - тоже развернул. С-транслятор скомпилил сначала кучу умножений с NOP'ами, а затем поиск в таблице. Хотя невооруженным глазом видно, что эти две операции отлично ложатся в параллель друг с другом. Никакие перетасовывания С-исходника и прочие танцы с бубном не дают результата - чтоб оно что-то нужное запараллелило. На АСМе вручную это естественно удалось.

Про 64 не скажу - не работал. Но на компилер для 62/67 они не забивали вроде - 67-ая ветка не отжила вроде как свое, в отличие от 62-й.

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru