roboforum.ru

Технический форум по робототехнике.

Многопроцессорная вычислялка

Re: Многопроцессорная вычислялка

EIN_ENGEL » 13 янв 2011, 02:09

виртексы отпадают из-за стоимости.

в плисе дсп ядро это просто умножитель. Можно на них формулу собрать.

Re: Многопроцессорная вычислялка

Duhas » 13 янв 2011, 10:29

ну я лично не планировал бить процессы, по крайней мере динамично, между вычислителями.. по сути арбитр - ось, вычислители - процессы...

Re: Многопроцессорная вычислялка

WickedGoblin » 13 янв 2011, 11:58

EIN_ENGEL писал(а):в розницу:
137-й - 30 долларов,
138-й - 37.
мелким оптом - 28 и 31.
В России даже искать не хочу. Проще будет за ними самому слетать.


А наличие DSP на борту нужно?
Может без него но частоту побольше?

Re: Многопроцессорная вычислялка

EIN_ENGEL » 13 янв 2011, 12:42

это я не знаю. Кому как, мне лично очень желательно, поэтому от себя предлагаю спаренный вариант АРМ + ДСП.

По идее АРМ с операционкой должен стоять на материнке, а вычислительные блоки только очень быстро считают. Я бы вообще взял один ДСП, но для большей универсальности пусть будет комбинированный.


Круг задач нужно поставить почётче.

Re: Многопроцессорная вычислялка

WickedGoblin » 13 янв 2011, 12:52

Обще теоретический но важный вопрос. Учитывая что стандартных шин межпроцессорного взаимодействия нет.
Как это взаимодействие видится?
Железный уровень и не плохо бы примерно представлять программный?

Re: Многопроцессорная вычислялка

Duhas » 13 янв 2011, 13:03

железный пока описать не могу.. думаю..

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

модуль ввода - только отдает + может делать некоторую преобработку - хозяин барин...

модуль вывода - берет, обрабатывает выводит.. к примеру тот же модуль синтеза речи.. иль еще чего..

также можно и между модулями организовать обмен, при том возможно что запросы на передачу прием буду проходить через арбитра, а не на прямую...

как я вижу работу всего этого, применительно, например, к СТЗ: с камеры по некоторому интерфейсу приходит картинка, модуль ввода добавляет служебную информацию, например время текущее.. и отдает ее либо арбитру, который собирает данные в свою память, а потом раздает вычислительным модулям.. итак - у арбитра есть кадр, или та же стереопара, он отдает ее нескольким вычислителям, один ищет особые точки, другой производит 3Д реконструкцию на низком разрешении, третий детализирует части карты глубины на высоком разрешении ну и так далее...

то есть при запуске системы каждому модулю определяется его роль, области памяти в которых лежат его ресурсы у арбитра и прочее..

Re: Многопроцессорная вычислялка

EIN_ENGEL » 13 янв 2011, 14:54

по железному уровню - параллельная шина 32-64 бит. От арбитра к каждому вычислительному модулю отдельная. И так же между смежными модулями. Плюс я бы из каждого модуля вывел шину просто наружу, чтобы можно было подключить внешний ввод-вывод.
Нужно почитать даташит на потенциально подходящие процессоры, как в них сделано чтение из параллельного порта. И как обеспечить синхронизацию всех модулей.

Получается процессор с оперативной памятью и СПИ-флешкой, из него идёт 32 бита на арбитр шины, 32 соседу справа, 32 соседу слева и 32 (или всё что останется) просто наружу. Причём нужно предусмотреть чтобы на тех ногах, которые идут просто наружу оказались внешние интерфейсы: USB, Ethernet....

На этот наружний интерфейс можно подвесить большую флешку, камеру и прочее...

Каждый вычислительный модуль как законченное изделие с возможностью автономной работы. То есть всё как полагается: питание, джейтаг... Пусть дороже будет за счёт индивидуальных стабилизаторов на каждой плате, но зато универсально. Таких вычислительных модулей несколько вариантов разной производительности и стоимости. Соответственно с урезанием шин и прочего.
Сами платки с плотным монтажом 0402 для минимизации габаритов.

Вообще где-то я уже такое видел :) .

В материнке:
Арбитр шины - пока никаких идей, кроме ПЛИС. Какой-нибудь Спартан-6 с подходящим количеством ног и ценой. Есть мысли по этому поводу?
На ПЛИС повесить пару модулей оперативной памяти. Но вообще использовать её только как коммутатор между вычислительными блоками. То есть свести к минимуму обращение к её памяти, чтобы не делать узких мест.
Всем этим делом управляет АРМ с операционкой и возможностью подключения человеческого интерфейса (клава, мышка, мониторчик, звук).
От АРМа к ПЛИС тоже параллельный интерфейс для передачи данных.
Также от АРМа к ПЛИС и вычислительным модулям последовательный интерфейс (СПИ, ЮАРТ, И2С) для загрузки прошивок.



Пока вижу как-то так.

Re: Многопроцессорная вычислялка

WickedGoblin » 13 янв 2011, 16:03

Duhas писал(а):железный пока описать не могу.. думаю..

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

модуль ввода - только отдает + может делать некоторую преобработку - хозяин барин...

модуль вывода - берет, обрабатывает выводит.. к примеру тот же модуль синтеза речи.. иль еще чего..

также можно и между модулями организовать обмен, при том возможно что запросы на передачу прием буду проходить через арбитра, а не на прямую...

как я вижу работу всего этого, применительно, например, к СТЗ: с камеры по некоторому интерфейсу приходит картинка, модуль ввода добавляет служебную информацию, например время текущее.. и отдает ее либо арбитру, который собирает данные в свою память, а потом раздает вычислительным модулям.. итак - у арбитра есть кадр, или та же стереопара, он отдает ее нескольким вычислителям, один ищет особые точки, другой производит 3Д реконструкцию на низком разрешении, третий детализирует части карты глубины на высоком разрешении ну и так далее...

то есть при запуске системы каждому модулю определяется его роль, области памяти в которых лежат его ресурсы у арбитра и прочее..


Т.е. одним словом RPC

Добавлено спустя 15 минут 37 секунд:
EIN_ENGEL писал(а):по железному уровню - параллельная шина 32-64 бит. От арбитра к каждому вычислительному модулю отдельная. И так же между смежными модулями. Плюс я бы из каждого модуля вывел шину просто наружу, чтобы можно было подключить внешний ввод-вывод.
Нужно почитать даташит на потенциально подходящие процессоры, как в них сделано чтение из параллельного порта. И как обеспечить синхронизацию всех модулей.

Получается процессор с оперативной памятью и СПИ-флешкой, из него идёт 32 бита на арбитр шины, 32 соседу справа, 32 соседу слева и 32 (или всё что останется) просто наружу. Причём нужно предусмотреть чтобы на тех ногах, которые идут просто наружу оказались внешние интерфейсы: USB, Ethernet....

На этот наружний интерфейс можно подвесить большую флешку, камеру и прочее...

Каждый вычислительный модуль как законченное изделие с возможностью автономной работы. То есть всё как полагается: питание, джейтаг... Пусть дороже будет за счёт индивидуальных стабилизаторов на каждой плате, но зато универсально. Таких вычислительных модулей несколько вариантов разной производительности и стоимости. Соответственно с урезанием шин и прочего.
Сами платки с плотным монтажом 0402 для минимизации габаритов.

Вообще где-то я уже такое видел :) .

В материнке:
Арбитр шины - пока никаких идей, кроме ПЛИС. Какой-нибудь Спартан-6 с подходящим количеством ног и ценой. Есть мысли по этому поводу?
На ПЛИС повесить пару модулей оперативной памяти. Но вообще использовать её только как коммутатор между вычислительными блоками. То есть свести к минимуму обращение к её памяти, чтобы не делать узких мест.
Всем этим делом управляет АРМ с операционкой и возможностью подключения человеческого интерфейса (клава, мышка, мониторчик, звук).
От АРМа к ПЛИС тоже параллельный интерфейс для передачи данных.
Также от АРМа к ПЛИС и вычислительным модулям последовательный интерфейс (СПИ, ЮАРТ, И2С) для загрузки прошивок.

Пока вижу как-то так.


Т.е. схема одним словом "матричный процессор" http://comp.vslovar.org.ru/555.html

Вот правда 32х4 = 128 это уже круто и это без учета управляющих сигналов. Такое разводить или очень сложно или скорости будут маленькие.
IMHO лучше на эту плату поставить саму слабую ПЛИС для которая бы могла скажем в минимуме делать фулдуплекс двухсторонние преобразование serial (внешний интерфейс) <-> parallel (внутренний интерфейс к CPU).
Хотя опять же приходим к старым баранам или ethernet или pci-e

В таких системах есть существенный момент необходимо чтобы вычислительные модули успевали подгружаться и выгружаться данными и не простаивали.

Добавлено спустя 21 минуту 47 секунд:
Нас опередили :(
http://www.toradex.com/Products/Colibri_Modules

Тут тогда действительно встанет вопрос только что можно предложить в качестве мамы-свича...

Re: Многопроцессорная вычислялка

EIN_ENGEL » 13 янв 2011, 20:26

а что такого сложного в 6 слоёв развести 128 ног? Один слой земля, один питание и целых 4 на сигналы. Управляющие сигналы можно передавать по той же шине. Например, переключая её в разные режимы одной дополнительной ножкой. Можно и прошивать по этой шине.

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


Вообще можно поэкспериментировать. У меня сейчас есть 3 платы с ДСП C6745 от ТИ. В начале темы выкладывал фотку. Работают, грузятся. Есть плата на 3-м Спартане. И ещё клон БиглБорда на ОМАПе 3530, в нём АРМ и ДСП.
Всё собрать в кучу и посмотреть, как будет работать, правда не знаю, смогу ли найти время на это.

Re: Многопроцессорная вычислялка

Duhas » 13 янв 2011, 21:27

EIN_ENGEL, а не жирно будет от каждого к каждому ? а если вычислителей 20? 30?


может протянуть до арбитра 4х32 / 2х64 шину ?

Re: Многопроцессорная вычислялка

EIN_ENGEL » 13 янв 2011, 21:59

а если 1000000, 2000000?
Я думаю, больше 6 смысла нет ставить, а то и 4-х достаточно. Дальше уже начинается ничем не оправданная фантастика, лучше купить видеокарту.
Не от каждого к каждому, а только к ближайшему соседу.

Можно протянуть и одну на 16, но у нас сейчас модно бороться с пробками, а не создавать их. :)

Re: Многопроцессорная вычислялка

Duhas » 13 янв 2011, 22:06

я говорил про от каждого проца к арбитру..

от арбитра несколько веревок, а уже соседние вычислители между собой...

Re: Многопроцессорная вычислялка

EIN_ENGEL » 13 янв 2011, 22:24

так ты сам написал, что арбитр будет раздавать данные модулям. Если всё делать по одной шине, то система будет сильно зависеть от задачи. В задачах с интенсивными вычислениями, но малым потоком оно сработает. Чуть поток повысится и сразу упадёт производительность.

Такая конфигурация возможна только на ПЛИСе, потому что в ней всё происходит параллельно и независимо.
Можно конечно всё сделать и на одной общей шине, но соответственно скорость упадёт во столько раз, сколько вычислительных модулей.

Если от плисы откажемся, то так и придётся делать.

Re: Многопроцессорная вычислялка

Duhas » 14 янв 2011, 07:35

тогда можно делать так - на одну плисину на материнке встает, допустим, до 10 модулей, далее такие материнки мона тоже объединять.. т.е. предусмотреть шину пошире и поскоростнее между плисинами

Re: Многопроцессорная вычислялка

EIN_ENGEL » 14 янв 2011, 09:02

а смысл объединять материнки?
Это уже выходит за рамки эксперимента для "попробовать". Получается гонка за производительностью, в которой нет никаких шансов.
Для задач, в которых может потребоваться такая производительность уже разумнее купить готовый вычислитель.


Rambler\'s Top100 Mail.ru counter