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

 
 
9 страниц V  « < 7 8 9  
Reply to this topicStart new topic
> Порекомендуйте какое-нибудь softcore, Для Altera
Leka
сообщение May 25 2009, 17:51
Сообщение #121


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

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



Цитата(SM @ May 25 2009, 21:19) *
Вы для Lattice PAR делали? Или оценка по какому-нить Precision? Если PAR не делали, то эту оценку надо выкинуть на свалку.

PAR после Synplify (не Synplify-Pro), все настройки по умолчанию.
Go to the top of the page
 
+Quote Post
SM
сообщение May 25 2009, 17:58
Сообщение #122


Гуру
******

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



Цитата(Leka @ May 25 2009, 21:51) *
PAR после Synplify (не Synplify-Pro), все настройки по умолчанию.

Тогда сорри. Просто сам когда-то проходил, что без PAR (isplever) оценки синтезаторов слишком оптимистичны, у синплифи еще более менее, а у Precision просто неадекватны.
Go to the top of the page
 
+Quote Post
Leka
сообщение Jun 10 2009, 19:28
Сообщение #123


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

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



Написал компилятор и упростил ядро - при большом регистровом файле на памяти развитая система адресации оказалась неэффективной. Новое ядро заметно меньше, и немного быстрее.
В железе пока не пробовал, тестирую в функциональном эмуляторе - скорость эмуляции ~2 МГц тактовой, можно и большие/сложные программы гонять. N-ферзей компилируется в ~100 слов (код + данные без учета 80 слов, занимаемых массивами), исполняется без ошибок (в эмуляторе). smile.gif

CODE
module queens
N, N2, count, poss, place, val, pos, pos1, i, j
arow:20, aleft:20, aright:20, aposs:20
begin
for N:=1 to 16
count := 0
j := 1
for i := 1 to N
j := j * 2
end
val := j - 1
pos := 1
arow[1] := 0
aleft[1] := 0
aright[1] := 0
j := val
N2 := N / 2
for i := 1 to N2
j := j / 2
end
aposs[1] := j
poss := aposs[1]
while pos <> 0
if poss <> 0
place := poss & - poss
poss := poss & ~ place
if pos == 1 and poss == 0 and N & 1 <> 0
count := count * 2
end
if pos <> N
pos1 := pos + 1
aposs[pos] := poss
arow[pos1] := arow[pos] | place
aleft[pos1] := (aleft[pos] | place) * 2
aright[pos1] := (aright[pos] | place) / 2
poss := ~ (arow[pos1] | aleft[pos1] | aright[pos1]) & val
pos := pos1
else
count := count + 1
end
else
pos := pos - 1
poss := aposs[pos]
end
end
if (N & 1) == 0
count := count * 2
end
out := count //вывод результата в порт
end
end



~Исходник на Си:
http://electronix.ru/forum/index.php?showt...st&p=516828

Сообщение отредактировал Omen_13 - Jun 20 2009, 15:08
Go to the top of the page
 
+Quote Post
Leka
сообщение Jun 10 2009, 22:13
Сообщение #124


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

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



Посмотрел такты - при N=13 (ответ 73712) код выполняется за ~200 млн. тактов, те за ~2 сек на Спартане3(~100МГц). Аналогичный код на Delphi(консоль) ~2ГГц x86(AMD) считает
за ~0,04 сек, те в 50 раз быстрее(хотя тактовая больше в ~200 раз).
Go to the top of the page
 
+Quote Post
Leka
сообщение Jun 10 2009, 23:42
Сообщение #125


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

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



Цитата
хотя тактовая больше в ~200 раз

Sorry, в ~20 раз (2ГГц vs 100МГц).
Go to the top of the page
 
+Quote Post
Leka
сообщение Jun 15 2009, 05:58
Сообщение #126


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

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



Хотелось-бы посмотреть результаты компиляции(размер кода, листинг, если есть, и такты) для NIOS-2, MicroBlaze(EDK не установлен),и др софт-процессоров, для сравнения. Исходники N-ферзей можно отсюда:
http://electronix.ru/forum/index.php?showt...mp;#entry516828


На Си давно уже не пишу, не хотелось-бы только для сравнения ставить, разбираться... А Паскаля для софт-процессоров нет.

Сообщение отредактировал Leka - Jun 15 2009, 05:53
Go to the top of the page
 
+Quote Post
blackfin
сообщение Jun 15 2009, 06:54
Сообщение #127


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Leka @ Jun 11 2009, 02:13) *
Посмотрел такты - при N=13 (ответ 73712) код выполняется за ~200 млн. тактов, те за ~2 сек на Спартане3(~100МГц). Аналогичный код на Delphi(консоль) ~2ГГц x86(AMD) считает
за ~0,04 сек, те в 50 раз быстрее(хотя тактовая больше в ~200 раз).

На BF537-600 при N=13 код выполняется за ~213 млн. тактов, те за ~0,36 сек (CPU_CLOCK = 600МГц).

Исходники N-ферзей отсюда: http://electronix.ru/forum/index.php?showt...mp;#entry516828

Сообщение отредактировал blackfin - Jun 15 2009, 06:55
Go to the top of the page
 
+Quote Post
Leka
сообщение Jun 15 2009, 09:06
Сообщение #128


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

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



Любопытно, для N-ферзей пока получается ~одинаковое количество тактов для двух архитектур:
1) BF: 1 такт на инструкцию, и 8 32-разрядных(или 16 16-разрядных) РОН + адресные, индексные, и др специальные регистры. Если не путаю.
2)моя текущая: 2..3 такта на инструкцию: 3 такта на load/store(a[i]:=b, b:=a[i]), 2 такта на все остальные, и 1К 32-разрядных РОН. В среднем для задач с массивами ~2.5 такта/инструкция, те ~40 MIPS для 100 МГц тактовой.
Go to the top of the page
 
+Quote Post
Leka
сообщение Jun 16 2009, 12:51
Сообщение #129


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

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



Мысли вслух... a[ i ] - фактически ((a)+(i)), поэтому a[ i ] эквивалентно i[ a ] (в безтиповом языке), a a[ i ][ j ][ k ] эквивалентно k[ j[ i[ a ] ] ]. Т.е. многомерный массив - частный случай одномерного. Кроме того, k[ j[ i[ a ] ] ] требует меньше инструкций и тактов, чем a[i*n+j*m+k].

Цитата(blackfin @ Jun 15 2009, 10:54) *
На BF537-600 при N=13 код выполняется за ~213 млн. тактов, те за ~0,36 сек (CPU_CLOCK = 600МГц).

Исходники N-ферзей отсюда: http://electronix.ru/forum/index.php?showt...mp;#entry516828

Наверно, надо подправить типы, чтобы не было операций приведения типов.
Go to the top of the page
 
+Quote Post

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

 


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


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