ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
17 мая
160099
Evgeny_CD, Архитектор (27.06.2009 14:06, просмотров: 6761)
Архитектура Memory Hub - дальнейшее развития идей по многопроцессорным embedded системам. http://caxapa.ru/159385.html
Предыдущие обсуждения по теме "Но почему аборигены съели Кука? За что, неясно, молчит наука." Размышлизма выходного дня: DSP <-> FPGA, или на кой черт TI потребовались глюкавые Luminary? -> Вся обработка данных, которая происходит в embedded системах, может быть разбита на 4 группы: * пересыка * преобразование форматов (индейцы, упаковка/распаковка битовых полей и пр) * простая обработка * сложная обработка Простая обработка - это когда на вход поступает поток данных (или блок), и "преобразователь" на основе константных правил рожает выходной блок или поток. Шифрация, фильтрация, БПФ и пр. - это простая обработка. Сложная обработка - это когда для обработки данных нужна дополнительная информация, которая получается от других "обработчиков". Адаптивная фильтрация, маршутизация пакетов с учетом QoS и т.д. Как не трудно понять, в идеале первые 3 уровня обработки однозначно стоит возложить на FPGA, и простые процессоры внутри этой FPGA. А вот 4-й уровень - это да, тут вся мощь основного процессора и потребуется. В качестве базовой единицы данных выберем 4 кб блок (изготовители MMU процессоров, черти, были правы, когда выбрали этот размер как самый маленький) и его дексриптор, которрый живет в таком же 4к блоке. Дескриптор содержит ссылки на предыдущий и последующий блоки данных, начало полезных данных в основном блоке, длину этих данных и пр. Пусть у нас будет сервер, который по FTP раздает или принимает нечто на FLASH. Ethernet контроллер принял пакет, и аппаратура засосала его в 4 к блок и создала дескпиптор. Мелкий процессор анализирует структуру пакета, и разбирает его на поля, которые ложатся в декскрипитор удобной С структурой. Причем анализ может быть многоуровневым. Вначале мы выделили IP пакет, и сместили указатель на данные. Затем разобрали тип IP пакета, родили поля структуры в дексрипторе, и снова сместили указатель на данные блока. И так неколько раз. В варианте PPP пакета блок данных может быть заменен в процессе работы. Мелкий процессор (или аппаратная шняга) декодируют HDLC, пишут его в другой блок, в дескрипторе переставляют указатель на этот блок, а старый блок херят (ну или можно его хранить для отладки). После завершения доступного мелкому процу декодирования он пишет информацию в буфер пакетов, и переключается на другой пакет. Большой проц читает буфер, и дает команду - по DMA переслать мне дескрптор пакета вот туда. Важно, что при этом сами данные процессору не нужны. Получив дескриптор, процессор анализирует его (быстро, ибо все уже разобрано на С структуру) и принимает рашения. Быть может, ему нужны данные - там логин юзера был. Тогда он дает команду переслать данные. Но на порядки чаще они процу не нужны. Он создает новый дексриптор, который описывает в нужном ему стиле данные, быть может, частично ссылается на старый дексриптор, и передает это все файловой системе - типа, запиши мне это вот в такой файл. Разумеется, тут могут быть процессы восстановления порядка следования пакетов и пр. Файловая система передает задание своему мелкому процу - кучкуй данные вот отсюда в буфер, затем буфер запиши на FLASH, ну и предварительно прогони блок через шифрацию и ECC. Структура FPGA вполне понятна. SDRAM контроллер, ориентированный на пакетную пересылку (хорошо бы с интерливингом между банками), кучка блоков с FIFO на шине, ну и кучка мелких процов рядом с этими блоками. Программа для большого проца должна быть очень эффективной. Автоматное программирование самое то. В таком случае производительность (в байтах в сек) всей системы даже при скромной тактовой host проца будет на уровне максимального перфоманса сети и FLASH. Такая архитектура также позволяет сильно экономит энергию, ибо все ее части просты, имеют низкую тактовую, и при современных реалиях на ура упаковываются в 0.25 или 0.18 ASIC. Если разработать нормальную методологию проектирования такой шняги, то это будет не сложнее популярных подходов. А если писать в нотепаде - да, тогда оно никогда не заработает. Аппаратная реализация вполне реалистична - современный микроконтроллер с внешней шиной (можно и по SPI, но медленно), цены на FPGA начинаются от $10...15, SDRAM вообще ничего не стоит. Затраты на создание IP блоков будут чудовищны, но они однократны. По производительности с таким решением никакой самый продвинутый современный контроллер конкурировать не сможет. Только при отличии 3-4 порядка по технологии (допускаю, что 65 нм 1 ГГц ARM11 программно все сделает примерно с такой же скоростью, что и мы на Atmel SAM3 и Cyclone-III, но и то не факт - обманчивы они, эти гигагерцы по всем, что выходит за пределы кеша). По сравнению с "ARM11" на нашей стороне всегда будет перевес в гибкости, скорости разработки и относительно низкой стоимости при малых и средних тиражах. Критика идеи?