Evgeny_CD, Архитектор (16.08.2011 18:34, просмотров: 9251)
Развитие идеи микросеквенсеров. А что если сделать так? Вот есть у нас SDRAM. Контроллер работает только блоками.
Есть ОДИН банк памяти. Двухпортовой. С одной стороны его заливают/отливаю в SDRAM.
С другой стороны стоит большой мультиплексор, который все хозяйство делит на несколько машинок.
Внутри блочной памяти находится программа и данные для кучки секвенсоров. Секвенсоры такие:
* пересылка данных. Между блочной памятью и SDRAM. Управляет контроллером SDRAM.
* DSP MAC блок: типа возьми вон там операнд, вот тут операнд, сделай то-то, положи результат туда-то.
Вся обработка разделена на слои. Типа вот набор данных и махонькие проги для обработки.
Есть система железных семафоров. Для локальной синхронизации и определения - все ли отработали?
Сложность разработки микропрограмм велика (отладка вообще никак - токо на моделях), не спорю, но можно осоздать удоьбные тулзы для помощи такой работы.
Но, как я понимаю, экономия ресурсов плиски может получить очень даже недетская. Никаких супер-шин.
При внутрикристальной тактовой 200 Мгц все будет не так уж и медленно.
Пусть у нас 4 сервенсера. При хороших мультиплексорах это даст 50 мгц на машинку. Пусть каждая операция занимает 4 такта: возьми операнд, возьми операнд, сделай, положи результат. 12,5 MOPS это не плохо, с учетом того, что 4 машинки дадут 50 MOPS.
Причем мопсы эти могут быть достаточно серьезными. Одна машинка фильтрует, другая FFTшит, третья чего-нибудь ищет, четвертая хитро по памяти раскладывает. Обычный проц с тактовой 100 Мгц может и не успеть такое сделать, притем ресурсов он пожрет несоизмеримо больше.
Вопрос в качественной среде для ОДНОВРЕМЕННОЙ разработки кучи кода для кучи машинок. Это в обычном редакторе не сделать :)