|
|
  |
Порекомендуйте какое-нибудь softcore, Для Altera |
|
|
|
Oct 20 2008, 11:11
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
Цитата(vetal @ Oct 20 2008, 13:22)  а) Вы хотите за 1 такт что-то большее, чем R3=R1+R2? Это идеология всех современных ядер, начиная от микроблэйзов, ниосов, армов и заканчивая спарками. б) Память в любой системе - слабое место. Дюже это сколько? опять упомяну PDP11. например хочется чего-то подобного на add @R1+, @R2+ тут не за такт, но в одну команду совершается много действий. вся соль в том, что шина данных освобождается от выборки кучи команд. и, кстати, вы неправы относительно, например, АРМа, там в одну команду пихается тьма действий.  другое дело, что браться за реализацию ядра арма я буду только под принуждением
|
|
|
|
|
Oct 22 2008, 03:50
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Mahagam @ Oct 20 2008, 06:11)  опять упомяну PDP11. например хочется чего-то подобного на add @R1+, @R2+ тут не за такт, но в одну команду совершается много действий. вся соль в том, что шина данных освобождается от выборки кучи команд. Года 2-3 назад была подобная тема, помню высказывание SM, он говорил о том что при современном уровне развития электроники идет откат от RISC архитектур в пользу CISC. Т.к. они более гибкие у уже почти не проигрывают в производительности RISC. PDP11 ИМХО очень красивая архитектура для фпга, вот выйду на пенсию займусь %) Цитата и, кстати, вы неправы относительно, например, АРМа, там в одну команду пихается тьма действий.  другое дело, что браться за реализацию ядра арма я буду только под принуждением  подход микроблейза по своей сути арм7 и есть %)
--------------------
|
|
|
|
|
Oct 23 2008, 17:42
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Цитата(Leka @ Oct 20 2008, 15:10)  Что делаю: - фон-неймановская архитектура, 32 разряда команда/данные - внутренняя 2х-портовая память команд/данных - трехоперандная система команд - минимальный набор инструкций (алу: + - & | ^ div2, переходы: < <= == != > >=) - 2..4 такта в зависимости от типа адресации (a,*a,*a[b], proc, *proc). Примеры: a = b + c ... *a = *b ^ *c a += *b[c] ... *a[b] ^= *c label(a < B ) ... label(*a >= *B ) proc(a) ... *proc(*a) - переход на подпрограмму с передачей аргумента. Написано и проверено на синтезаторе 3/4 кода, вроде укладывается в ожидаемые <500лут, >75МГц для Спартана. Сначала хотел 16-разрядное АЛУ, но для фон-неймановской архитектуры появляются лишние мультиплексоры(и задержки), поэтому отказался пока от такого варианта. Дописал, ~400лут ~100МГц для Спартан3, ~300лут ~200МГц для Virtex5. Так что "безрегистровая" архитектура - в самый раз для FPGA, имхо.
|
|
|
|
|
Oct 23 2008, 18:50
|

Гуру
     
Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553

|
Тут рано судить. Надо собирать реальную систему(хотя бы простейшую timer+uart+пару кило внутрикристальной памяти) и смотреть. Для полноты надо еще прерывания, shifter и возможность работать с байтами/шортами. Если не сложно - соберите ваш код под cyclone и огласите результат. Ну а дальше - сравнение эффективности на памяти CL2-CL3 без кэша. Цитата Так что "безрегистровая" архитектура - в самый раз для FPGA, имхо. Я уже упоминал по моему - у вас не безрегистровая архитектура, а регистровая с вынесенным относительно ядра регистровым файлом  Вопрос стоит как раз в эффективности вынесения.
|
|
|
|
|
Oct 27 2008, 10:38
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
Цитата(Leka @ Oct 23 2008, 22:27)  Цифры для ядра с памятью 2К*32. Установлен только ISE, так что для циклона пока нет возможности синтезировать, но ожидаю сопоставимые цифры. Периферии пока нет, идеология обмена поменялась - все переделывать придется. что там с новой идеологией?
|
|
|
|
|
Oct 27 2008, 12:38
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Цитата(Mahagam @ Oct 27 2008, 14:38)  что там с новой идеологией? Обмен с периферией только в виде выполнения внешней команды c=ext(f,a,b ), где f - номер внешней команды/устройства, любой тип адресации a,b,c. Чтобы можно было, например: умножение f=1 --> c=ext(1,a,b ) --> c=a*b, запись в видеобуфер f=2 c=ext(2,a,b ) --> c=vga[a], vga[a]=b, и тд и тп.
Сообщение отредактировал Leka - Oct 27 2008, 12:39
|
|
|
|
|
Nov 18 2008, 03:54
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Leka @ Oct 27 2008, 07:38)  Обмен с периферией только в виде выполнения внешней команды c=ext(f,a,b ), где f - номер внешней команды/устройства, любой тип адресации a,b,c. Чтобы можно было, например: умножение f=1 --> c=ext(1,a,b ) --> c=a*b, запись в видеобуфер f=2 c=ext(2,a,b ) --> c=vga[a], vga[a]=b, и тд и тп. решил пройтись по opencores а вот это не безрегистровый ли процессор ?  ) http://opencores.org/projects.cgi/web/tiny8/overviewThe registers resides in RAM addressed via a base pointer in the WP register (like the TMS9900).
--------------------
|
|
|
|
|
Nov 18 2008, 12:44
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Описание(архитектура, система команд, ...) - интересно взглянуть, но логина нет пока(запрос послал). Свой опробовал на простом примере(вывод фонта в цикле на VGA), и отложил в сторону, сейчас главное - прикрутить ЯВУ. Требования к ЯВУ: 1) из распространенных, с исходниками, 2) легко настраиваемый компилятор - самокомпилирующийся, и с минимумом машинно-зависимого кода(<1К строк), 3) генерация компактного(<2Кслов) кода.
|
|
|
|
|
Jan 21 2009, 22:58
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Пишу компилятор автокода "безрегистрового"(с регистровым файлом на памяти) софт-ядра: - более низкий уровень - только в машинных кодах - построчная запись операторов - оптимизация только в пределах строки - одна строка на автокоде может транслироваться в несколько машинных команд - отсутствие типов - всегда подразумевается "integer" - отсутствие адресных операторов и типов - только индексная адресация Цель введенных ограничений - переносимость программ между разными версиями ядер. Пример программы "N ферзей" (из ветки "Паскаль для АВР") на автокоде: Код procedure queens(N, count) var arow[N], aleft[N], aright[N], aposs[N] poss, place, val, pos begin count = 0 val = shl(1, N) - 1 pos = 1 arow[1] = 0 aleft[1] = 0 aright[1] = 0 aposs[1] = shr(1, N / 2) poss = aposs[1] while pos <> 0 if poss <> 0 place = poss & - poss poss &= ~ place if pos = 1 and poss = 0 and (N & 1) <> 0 count *= 2 end if pos <> N aposs[pos] = poss arow[pos + 1] = arow[pos] | place aleft[pos + 1] = (aleft[pos] | place) * 2 aright[pos + 1] = (aright[pos] | place) / 2 poss = ~ (arow[pos + 1] | aleft[pos + 1] | aright[pos + 1]) & val pos += 1 else count += 1 end else pos -= 1 poss = aposs[pos] end end if (N & 1) = 0 count *= 2 end end
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|