Перейти к содержанию
    

Три Nios II в одном "флаконе"

Задача - запихать в одну FPGA'шку три NiosII. Сейчас усердно знакомлюсь с литературой по теме. Просто может кто-то поспособствует ускорению процесса и поделится советом - с какой стороны удара граблей ожидать? Будет ли им там тесно?

 

Допустим откидываем проблему нехватки логических ячеек, памяти и ног I/O. Основной вопрос пока, наверное, в организации процесса отладки этих процессоров.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этим вопросом не занимался, но в документации присутствуют специальные элементы для ipc.

Как я вижу- проблемма будет в памяти и доступом к ней.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Первая поверхностная проблема - IDE создает проект только для одного процессора.

Для симуляции обошли тем, что софт параметризирован (одинаковая задача для всех, с минимальными различиями), и программа в моделируемую память руками кладется одинаковая для всех.

Моделируется нормально.

 

Для этого использованы tightly coupled memories, т.е. у каждого процессора своя память инструкций и данных, несколько корявое решение имхо, но для начала подходит. Не понравилось то, что а) нельзя отказаться от кеша инструкций; б) без кеша данных проект не работает -квартус/ниос 5.0. Процессор держит какие-то переменные по нулевым адресам, и без кеша они сваливаются в область жтаг отладчика, и все рушат, а с кешом наружу не вылезают, все работает нормально. Может в новых версиях починили, может на ниосфоруме есть подсказки. еще не смотрел, пока оцениваю общие идеи ...

От t-coupled памяти можно отказаться, позже подумаю, как это проще сделать.

Может, если отказаться от отладчика - и без кеша будет попроще.

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

 

Дальше пока не ушли, возникли другие вопросы на плате, не связанные с процессорами.

 

Надеюсь, для запуска и отладки обоих (трех-четырех-...) ядер проекта из-под IDE найдется какое-то встроенное решение.

Результатами поделюсь как только так сразу...

может через пару недель :(

 

Тесно им там быть не с чего, если ресурсы полностью разделить или запирать (мьютексами или чем-то еще), но это не проблема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока точно сказать не могу, но помню картинку от Alterы и на ней несколько НИОСОВ на одном кристалле

Думаю в надо аппликухи искать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задача - запихать в одну FPGA'шку три NiosII. Сейчас усердно знакомлюсь с литературой по теме. Просто может кто-то поспособствует ускорению процесса и поделится советом - с какой стороны удара граблей ожидать? Будет ли им там тесно?

 

Допустим откидываем проблему нехватки логических ячеек, памяти и ног I/O. Основной вопрос пока, наверное, в организации процесса отладки этих процессоров.

 

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

Имею вопросы:

1. Какие частоты нужны для процессора?

2. Какие задачи решают процессоры?

3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие?

4. Имеют ли они общую память и как организован арбитраж.

5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задача - запихать в одну FPGA'шку три NiosII. Сейчас усердно знакомлюсь с литературой по теме. Просто может кто-то поспособствует ускорению процесса и поделится советом - с какой стороны удара граблей ожидать? Будет ли им там тесно?

 

Допустим откидываем проблему нехватки логических ячеек, памяти и ног I/O. Основной вопрос пока, наверное, в организации процесса отладки этих процессоров.

 

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

Имею вопросы:

1. Какие частоты нужны для процессора?

2. Какие задачи решают процессоры?

3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие?

4. Имеют ли они общую память и как организован арбитраж.

5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы?

:biggrin: так эта...у автора топика наверняка такие же вопросы возникли(4 и 5), смысл у него же переспрашивать?

или у вас есть ответы на 4 и 5?

 

от себя могу добавить для отладки удобно пользоваться Codelab лежит на фтп

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про разделяемые ресурсы и арбитраж : http://www.altera.com/literature/tt/tt_nio...or_tutorial.pdf

 

Простейший пример : http://www.altera.com/literature/tt/hello_world_multi.c

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Stewart Little, спасибо.

очень хороший документ; непонятно, почему я его проигнорировал, когда собирал систему.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имею вопросы:

1. Какие частоты нужны для процессора?

2. Какие задачи решают процессоры?

3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие?

4. Имеют ли они общую память и как организован арбитраж.

5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы?

1. Итоговая программа пока не дописана. И что еще хуже, недописана не мной :) Поэтому авторитетно ответить на Ваш вопрос пока не могу. Чем выше, тем лучше. Из прочитанного мной сделал вывод, что речь ведется о частотах ~50 МГц.

2. Основная задача - первичная обработка потоковой информации. В основном сортировка + несложные вычисления.

3. Задачи одинаковые. Три процессора работают в параллель и обрабатывают информацию с трех однотипных независимых каналов. Единственное различие будет по всей видимости в адресе в памяти куда будет записываться результат первичной обработки от каждого из процессоров. Это если у них память будет разделяемой. А вообще пока больше нравится вариант с подвешиванием к каждому из процессоров своей двухпортовой памяти с последующим сливом данных из них в общий чан. На ресурсах не экономлю.

4. Как правильно заметил Postoroniy_V, этот вопрос сейчас находится на стадии обсуждения. Как Я уже сказал, экономить на ресурсах ПЛИС не приходится, а посему и арбитраж несложный должен быть.

5. Задачи одинаковые.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

от себя могу добавить для отладки удобно пользоваться Codelab лежит на фтп
А поподробней можно про CodeLab? Он позволяет отлаживать Nios II через JTAG? Точнее сказать одновременно 3 Nios II? Пока, честно сказать, не совсем понятно можно ли производить одновременную отладку трех процессоров. Или только по отдельности получится? И как в случае многопроцессорности отличать эти Nios'ы? По некоему cpu_inst_id ?

 

Понятно, что раз задачи у процессоров одинаковые, то для начала можно один из них только зашить и отладить. Ну а что если представить, что назначения Nios'ов различны. Как тогда производить их отладку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Небольшой отчет.

кваркус/ниос 6.1. отладчик встроенный в иде.

Кодлаб не пробовал.

 

Скомпилировал три процессора, у каждого своя onchip ram 16к для программы, кеша данных нет, кеш инструкций 512 (минимальный).

 

Общие ресурсы - общая onchip, общая DDR внешняя.

 

Прямо по указанному выше документу все работает отлично.

 

В ИДЕ создается прект для каждого процессора, папки отдельные, у каждого свой софт.

Собирается проект для каждого процессора, после чего собирается multiprocesor collection.

Отлаживается вполне нормально: видны треды каждого процессора одновременно, брейкпойнты независимы, каждый тред можно запустить/приостановить, пошагово пройти.

 

Результаты смотрю в отладчике при instruction stepping mode в переменных и в регистрах процессора.

 

Все три процессора исполняют один и тот же код. Софт параметризирован, ядра себя опознают через NIOS2_READ_CPUID(cpuid).

 

Где-то я что-то упустил, но лень копаться: процессоры a, b & c опознают себя как 1, 0 & 2 соответственно (я думал, что а - это будет 0). Но поскольку железо симметричное и проблем нет - копать неохота. :blush:

 

В ППЗУ еще не грузил, работаю прямо из onchip.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...