реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Lattice бросился вдогонку за альтерой, LatticeMico32 Open, Free 32-Bit Soft Processor
makc
сообщение Sep 30 2006, 10:44
Сообщение #16


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ Sep 29 2006, 20:54) *
Не плохо, на спартане3 без секса больше 50~60МГц получить сложно (по крайней мере с мои набором периферии), я не вдавался в анализ того с кокой корки (или каких других факторов) влазит тормоз, но происходит примерно так: по началу, когда проц и пара корок, все разводится на ~100M, потом по ходу приходится уменьшать до 80 и в итоге получаешь 50 sad.gif .


У меня в одном из проектов (правда без софтпроцессора) наблюдалась подобная ситуация. Очень помог PlanAhead. smile.gif Рекомендую попробовать...


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
klop
сообщение Sep 30 2006, 11:27
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



[quote name='RobFPGA' date='Sep 30 2006, 14:08' post='159691']
[quote name='des00' date='Sep 29 2006, 16:14' post='159478']
[quote name='3.14' post='159475' date='Sep 29 2006, 08:09']
cut

Предлаю всем форумом написать один 16/32 бита риск к нему на эклипсе иде и пользовать его, что бы "патроны блокам подностить" (с) yes с форума сахары

наработки в этой области есть.

biggrin.gif
[/quote]

Приветствую Всех!

Я тоже готов поучаствовать в процессе создания велосипеда :-). Написать корку вобщем то не проблема. Главное обеспечит ее соответствующими КАЧЕСТВЕННЫМИ инструментами (легко адаптируемыми к конкретной архитектуре)- как минимум - компилятор С симулятор/эмулятор. Именно это (по мойму) и есть главная проблема в softprocessor строительстве. Я в течении месяца провел маленькое исследование в этой части и результаты не очень радостные - из возможных претендентов на компилятор ( если не разрабатывать с нуля) - LCC, SDCC, и GCC. LCC -прост в модификации под конкретный процессор но почти отсуствует оптимизация.
GCC - имеет хорошую оптимизацию но требует большой объем работы при модификации, SDCC - занимает промежуточное положение. Привязка же под конкретный софт/архитектуру процессора неизбежно влечет избыточность на аппаратном уровне но позволяет не ломать голову на софтварном.

Удачи! Rob.
[/quote]

Участвовать можно даже в озеленении Луны. Но перед началом проекта нелохо задаться парой-тройкой вопроов о том что же собственно делаем:

1. Это обычный проц или DSP?
2. Заточен в основном для FPGA или ASIC?
3. Какие изюминки архитектуры(регистровые окна например)?

ну и так далее, список может быть довольно длинный.

Так вот на мой непросвещенный взгляд ответы будущих пользователей этого чуда могут оказаться весьма противоречивыми.

К стати один из самых больных вопросов это действительно всякие компиляторы ибо чем сложнее и извращенней ахитектура проца тем больше надо возиться со всякими гнусными оптимизаторами и т.д.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 30 2006, 12:43
Сообщение #18


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



2 klop и RobFPGA

Если вам интересно мое ИМХО, то я считаю что разрабатывать :

Цитата
1. обычный проц или DSP?


не имеет никакого смысла, т.к. в этом случае мы лишаемся основной фичи ФПГА- множественного параллелизма. Даже мульти векторность АЛУ не спасет, т.к. это только приведет к усложнению проца -> падению тактовой частоты и/или увеличению задержек.

Есть много обычных процев как заточенных под фпга (ниос, микроблейз, мико32) так не сильно заточеных под фпга, есть даже синтезируемые модели дсп процессоров. И под них есть и компиляторы, симуляторы, дебагеры. Но все это нето.

самое то разработать процессор,

1. с поддержкой сложных переходов (как в КА), особенно что касается обработки входных пинов.
2. расширеными возможностями интерконнекта с другими объектами (быстрые порты ввода/вывода, аппаратная поддержка шинных интерфейсов (механизма handshake), отмапливание внешних, относительно проца регистров на регистровый файл и т.д.)
3. с простым АЛУ общего назначения средней производительности (всякие адреса считать и т.д.)
4. и возможность добавить АЛУ специального назначения, на несколько комманд.

наворотов для математики в этом проце не нужно, т.к. вокруг "море" логики, на которой можно считать, но которой нужно управлять.

и утоптать все это в 200-300 плиток, и хотя бы 266-300 МГц виртекса5/4 и стратикса2 biggrin.gif

Ну а программу для такого управляющего проца, можно и на асме написать. Писали же под атмеги85хх 8 к кода на асме smile.gif. Да и при граммотном разбиении задачи на блоки, больше чем 2к памяти программ потребуется очень редко.


ЗЫ. можно пойдти еще дальше, если есь подобный проц, то взяв несколько этих процев, сваять из них вычислительную цепочку, когда каждый проц пишет и читает в регистровый файл соседа, организованный как double-buffer регистровый файл. smile.gif
и не будет проблем синхронизации вычислительных блоков, между собой.


--------------------
Go to the top of the page
 
+Quote Post
klop
сообщение Sep 30 2006, 12:57
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



Ну то есть енто проц специально для FPGA. Вот и ответ на один из вопросов!
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 2 2006, 07:11
Сообщение #20


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(3.14 @ Sep 29 2006, 20:54) *
А сколько унего ступеней конвейера, и сколько тактов уходит на доступ по внутренней шине до корки?

1. NiosII Fast - шестистадийный конвейер, однотактовый перемножитель/сдвигатель (при использовании встроенных перемножителей или DSP-блоков FPGA), динамическое предсказание переходов, конфигурируемые кэши инструкций и данных. И 256 инструкций пользователя (типа создай свою систему коммандsmile.gif ).
2. Какой именно корки? Их в проекте несколько...

Цитата(3.14 @ Sep 29 2006, 20:54) *
Еще, я так понял, синтезировать можно любым синтезатором?

Синтезировать квартусом.
Если использовать внешний синтезатор, то NiosII можно вставить как blackbox.
А если есть желание открытый ниосовский hdl-код синтезировать (к примеру, под FPGA других фирм), то нужно врукопашную в исходнике комментарии править (там какая-то квартусовская фича используется - типа рассматривать комментарии как часть исходного текста) - уважаемый vetal про это может подробнее рассказать.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
iosifk
сообщение Oct 2 2006, 07:36
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(des00 @ Sep 30 2006, 16:43) *
2 klop и RobFPGA

что разрабатывать обычный проц :

...не имеет никакого смысла, т.к. в этом случае мы лишаемся основной фичи ФПГА- множественного параллелизма. Даже мульти векторность АЛУ не спасет, т.к. это только приведет к усложнению проца -> падению тактовой частоты и/или увеличению задержек.


ЗЫ. можно пойдти еще дальше, если есь подобный проц, то взяв несколько этих процев, сваять из них вычислительную цепочку, когда каждый проц пишет и читает в регистровый файл соседа, организованный как double-buffer регистровый файл. smile.gif
и не будет проблем синхронизации вычислительных блоков, между собой.


Есть два типа "любителей" софт процессоров:
первые идут "от хард микроконтроллеров" - им плевать на эффективность разработки. Дайте им AVR внутри FPGA и все! Хотим!!! Поэтому фирмы предлагают ядра "похожие" на хард микроконтроллеры. И программировать хотим только на Си. Поскольку код малоэффективный, то его будет много...

вторые, а к таковым я отношу себя и des00, мы идем от железа. Мы готовы сделать набор микроконтроллеров "под заказ", при этом само проектирование будет гораздо сложнее (хотя при известном опыте дело идет довольно быстро) и программировать придется на ассемблере, но в целом такой подход дает более производительный проект, выше тактовые частоты, более легкую аппаратную отладку. А отладка облегчается, тк на специализированном процессоре легче программировать тесты, команд надо довольно мало. Вот в моем предыдущем проекте я сделал связку из 17-ти битового процессора и 1-но битового. В 17-ти битовом было 1КСлов кода (32 чтения 12-ти битного АЦП с накоплением результата). Это примерно в 3-4 раза более эффективно (т.е меньше по объему команд), чем для стандартного. А выделение обработки блокировок для управления примерно 50 шт. реле в отдельный микроконтроллер увеличило эффективность примерно еще на порядок (но это моя субъективная оценка...)

Так что вот два пути...
Ну и соответственно две методики выбора микроконтроллеров.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 2 2006, 13:12
Сообщение #22


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Имхо, все упрется в программирование, и ассемблер не выход: упор на быстродействие приведет к "длинной" инструкции, ограничения архитектуры FPGA - к вынужденной неортогональности --> проблемы программирования.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 2 2006, 13:38
Сообщение #23


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Leka @ Oct 2 2006, 08:12) *
Имхо, все упрется в программирование, и ассемблер не выход: упор на быстродействие приведет к "длинной" инструкции, ограничения архитектуры FPGA - к вынужденной неортогональности --> проблемы программирования.


хмм, опять же зависит от того, с какой стороны посмотреть.
если под длинной инструкцией вы понимаете програмное слово со слабым кодированием, то это не есть проблема. К тому же 64 бита ширины програмного слова не проблема на фпга.
Не стоит делать у такого проца большое кол-во команд и режимов адресаций, а достаточно заточить его под задачу, помня о назначении проца. Т.е. после написания кода, помочь синтезатору и "поотключать" все неиспользуемые команды. Синтезатор достаточно хорошо минимизирует логику.

Если вы хотите много считать, то сделайте отдельный блок математики и включите его в декодер комманд процессора и/или отмапте на регистровый файл и пару пинов ввода/вывода.

PS. Не обязательно процессор делать однотактным и без конвейера.
PPS. кстати по такому пути пошли Field Programmable Object Array (FPOA) и Ambric и т.д.

PPPS. Декодер потока команд управления, своего StateSeq я как раз и "вырвал" из своего программируемого проца, версии2 (версия2, заимствует идеи интерконекта как раз из FPOA). Посмотрите на StateSeq и вы поймете что я имею в виду, под заточкой под задачу smile.gif.
http://electronix.ru/forum/index.php?showt...19202&st=15


--------------------
Go to the top of the page
 
+Quote Post
klop
сообщение Oct 2 2006, 13:50
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



Цитата(iosifk @ Oct 2 2006, 11:36) *
Цитата(des00 @ Sep 30 2006, 16:43) *

2 klop и RobFPGA

что разрабатывать обычный проц :

...не имеет никакого смысла, т.к. в этом случае мы лишаемся основной фичи ФПГА- множественного параллелизма. Даже мульти векторность АЛУ не спасет, т.к. это только приведет к усложнению проца -> падению тактовой частоты и/или увеличению задержек.


ЗЫ. можно пойдти еще дальше, если есь подобный проц, то взяв несколько этих процев, сваять из них вычислительную цепочку, когда каждый проц пишет и читает в регистровый файл соседа, организованный как double-buffer регистровый файл. smile.gif
и не будет проблем синхронизации вычислительных блоков, между собой.


Есть два типа "любителей" софт процессоров:
первые идут "от хард микроконтроллеров" - им плевать на эффективность разработки. Дайте им AVR внутри FPGA и все! Хотим!!! Поэтому фирмы предлагают ядра "похожие" на хард микроконтроллеры. И программировать хотим только на Си. Поскольку код малоэффективный, то его будет много...

вторые, а к таковым я отношу себя и des00, мы идем от железа. Мы готовы сделать набор микроконтроллеров "под заказ", при этом само проектирование будет гораздо сложнее (хотя при известном опыте дело идет довольно быстро) и программировать придется на ассемблере, но в целом такой подход дает более производительный проект, выше тактовые частоты, более легкую аппаратную отладку. А отладка облегчается, тк на специализированном процессоре легче программировать тесты, команд надо довольно мало. Вот в моем предыдущем проекте я сделал связку из 17-ти битового процессора и 1-но битового. В 17-ти битовом было 1КСлов кода (32 чтения 12-ти битного АЦП с накоплением результата). Это примерно в 3-4 раза более эффективно (т.е меньше по объему команд), чем для стандартного. А выделение обработки блокировок для управления примерно 50 шт. реле в отдельный микроконтроллер увеличило эффективность примерно еще на порядок (но это моя субъективная оценка...)

Так что вот два пути...
Ну и соответственно две методики выбора микроконтроллеров.

Первые идут от того что писать серьезные задачи для одного uC нескольким людям реально при наличии OS, C компилера ну и т.д. Иначе ничего путного не получишь. Никто не говорит что второй путь плох. Просто скорее всего для получения результата надо их комбинировать.
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 2 2006, 15:09
Сообщение #25


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(des00 @ Oct 2 2006, 17:38) *
Цитата(Leka @ Oct 2 2006, 08:12) *

Имхо, все упрется в программирование, и ассемблер не выход: упор на быстродействие приведет к "длинной" инструкции, ограничения архитектуры FPGA - к вынужденной неортогональности --> проблемы программирования.


хмм, опять же зависит от того, с какой стороны посмотреть.
если под длинной инструкцией вы понимаете програмное слово со слабым кодированием, то это не есть проблема. К тому же 64 бита ширины програмного слова не проблема на фпга.
...


Под длинной инструкцией понимаю несколько операций в одном программном слове. Например: переход + арифметика + пересылка. Свой софт-процессор написал (однотактный, конвейер - 2 стадии). Столкнулся с тем, что неортогональность при длинной инструкции превращает написание программы(на ассемблере) в пытку.

Сообщение отредактировал Leka - Oct 2 2006, 15:10
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 2 2006, 15:54
Сообщение #26


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Leka @ Oct 2 2006, 10:09) *
Цитата(des00 @ Oct 2 2006, 17:38) *

Цитата(Leka @ Oct 2 2006, 08:12) *

Имхо, все упрется в программирование, и ассемблер не выход: упор на быстродействие приведет к "длинной" инструкции, ограничения архитектуры FPGA - к вынужденной неортогональности --> проблемы программирования.


хмм, опять же зависит от того, с какой стороны посмотреть.
если под длинной инструкцией вы понимаете програмное слово со слабым кодированием, то это не есть проблема. К тому же 64 бита ширины програмного слова не проблема на фпга.
...


Под длинной инструкцией понимаю несколько операций в одном программном слове. Например: переход + арифметика + пересылка. Свой софт-процессор написал (однотактный, конвейер - 2 стадии). Столкнулся с тем, что неортогональность при длинной инструкции превращает написание программы(на ассемблере) в пытку.


понятно, спасибо за разьяснение.

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

Именно поэтому и обеими руками за упрощение проца + его конфигурируемость. Основное назначение проца - управление и медленная (многотактная математика). Если нужно что то считать быстро - например ДКТ, то пишем корку и мапим регистры дкт на регистры такого проца. На этом его задача заканчиваеться. Нужна выше производительность ? поставим еще проц и будет конвейер. smile.gif
нужно порулить ДМА и 10 аппаратными блоками по AMBA вообще не имплементим математику, только адреса считать. smile.gif


--------------------
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 3 2006, 10:54
Сообщение #27


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Имхо. Одна из главных проблем софт-процессора: "правильный" многопортовый регистровый файл с асинхронным чтением. Блочная память не допускает асинхронное чтение, распределенная - многопортовую запись. Обход этого ограничения выливается либо в неортогональность системы команд, либо к дополнительным тактам/ступеням/логике(+задержке).
Go to the top of the page
 
+Quote Post
antti
сообщение Oct 3 2006, 17:52
Сообщение #28


Участник
*

Группа: Свой
Сообщений: 42
Регистрация: 18-07-06
Из: Germany
Пользователь №: 18 908



LatticeMico32


http://www.latticesemi.com/dynamic/index.c...=01-01-08-11-48

tam verilog RTL, eclipse based SoC design env, + GCC C compiler (s ishodnikami)

bus sistema Wishbone

RTL mozhno i v xilinx ispolsovat, tut malenki project - rabotaet ok v Virtex-4,proveril

http://www.microfpga.com/joomla/index.php?...leinfo&id=2

mozhno s ISE ISIM simulatorom tozhe simulirovat!

Antti
Go to the top of the page
 
+Quote Post
antti
сообщение Oct 3 2006, 18:11
Сообщение #29


Участник
*

Группа: Свой
Сообщений: 42
Регистрация: 18-07-06
Из: Germany
Пользователь №: 18 908



Цитата(3.14 @ Sep 29 2006, 20:54) *
Не плохо, на спартане3 без секса больше 50~60МГц получить сложно (по крайней мере с мои набором периферии), я не вдавался в анализ того с кокой корки (или каких других факторов) влазит тормоз, но происходит примерно так: по началу, когда проц и пара корок, все разводится на ~100M, потом по ходу приходится уменьшать до 80 и в итоге получаешь 50 sad.gif.

А сколько унего ступеней конвейера, и сколько тактов уходит на доступ по внутренней шине до корки?
Еще, я так понял, синтезировать можно любым синтезатором?


ja pro LatticeMico32 v drugom forume pisal, nado bylo zdesh ransche posmotret
LM32 6 stupeni konveier

no v standard variante BLOCK RAMs no wishbone sidit i po etomy OCHEN medlenno sad.gif

sw r0,r0,0x100
bi -1

tokoi loop 28 cyclov berit v BLOCK RAMe !!

dolzno byt mozhno BRAM na CPU direct postavit no GUI eto poka ne poderzivaet

ja dlja ISE maleknki test TOP delal s LatticeMico32, rabotaet!
project sources mozhno kachat tut

http://www.microfpga.com/joomla/index.php?...leinfo&id=2

voobche to interesno!
compiler GCC, istochniki tozhe segodnja na Lattice web postavili

Antti

vetal
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2006, 04:55
Сообщение #30


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Leka @ Oct 3 2006, 05:54) *
Имхо. Одна из главных проблем софт-процессора: "правильный" многопортовый регистровый файл с асинхронным чтением. Блочная память не допускает асинхронное чтение, распределенная - многопортовую запись. Обход этого ограничения выливается либо в неортогональность системы команд, либо к дополнительным тактам/ступеням/логике(+задержке).


вы правы, но даже такая задача решаеться достаточно просто.
1. Честный двухпортовый регистровый файл у ксайлов делаеться на 2-х RAM16D. При этом мы можем читать 4 числа и писать 2 числа. Если не нужен доступ одновременно к 4 м числам, то все еще проще. Нужно использовать 2 однопортовки. Но при таком подходе возникает не возможность отмапливания регистров на внешние устройства.

2. Если требуеться небольшое кол-во регистров, то все просто, можно использовать набор обычных регистров. В этом случае упрощаеться реализация управления внешними устройствами + можно делать распределенную, многобайтную арфиметику.

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

я в програмировании не очень силен, т.к. писал на асме в основном только под х86, AVR, 51, но не могу понять зачем вы хотите именно ортогональную систему комманд, в процессоре специализированного (фпга) применения. Т.е. проц для фпга ИМХО - прежде всего не универсальное решение на все случаи жизни, а уменьшение времени разработки и отладки.


Всем:
Думаю достаточно клаву греть smile.gif
Если кто-то хочет поучаствовать в разработе подобного проца, то давайте каждый подготовит описание типовых задач, которые он решал/решает в текущее время и выдвинет свои требования к процу. Затем, за несколько on-line встреч (можно в irc), можно обсудить идеи и выработать концепцию проца и стратегии разработки.
А дальше остаеться только определиться с назначением работ по разработке и реализовать, как сам проц, так и софт для разработки на нем.


--------------------
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 20:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01544 секунд с 7
ELECTRONIX ©2004-2016