|
2-ух ядерный Nios II, написание сфота под нее |
|
|
|
Feb 25 2009, 04:56
|
Участник

Группа: Участник
Сообщений: 61
Регистрация: 11-11-08
Пользователь №: 41 522

|
Цитата(dim99 @ Feb 24 2009, 18:40)  Имеется: Quartus 8.0 Nios II 8.0 IDE
В SOPC Buider сгенерил систему с 2-мя ядрами nios ii с общей памятью sram, для разделения использую mutex от altera.
Проблема заключается в компиляции проекта в nios ide, а именно при компиляции совместно двух проектов для разных ядер. Может кто сталкивался с 2-мя ядрами, есть ли пример для них? буду благодарен за любую помощь. А можно поинтересоваться где у Altera на сайте описано как работает процессор Nios-II с двумя ядрами? И опять же где описано как два ядра используют общую память? Мне самому было интересно что на Сусlon можно запихать множество Nios - однако как их интегрировать и как IDE может поддерживать несколько процов?
|
|
|
|
|
Feb 25 2009, 06:36
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Ссылка на источник прилагается десьСамо руководство есть tt_nios2_multiprocessor_tutorial.pdf И где-то здесь пример
|
|
|
|
|
Feb 25 2009, 09:51
|
carpe manana
  
Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659

|
Цитата(dim99 @ Feb 24 2009, 17:40)  Проблема заключается в компиляции проекта в nios ide, а именно при компиляции совместно двух проектов для разных ядер. Может кто сталкивался с 2-мя ядрами, есть ли пример для них? буду благодарен за любую помощь. Проблема в чем заключается? Когда создаете в IDE новый проект, указываете ptf и из списка выбираете процессор, для которого собирается софт. В итоге в ИДЕ у вас два проекта. Компилируете оба проекта.
|
|
|
|
|
Feb 25 2009, 15:24
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Kuzmi4 Цитата а не могли бы вы по подробнее описать этот самый процесс собирания прожекта и совместную компиляцию для 2-х ядер ?? Сам процесс собирания ничем не отличается от простого проекта с 1 ядром. Нюансы, с которыми столкнулся при сборе 2-ух ядер: матрица соединений - черные\белые точки на закладке connections - черненькая открывает канал, белая закрывает irq (прерывания) - простенькая система присвоения приоритета (0-высший приоритет) Собственно особых вопросов это у меня не вызвало. на рисунке показана сборка 2-ух ядер с матрицей соединений:
id_gene Цитата Когда создаете в IDE новый проект, указываете ptf и из списка выбираете процессор, для которого собирается софт. В итоге в ИДЕ у вас два проекта. Компилируете оба проекта. Проблемы возникли при компиляции, но вроде потихоньку разгребаю. По примеру от альтеры получается, что каждое ядро будет дублировать один и тот же код программы, с этим пока вопрос завтра покопаю. Цитата(Kuzmi4 @ Feb 25 2009, 13:01)  2 dim99 - я вот что не могу понять - зачем вам 2 ядра выполняющие одну и ту же ф-цию ?? Вы что - ось собираетесь подымать на 2-х ядрах ?? Да и в той реализации , что по ссылкам - шина то у вас одна - кеша надо побольше в ниосы будет напихать , а то может системка подтормаживать..... Вообще, это тема моей бакалавриатской работы и параллельно по работе. Речи ни о какой оси не идет, просто проверить возможности нескольких ядер в одном проекте, как себя поведут, вдруг что и пригодится.
|
|
|
|
|
Feb 25 2009, 15:58
|
carpe manana
  
Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659

|
Цитата(dim99 @ Feb 25 2009, 18:24)  Проблемы возникли при компиляции, но вроде потихоньку разгребаю. По примеру от альтеры получается, что каждое ядро будет дублировать один и тот же код программы, с этим пока вопрос завтра покопаю. Зачем один и тот же код. положите в каждый проект свои исходники. Удачи! Спрашивайте...
|
|
|
|
|
Feb 26 2009, 04:56
|
Участник

Группа: Участник
Сообщений: 61
Регистрация: 11-11-08
Пользователь №: 41 522

|
Цитата(Kuzmi4 @ Feb 25 2009, 19:40)  2 dim99 - вам же id_gene дал чёткий ответ - ложите в каждое ядро свой код и будет вам счастие А чем вам не нравится система , где каждый ниос со своей шиной + зашаренная область для всех ядер ? зачем вам всю эту гурьбу садить на 1 шину - чтоб потом 1 cpu ждал пока 2-й освободит ему шину (в смысле я про доступ в память например) ?? Абсолютно согласен - в принципе самое эффективное решение задачи - это просто распараллелить логику и уложить ее просто хардверно в FPGA Можно наверное специальным Си компиллятором который превращает код в HDL - гикогда сам не делал но вроде как пищут что работает Процесоор нужен для коммуникации с внешним миром Если уж сделаны два процессора и есть Shared memory то ее можно поделить пополам и в одну область пишет один процесс а другой читает и наоборот, Можно сделать третью откуда оба читают Наверное можно еще прерывание завести по которому можно заставлять другой процессор читать А так два ядра на FPGA это как ящик водки украсть и продать чтобы пропить деньги
|
|
|
|
|
Feb 26 2009, 06:30
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Спасибо за предложения, но моя задача на сегодняшний день просто разобраться как оно работает, а дальше уже буду рассматриваться варианты что и как  Насчет кода каждому ядру: смутило, что альтеровский исходник представляет собой только 1 файл .c и описание, что его нужно везде копироват в проект и будет вам счастье. Сегодня добью что и как, тогда и посмотрим. Kuzmi4 Цитата А чем вам не нравится система , где каждый ниос со своей шиной? Что-то не пойму, в явном виде разве есть компоненты шины авалон или речь идет о Avalon-MM Pipeline Bridge?
Сообщение отредактировал dim99 - Feb 26 2009, 06:40
|
|
|
|
|
Feb 26 2009, 13:37
|
Частый гость
 
Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580

|
Выяснил интересную деталь при компиляции software для 2 ядер. В общем удачно компиляция проходит, только если память для каждого ядра больше 10 Кб, с чем это конкретно связано непонятно. При компиляции 1 ядра память не влияет на компиляцию, при 2 получается такая ерунда. По поводу программного кода, кто писал, что можно использовать разные исходники оказался прав  в общем, каждое ядро выполняет свой исходный код. В общем, у меня только один полувопрос  почему необходимо не менее 10 кб на on-chip memory каждому из ядер? и так ram памяти мало.
|
|
|
|
|
Feb 27 2009, 08:43
|
carpe manana
  
Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659

|
Цитата(dim99 @ Feb 26 2009, 16:37)  В общем, у меня только один полувопрос  почему необходимо не менее 10 кб на on-chip memory каждому из ядер? и так ram памяти мало. Сказать невозможно, пока вы не покажете целиком проект и логи компиляции. Скорее всего, вы неправильно настроили размещение секций. Для первого процессора все секции кода должны лежать в onchip, для второго - в onchip2. Настраивается в свойствах syslib.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|