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

 
 
9 страниц V  « < 6 7 8 9 >  
Reply to this topicStart new topic
> Порекомендуйте какое-нибудь softcore, Для Altera
Mahagam
сообщение Oct 20 2008, 11:11
Сообщение #106


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



Цитата(vetal @ Oct 20 2008, 13:22) *
а) Вы хотите за 1 такт что-то большее, чем R3=R1+R2? Это идеология всех современных ядер, начиная от микроблэйзов, ниосов, армов и заканчивая спарками.
б) Память в любой системе - слабое место. Дюже это сколько?

опять упомяну PDP11. например хочется чего-то подобного на add @R1+, @R2+
тут не за такт, но в одну команду совершается много действий. вся соль в том, что шина данных освобождается от выборки кучи команд.

и, кстати, вы неправы относительно, например, АРМа, там в одну команду пихается тьма действий. wacko.gif другое дело, что браться за реализацию ядра арма я буду только под принуждением smile.gif
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 20 2008, 13:29
Сообщение #107


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

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



В вариант с внутренней памятью программ/данных можно будет добавить поддержку внешней SPI флешки - для неторопливого выполнения длинного внешнего кода.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 22 2008, 03:50
Сообщение #108


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

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



Цитата(Mahagam @ Oct 20 2008, 06:11) *
опять упомяну PDP11. например хочется чего-то подобного на add @R1+, @R2+
тут не за такт, но в одну команду совершается много действий. вся соль в том, что шина данных освобождается от выборки кучи команд.


Года 2-3 назад была подобная тема, помню высказывание SM, он говорил о том что при современном уровне развития электроники идет откат от RISC архитектур в пользу CISC. Т.к. они более гибкие у уже почти не проигрывают в производительности RISC.

PDP11 ИМХО очень красивая архитектура для фпга, вот выйду на пенсию займусь %)

Цитата
и, кстати, вы неправы относительно, например, АРМа, там в одну команду пихается тьма действий. wacko.gif другое дело, что браться за реализацию ядра арма я буду только под принуждением smile.gif


подход микроблейза по своей сути арм7 и есть %)


--------------------
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 23 2008, 17:42
Сообщение #109


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

Группа: Участник
Сообщений: 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, имхо.
Go to the top of the page
 
+Quote Post
vetal
сообщение Oct 23 2008, 18:50
Сообщение #110


Гуру
******

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



Тут рано судить. Надо собирать реальную систему(хотя бы простейшую timer+uart+пару кило внутрикристальной памяти) и смотреть. Для полноты надо еще прерывания, shifter и возможность работать с байтами/шортами.
Если не сложно - соберите ваш код под cyclone и огласите результат.
Ну а дальше - сравнение эффективности на памяти CL2-CL3 без кэша.

Цитата
Так что "безрегистровая" архитектура - в самый раз для FPGA, имхо.

Я уже упоминал по моему - у вас не безрегистровая архитектура, а регистровая с вынесенным относительно ядра регистровым файлом smile.gif Вопрос стоит как раз в эффективности вынесения.
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 23 2008, 19:27
Сообщение #111


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

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



Цифры для ядра с памятью 2К*32. Установлен только ISE, так что для циклона пока нет возможности синтезировать, но ожидаю сопоставимые цифры. Периферии пока нет, идеология обмена поменялась - все переделывать придется.
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Oct 27 2008, 10:38
Сообщение #112


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



Цитата(Leka @ Oct 23 2008, 22:27) *
Цифры для ядра с памятью 2К*32. Установлен только ISE, так что для циклона пока нет возможности синтезировать, но ожидаю сопоставимые цифры. Периферии пока нет, идеология обмена поменялась - все переделывать придется.

что там с новой идеологией?
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 27 2008, 12:38
Сообщение #113


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

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 18 2008, 03:54
Сообщение #114


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

Группа: Модераторы
Сообщений: 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

а вот это не безрегистровый ли процессор ? smile.gif)

http://opencores.org/projects.cgi/web/tiny8/overview

The registers resides in RAM addressed via a base pointer in the WP register (like the TMS9900).


--------------------
Go to the top of the page
 
+Quote Post
Leka
сообщение Nov 18 2008, 12:44
Сообщение #115


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

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



Описание(архитектура, система команд, ...) - интересно взглянуть, но логина нет пока(запрос послал). Свой опробовал на простом примере(вывод фонта в цикле на VGA), и отложил в сторону, сейчас главное - прикрутить ЯВУ. Требования к ЯВУ:
1) из распространенных, с исходниками,
2) легко настраиваемый компилятор - самокомпилирующийся, и с минимумом
машинно-зависимого кода(<1К строк),
3) генерация компактного(<2Кслов) кода.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 19 2008, 05:06
Сообщение #116


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

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



Цитата(Leka @ Nov 18 2008, 07:44) *
Описание(архитектура, система команд, ...) - интересно взглянуть, но логина нет пока(запрос послал).


Если еще не пришло
Прикрепленные файлы
Прикрепленный файл  tiny8.tar.tar ( 339.57 килобайт ) Кол-во скачиваний: 55
 


--------------------
Go to the top of the page
 
+Quote Post
Leka
сообщение Nov 19 2008, 14:53
Сообщение #117


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

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



Посмотрел, самый информативный файл - opcodes.txt, имхо. Что заметил:
1) load/store архитектура - косвенная адресация только для команды MOV(не считая JMP),
2) отсутствие команды перехода на подпрограмму,
3) основные команды - 3х-байтные,
4) отсутствие IN/OUT команд.

По поводу ЯВУ - пересмотрел кучу проектов в инете - так и не выбрал
какой-либо за основу - хард оказывается намного мягче софта.
Go to the top of the page
 
+Quote Post
Leka
сообщение Jan 21 2009, 22:58
Сообщение #118


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

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Leka
сообщение May 24 2009, 19:59
Сообщение #119


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

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



Перерыв был большой в этом проекте...

Посмотрел для Cyclone3 - ~600 ЛУТ, ~80 МГц, 10 блоков M9K.
На LatticeXP2 лучше переносится - ~500 ЛУТ, ~115 МГц, 4 блока памяти (по 18К).

Компилятор в тетрады почти готов (queens компилируется в ~60 команд), дальше тривиально - перевод в машинные коды. Сейчас ~700 строк на Паскале, думаю уложиться в ~1000 строк - рефакторинг проще будет делать. В планах - набить 64 ядра с 0.5Кслов памяти каждое в Spartan3A-DSP, и запустить queens впараллель - сравню с ПК.
Go to the top of the page
 
+Quote Post
SM
сообщение May 25 2009, 17:19
Сообщение #120


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Вы для Lattice PAR делали? Или оценка по какому-нить Precision? Если PAR не делали, то эту оценку надо выкинуть на свалку.
Go to the top of the page
 
+Quote Post

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

 


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


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