|
Три Nios II в одном "флаконе", размещение трех МК в одной FPGA |
|
|
|
 |
Ответов
(1 - 10)
|
Dec 4 2006, 19:45
|
carpe manana
  
Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659

|
увы, сам только начал подходить к мульти-процессорной конфигурации в железе. Первая поверхностная проблема - IDE создает проект только для одного процессора. Для симуляции обошли тем, что софт параметризирован (одинаковая задача для всех, с минимальными различиями), и программа в моделируемую память руками кладется одинаковая для всех. Моделируется нормально. Для этого использованы tightly coupled memories, т.е. у каждого процессора своя память инструкций и данных, несколько корявое решение имхо, но для начала подходит. Не понравилось то, что а) нельзя отказаться от кеша инструкций; б) без кеша данных проект не работает -квартус/ниос 5.0. Процессор держит какие-то переменные по нулевым адресам, и без кеша они сваливаются в область жтаг отладчика, и все рушат, а с кешом наружу не вылезают, все работает нормально. Может в новых версиях починили, может на ниосфоруме есть подсказки. еще не смотрел, пока оцениваю общие идеи ... От t-coupled памяти можно отказаться, позже подумаю, как это проще сделать. Может, если отказаться от отладчика - и без кеша будет попроще. В любом случае, можно цеплять свой скрипт линкера, который будет собирать как вам угодно, и на общей памяти, и с секциями в других местах и т.д. Дальше пока не ушли, возникли другие вопросы на плате, не связанные с процессорами. Надеюсь, для запуска и отладки обоих (трех-четырех-...) ядер проекта из-под IDE найдется какое-то встроенное решение. Результатами поделюсь как только так сразу... может через пару недель  Тесно им там быть не с чего, если ресурсы полностью разделить или запирать (мьютексами или чем-то еще), но это не проблема.
|
|
|
|
|
Dec 5 2006, 09:06
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(maksya @ Dec 4 2006, 18:02)  Задача - запихать в одну FPGA'шку три NiosII. Сейчас усердно знакомлюсь с литературой по теме. Просто может кто-то поспособствует ускорению процесса и поделится советом - с какой стороны удара граблей ожидать? Будет ли им там тесно?
Допустим откидываем проблему нехватки логических ячеек, памяти и ног I/O. Основной вопрос пока, наверное, в организации процесса отладки этих процессоров.
Идельным вариантом было бы описание опыта работы с похожей конфигурацией. Имею вопросы: 1. Какие частоты нужны для процессора? 2. Какие задачи решают процессоры? 3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие? 4. Имеют ли они общую память и как организован арбитраж. 5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы?
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Dec 5 2006, 13:49
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(iosifk @ Dec 5 2006, 09:06)  Цитата(maksya @ Dec 4 2006, 18:02)  Задача - запихать в одну FPGA'шку три NiosII. Сейчас усердно знакомлюсь с литературой по теме. Просто может кто-то поспособствует ускорению процесса и поделится советом - с какой стороны удара граблей ожидать? Будет ли им там тесно?
Допустим откидываем проблему нехватки логических ячеек, памяти и ног I/O. Основной вопрос пока, наверное, в организации процесса отладки этих процессоров.
Идельным вариантом было бы описание опыта работы с похожей конфигурацией.
Имею вопросы: 1. Какие частоты нужны для процессора? 2. Какие задачи решают процессоры? 3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие? 4. Имеют ли они общую память и как организован арбитраж. 5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы?  так эта...у автора топика наверняка такие же вопросы возникли(4 и 5), смысл у него же переспрашивать? или у вас есть ответы на 4 и 5? от себя могу добавить для отладки удобно пользоваться Codelab лежит на фтп
--------------------
Cogito ergo sum
|
|
|
|
|
Dec 5 2006, 17:02
|
Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-08-04
Из: Ленинград
Пользователь №: 562

|
Цитата(iosifk @ Dec 5 2006, 09:06)  Имею вопросы: 1. Какие частоты нужны для процессора? 2. Какие задачи решают процессоры? 3. Все три процессора имеют одинаковые задачи и они одинаковые или у них есть различие? 4. Имеют ли они общую память и как организован арбитраж. 5. Если у процессоров задачи разные, то может быть для них не нужны Ниосы? 1. Итоговая программа пока не дописана. И что еще хуже, недописана не мной  Поэтому авторитетно ответить на Ваш вопрос пока не могу. Чем выше, тем лучше. Из прочитанного мной сделал вывод, что речь ведется о частотах ~50 МГц. 2. Основная задача - первичная обработка потоковой информации. В основном сортировка + несложные вычисления. 3. Задачи одинаковые. Три процессора работают в параллель и обрабатывают информацию с трех однотипных независимых каналов. Единственное различие будет по всей видимости в адресе в памяти куда будет записываться результат первичной обработки от каждого из процессоров. Это если у них память будет разделяемой. А вообще пока больше нравится вариант с подвешиванием к каждому из процессоров своей двухпортовой памяти с последующим сливом данных из них в общий чан. На ресурсах не экономлю. 4. Как правильно заметил Postoroniy_V, этот вопрос сейчас находится на стадии обсуждения. Как Я уже сказал, экономить на ресурсах ПЛИС не приходится, а посему и арбитраж несложный должен быть. 5. Задачи одинаковые.
--------------------
Лень - это не врожденное чувство русского человека, а средство борьбы с неуемной, но бестолковой энергией начальника.
|
|
|
|
|
Dec 5 2006, 17:34
|
Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-08-04
Из: Ленинград
Пользователь №: 562

|
Цитата(Postoroniy_V @ Dec 5 2006, 13:49)  от себя могу добавить для отладки удобно пользоваться Codelab лежит на фтп А поподробней можно про CodeLab? Он позволяет отлаживать Nios II через JTAG? Точнее сказать одновременно 3 Nios II? Пока, честно сказать, не совсем понятно можно ли производить одновременную отладку трех процессоров. Или только по отдельности получится? И как в случае многопроцессорности отличать эти Nios'ы? По некоему cpu_inst_id ? Понятно, что раз задачи у процессоров одинаковые, то для начала можно один из них только зашить и отладить. Ну а что если представить, что назначения Nios'ов различны. Как тогда производить их отладку?
--------------------
Лень - это не врожденное чувство русского человека, а средство борьбы с неуемной, но бестолковой энергией начальника.
|
|
|
|
|
May 4 2007, 08:56
|
carpe manana
  
Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659

|
Небольшой отчет. кваркус/ниос 6.1. отладчик встроенный в иде. Кодлаб не пробовал. Скомпилировал три процессора, у каждого своя onchip ram 16к для программы, кеша данных нет, кеш инструкций 512 (минимальный). Общие ресурсы - общая onchip, общая DDR внешняя. Прямо по указанному выше документу все работает отлично. В ИДЕ создается прект для каждого процессора, папки отдельные, у каждого свой софт. Собирается проект для каждого процессора, после чего собирается multiprocesor collection. Отлаживается вполне нормально: видны треды каждого процессора одновременно, брейкпойнты независимы, каждый тред можно запустить/приостановить, пошагово пройти. Результаты смотрю в отладчике при instruction stepping mode в переменных и в регистрах процессора. Все три процессора исполняют один и тот же код. Софт параметризирован, ядра себя опознают через NIOS2_READ_CPUID(cpuid). Где-то я что-то упустил, но лень копаться: процессоры a, b & c опознают себя как 1, 0 & 2 соответственно (я думал, что а - это будет 0). Но поскольку железо симметричное и проблем нет - копать неохота. В ППЗУ еще не грузил, работаю прямо из onchip.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|