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

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

Отправлено fontp 07 сентября 2004 г. 11:31
В ответ на: подождите. чуть ли не единственным плюсом, который я видел за 6-тысяниками - это высокая оптимизация C/C++. На самом деле всё не так? Приходится писать руками? отправлено под дурачка 07 сентября 2004 г. 10:57

т.е. если на С то нужно писать, а не портировать готовый код

1. Стараться структурировать код на небольшие модули, по одному циклу
на модуль
2. По возможности убирать условные операторы и операторы перехода из
циклов, они разрушают конвейер или вроде того, один условный оператор
обычно можно пристроить (к-во условных регистров ограничено, причём один из них уже является счётчиком цикла)
3. Руками делать unfolding (оптимизатор делает плохо) циклов, чтобы загрузить оба ядра
4. Если использовать библиотеки примитивов, то обязательно делать их inline-функциями, call разрушает конвейер однозначно

Есть ещё одна не очень приятная особенность архитектуры - процессор не может восстановить контекст после прерывания. А по этому во время выполнения циклов ВСЕ прерывания запрещены автоматически (лэтчатся). Но надеюсь, что Вы не доберётесь до частот, когда это фатально

Всё равно на С проще писать и документировать. Представляете себе читаемость кода на параллельном ассемблере? В действительности это на уровне проектирования ПЛИС или микропрограммирования , это не есть программа в нормальном понимании

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru