Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NIOS и двухпортовая память для программ/данных
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
alexadmin
Занимаюсь оптимизацией быстродействия встроенного ПО, возник ряд вопросов по технической части...
Есть процессор NIOSII/f, работает из on-chip памяти. Как лучше сделать с точки зрения быстродействия: отдельно память программ, отдельно память данных и подключить их соответсвенно к instruction master и data master портам ниоса или сделать двухпортовую память, один порт к instruction master, другой к data master? Второй вариант более гибкий, и с точки зрения здравого смысла должен быть не медленнее. А на практике разница будет?
И попутный вопрос - может ли увеличение размера кэша дать положительный результат, при условии, что программа и так исполняется из on-chip RAM с латентностью = 1?
barabek
Цитата(alexadmin @ Oct 25 2011, 22:58) *
И попутный вопрос - может ли увеличение размера кэша дать положительный результат, при условии, что программа и так исполняется из on-chip RAM с латентностью = 1?


Скорее всего будет только замедление, ведь на заполнение кэша время-то тратится.


vadimuzzz
Цитата(alexadmin @ Oct 25 2011, 18:58) *
Второй вариант более гибкий, и с точки зрения здравого смысла должен быть не медленнее. А на практике разница будет?

я всегда 2-портовую ставлю, блоки m9k в циклонах поддерживают этот режим. по поводу кэша согласен с barabek, никакой выгоды от него не вижу в описанной вами ситуации. правда nios/f не дает полностью отключить кэши, все равно останется кэш инструкций
Fynjisx
Цитата(vadimuzzz @ Oct 25 2011, 16:29) *
я всегда 2-портовую ставлю, блоки m9k в циклонах поддерживают этот режим. по поводу кэша согласен с barabek, никакой выгоды от него не вижу в описанной вами ситуации. правда nios/f не дает полностью отключить кэши, все равно останется кэш инструкций

а как в SOPC, указать процу, что вот эта область - instruction memory, а та - data memory?
barabek
Цитата(Fynjisx @ Jan 12 2012, 21:52) *
а как в SOPC, указать процу, что вот эта область - instruction memory, а та - data memory?

этим линкер занимается. Без Вашего участия если, конечно же, нет особых пожеланий sm.gif.
Fynjisx
Цитата(barabek @ Jan 13 2012, 01:45) *
этим линкер занимается. Без Вашего участия если, конечно же, нет особых пожеланий sm.gif.

Т.е Вы хотите сказать, что достаточно в SOPC указать что память 2-х портовая, как NIOS сразу в одной части будет хранить код в другой данные? Это где то написано?
barabek
Цитата(Fynjisx @ Jan 14 2012, 04:38) *
Т.е Вы хотите сказать, что достаточно в SOPC указать что память 2-х портовая, как NIOS сразу в одной части будет хранить код в другой данные? Это где то написано?

Ставим двухпортовую память. Один ее порт соединяем с instruction_master, другой с data_master nios. Автоматически (auto assign base address) адреса обоих портов памяти становятся одинаковые. Затем в nios IDE в свойствах system library (правой кнопкой проект_syslib в properties->system library) настраиваем где хранить каждый раздел. В Вашем случае все разделы (.text, .rodata, .rwdata ...) нужно указать на двухпортовую память.
gosu-art
Так производительность будет реально выше чем с однопортовой?
Fynjisx
Цитата(barabek @ Jan 14 2012, 10:41) *
Ставим двухпортовую память. Один ее порт соединяем с instruction_master, другой с data_master nios. Автоматически (auto assign base address) адреса обоих портов памяти становятся одинаковые. Затем в nios IDE в свойствах system library (правой кнопкой проект_syslib в properties->system library) настраиваем где хранить каждый раздел. В Вашем случае все разделы (.text, .rodata, .rwdata ...) нужно указать на двухпортовую память.

Спасибо barabek, теперь ясно стало как настроить.
Цитата(gosu-art @ Jan 16 2012, 11:42) *
Так производительность будет реально выше чем с однопортовой?

Но все таки, очень интересный ньюанс использовать двухпорттовку для данных и инструкций. Значит Nios поддерживает такую возможность. Все таки интересно где это написано?)))
да, кстати при настройке памяти в диалоге "On Chip Memory(RAM or ROM)" увидел несколько опций и до кучи хочу спросить:
1.тип памяти ROM тоже бывает на Alter'овских Fpga?
2. опция Initialize Memory Content - в каких случаях нужна???

заранее спасибо за ответы...
barabek
Цитата
так производительность...

Я не пробовал двухпортовку, но по идее если есть кэш или DMA то работать будет по-шустрей.
Цитата(Fynjisx @ Jan 17 2012, 02:22) *
да, кстати при настройке памяти в диалоге "On Chip Memory(RAM or ROM)" увидел несколько опций и до кучи хочу спросить:
1.тип памяти ROM тоже бывает на Alter'овских Fpga?
2. опция Initialize Memory Content - в каких случаях нужна???
заранее спасибо за ответы...

1. ROM это та же RAM, только без возможности записи sm.gif.
2. Например, когда установили ROM.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.