Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Три Nios II в одном "флаконе"
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
maksya
Задача - запихать в одну FPGA'шку три NiosII. Сейчас усердно знакомлюсь с литературой по теме. Просто может кто-то поспособствует ускорению процесса и поделится советом - с какой стороны удара граблей ожидать? Будет ли им там тесно?

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

Идельным вариантом было бы описание опыта работы с похожей конфигурацией.
vetal
Этим вопросом не занимался, но в документации присутствуют специальные элементы для ipc.
Как я вижу- проблемма будет в памяти и доступом к ней.
id_gene
увы, сам только начал подходить к мульти-процессорной конфигурации в железе.

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

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

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

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

Тесно им там быть не с чего, если ресурсы полностью разделить или запирать (мьютексами или чем-то еще), но это не проблема.
tegumay
Пока точно сказать не могу, но помню картинку от Alterы и на ней несколько НИОСОВ на одном кристалле
Думаю в надо аппликухи искать.
iosifk
Цитата(maksya @ Dec 4 2006, 18:02) *
Задача - запихать в одну FPGA'шку три NiosII. Сейчас усердно знакомлюсь с литературой по теме. Просто может кто-то поспособствует ускорению процесса и поделится советом - с какой стороны удара граблей ожидать? Будет ли им там тесно?

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

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

Имею вопросы:
1. Какие частоты нужны для процессора?
2. Какие задачи решают процессоры?
3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие?
4. Имеют ли они общую память и как организован арбитраж.
5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы?
Postoroniy_V
Цитата(iosifk @ Dec 5 2006, 09:06) *
Цитата(maksya @ Dec 4 2006, 18:02) *

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

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

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

Имею вопросы:
1. Какие частоты нужны для процессора?
2. Какие задачи решают процессоры?
3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие?
4. Имеют ли они общую память и как организован арбитраж.
5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы?

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

от себя могу добавить для отладки удобно пользоваться Codelab лежит на фтп
Stewart Little
Про разделяемые ресурсы и арбитраж : http://www.altera.com/literature/tt/tt_nio...or_tutorial.pdf

Простейший пример : http://www.altera.com/literature/tt/hello_world_multi.c
id_gene
Stewart Little, спасибо.
очень хороший документ; непонятно, почему я его проигнорировал, когда собирал систему.
Т.о. проблем с запуском и отладкой мульти-процессорной системы быть не должно.
maksya
Цитата(iosifk @ Dec 5 2006, 09:06) *
Имею вопросы:
1. Какие частоты нужны для процессора?
2. Какие задачи решают процессоры?
3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие?
4. Имеют ли они общую память и как организован арбитраж.
5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы?

1. Итоговая программа пока не дописана. И что еще хуже, недописана не мной smile.gif Поэтому авторитетно ответить на Ваш вопрос пока не могу. Чем выше, тем лучше. Из прочитанного мной сделал вывод, что речь ведется о частотах ~50 МГц.
2. Основная задача - первичная обработка потоковой информации. В основном сортировка + несложные вычисления.
3. Задачи одинаковые. Три процессора работают в параллель и обрабатывают информацию с трех однотипных независимых каналов. Единственное различие будет по всей видимости в адресе в памяти куда будет записываться результат первичной обработки от каждого из процессоров. Это если у них память будет разделяемой. А вообще пока больше нравится вариант с подвешиванием к каждому из процессоров своей двухпортовой памяти с последующим сливом данных из них в общий чан. На ресурсах не экономлю.
4. Как правильно заметил Postoroniy_V, этот вопрос сейчас находится на стадии обсуждения. Как Я уже сказал, экономить на ресурсах ПЛИС не приходится, а посему и арбитраж несложный должен быть.
5. Задачи одинаковые.
maksya
Цитата(Postoroniy_V @ Dec 5 2006, 13:49) *
от себя могу добавить для отладки удобно пользоваться Codelab лежит на фтп
А поподробней можно про CodeLab? Он позволяет отлаживать Nios II через JTAG? Точнее сказать одновременно 3 Nios II? Пока, честно сказать, не совсем понятно можно ли производить одновременную отладку трех процессоров. Или только по отдельности получится? И как в случае многопроцессорности отличать эти Nios'ы? По некоему cpu_inst_id ?

Понятно, что раз задачи у процессоров одинаковые, то для начала можно один из них только зашить и отладить. Ну а что если представить, что назначения Nios'ов различны. Как тогда производить их отладку?
id_gene
Небольшой отчет.
кваркус/ниос 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.gif

В ППЗУ еще не грузил, работаю прямо из onchip.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.