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

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

Отправлено Pavel-99 14 декабря 2004 г. 12:53
В ответ на: И про приоритеты хост-порта (+) отправлено SM 14 декабря 2004 г. 12:21

Ни в одном TI DSP (С3x/C4x/C5xxx/C6xxx) доступ (timeslot) для HPI-порта страшно зависит от кода DSP. Так, если код "straightforward" (т.е. без BRANCH), то ни HPI, ни DMA не получат доступ вообще до тех пор, пока не произойдет "pipeline break" в момент BRANCH. А вот именно так и работают все высокооптимизированные приложения/коды, в которые люди вкладывают основные усилия. Если при этом нужно все-таки дать время для HPI/DMA, чтобы удовлетворить потребности параллельной передачи, то в "straightforward" код искусственно вставляют BRANCH +1, т.е. переход на след инструкцию, чтобы DSP-kernel сделал pipeline-break и HPI/DMA получил timeslot на исполнение.

Вы ошибаетесь насчет халявы и приоритета CPU-DMA для С64xx. Да, в С64хх есть такая возможность, но это вещь работает только в момент "pipeline break" или при окончании работы очередного DMA-канала, или при большем приоритет ядра позволяет разрывать потоки DMA, т.е. только в момент арбитража, а никак не в любой момент времени в ходе исполнения кода. Так, если процессор исполняет "straightforward" код без BRANCH, то арбитраж и DMA все будут стоять и ждать пока kernel не соизволит сделать pipeline-break, а это, как понимаете, сильно зависит от конкретного приложения. Здесь надо быть страшно осторожным, иначе можно и обработать не успесть и данные не ввести.

Еще оди момент с HPI/DMA, когда они хотят залезть на внешнюю шину C6x. Здесь еще большие проблемы, связанные с 32-/64- битностью внешней шины и ее меньшей скоростью (для С64хх в 6..10раз медленнее, чем ядро). Так вот, если процессор при этом лезет на туже внешнюю шину и берет/кладет данные туда, а еще пуще, если пространство это асинхронное (например внешний интерфейс, контр.регистры и т.п.) или процессор исполняет код оттуда, то HPI/DMA будут полностью стоять намертво до тех пор, пока ядро не займется чем-нибудь иным.

В общем, это длинная песня, C6x (как и любой другой процессор класса MIMD/VLIW) кажется простым и красивым только пока с ним не непосредственно не работаешь. Как только начинаешь работать, то всплывает то там то тут. Вещь на самом деле классная, особенно C64xx, но только если с ней правильно работать и хотеть от нее не больше того, что она может. А вот самое главное как раз и есть понять - что он может... В-общем, можно рассказывать бесконечно... (на целое собрание сочинений)...

На сем закругляюсь на эту тему, а то дело стоит.

С уважением,
Павел

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru