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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> ПЛИС для вычислений с длинной арифметикой
blackfin
сообщение Nov 28 2017, 11:00
Сообщение #16


Гуру
******

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



Цитата(planetzeus @ Nov 28 2017, 13:37) *
Я не спец в электронике, вот например схема:
...
после такого сумматора первого уровня получаем два числа, которые затем складываем как в обычном сумматоре с итерациями и переносами...

На мой взгляд, все сумматоры расположенные выше побочной диагонали вообще не нужны.. wink.gif
Go to the top of the page
 
+Quote Post
planetzeus
сообщение Nov 28 2017, 11:07
Сообщение #17





Группа: Участник
Сообщений: 9
Регистрация: 27-11-17
Пользователь №: 100 387



Цитата(AVR @ Nov 28 2017, 14:54) *
Не, не то хотел спросить. Во имя чего такая задача решается в принципе? Дичь невиданная sm.gif
Или нет возможности раскрыть конечное предназначение?

Почему дичь? например в RSA тоже используется длинная арифметика. У меня задача связана с другой темой, но также немного имеет отношение к криптографии.
Мне нужно быстрое АЛУ для длинных чисел, что тут дикого?) Микропроцессоры, на мой взгляд, в любом случае медленнее, чем быстрая логика
Go to the top of the page
 
+Quote Post
Alex77
сообщение Nov 28 2017, 11:21
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 281
Регистрация: 2-12-05
Пользователь №: 11 695



Цитата(planetzeus @ Nov 28 2017, 13:37) *
Всё, что мне нужно - это операция (2x+1), инкремент и сумма двух чисел.
Я уже сказал, операция 2x + 1 на логике в любом случае будет быстрее, так как это можно сделать за единицу времни. Т.е есть на входе схемы число X из 8000 бит, на выходе X*2+1, простая логическая схема.

Почему-то мне кажется что некорректно описано задание.
"X*2+1" - сиё означает умножение на 2 те сдвиг и пририсовывание бита 1.
Всё это реализуется "статическим сдвигом (т.е. реального сдвига нет)" и добавления вечной 1-цы.
Таким образом схема будет работать на максимальной скорости в 500МГц.

А на словах задание звучит как "А+Б+1".
Что Автору требуется ?
wacko.gif
Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 28 2017, 11:21
Сообщение #19


Гуру
******

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



Цитата(planetzeus @ Nov 28 2017, 14:07) *
Мне нужно быстрое АЛУ для длинных чисел, что тут дикого?

Вы не сказали, что нужно делать с полученной суммой двух длинных чисел. Если это однократная операция, то вполне вероятно, что запись/чтение в/из ПЛИС как раз и будут определять скорость всего алгоритма в целом. Как вы собираетесь загружать в ПЛИС 8000-разрядные числа?
Go to the top of the page
 
+Quote Post
planetzeus
сообщение Nov 28 2017, 11:38
Сообщение #20





Группа: Участник
Сообщений: 9
Регистрация: 27-11-17
Пользователь №: 100 387



Цитата(Alex77 @ Nov 28 2017, 15:21) *
"X*2+1" - сиё означает умножение на 2 те сдвиг и пририсовывание бита 1.
Всё это реализуется "статическим сдвигом (т.е. реального сдвига нет)" и добавления вечной 1-цы.
Таким образом схема будет работать на максимальной скорости в 500МГц.

А на словах задание звучит как "А+Б+1".
Что Автору требуется ?
wacko.gif

Именно! Нужна максимальная скорость - все операции, которые можно реализовать схемой вход->[схема]->выход (с нужным значением). Операций нужно несколько, я ж написал. (2х+1) - одна операция. А+Б - другая операция. Сравнение с 0 - третья операция, которая тоже решается логической схемой.

Мне требуется только грамотный совет) Какой девайс выбрать чтобы все это пробовать? Т.е чтобы хватило логических элементов, чтобы была максимальная скорость. Девайсы недешевые, не хотелось бы потратить деньги и понять, что полностью реализовать не получится потому что мало элементов, или другие ограничения.

Цитата(blackfin @ Nov 28 2017, 15:21) *
Как вы собираетесь загружать в ПЛИС 8000-разрядные числа?

Я думаю последовательно. Т.е если будут например 4 регистра по 8000 бит, то 2 внешних пина на выбор регистра, один пин для data, один на синхронизацию. Еще раз говорю, я не спец в электронике. Максимум, что я делал - это RPi и на уровне "помигать светодиодом". Вот хочу освоить ПЛИС, спрашиваю у людей с опытом совета.

Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 28 2017, 11:44
Сообщение #21


Гуру
******

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



Цитата(planetzeus @ Nov 28 2017, 14:38) *
Мне требуется только грамотный совет. Какой девайс выбрать чтобы все это пробовать? Т.е чтобы хватило логических элементов, чтобы была максимальная скорость.

Выбирайте Stratix 10. Его скорости вам точно хватит.. biggrin.gif
Go to the top of the page
 
+Quote Post
jojo
сообщение Nov 28 2017, 12:23
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 9-10-04
Из: СССР
Пользователь №: 827



Цитата(blackfin @ Nov 28 2017, 14:44) *
Выбирайте Stratix 10. Его скорости вам точно хватит.. biggrin.gif


Или Xilinx Kintex-7, Virtex-7 и более новые Ultrascale. Я бы взял что-то из середины семейства примерно на 400...500 тыс. триггеров. Потому что больше не потянет система охлаждения и питания отладочной платы.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 28 2017, 12:28
Сообщение #23


Гуру
******

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



Цитата(jojo @ Nov 28 2017, 15:23) *
Или Xilinx Kintex-7, Virtex-7 и более новые Ultrascale. Я бы взял что-то из середины семейства примерно на 400...500 тыс. триггеров. Потому что больше не потянет система охлаждения и питания отладочной платы.

Да всё потянет! Не болтайте ерундой!!! DK-U1-VCU1525-A-G.....
Go to the top of the page
 
+Quote Post
jojo
сообщение Nov 28 2017, 12:45
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 9-10-04
Из: СССР
Пользователь №: 827



Цитата(blackfin @ Nov 28 2017, 15:28) *
Да всё потянет! Не болтайте ерундой!!! DK-U1-VCU1525-A-G.....


Кстати, да, это тоже вариант для больших чисел.. Да что там, для любых чисел! Ток по VCCINT под 80А, если я правильно понял, и активное охлаждение. Надо брать.
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение Nov 28 2017, 12:55
Сообщение #25


fpga designer
****

Группа: Свой
Сообщений: 575
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



И все-таки по поводу девайса, посмотрите на решения серверные, отработайте там - https://aws.amazon.com/ru/ec2/instance-types/f1/
Это сэкономит деньги, ибо если не понравится плис, то уйдете на что-то другое, заплатив пару баксов за час.


--------------------
Go to the top of the page
 
+Quote Post
Realking
сообщение Nov 28 2017, 12:57
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 457
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(planetzeus @ Nov 28 2017, 14:38) *
Вот хочу освоить ПЛИС, спрашиваю у людей с опытом совета.


Отличная задача для освоения ПЛИС )


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Nov 28 2017, 13:55
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 934
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую.
Цитата(planetzeus @ Nov 28 2017, 14:38) *
Именно! Нужна максимальная скорость - все операции, которые можно реализовать схемой вход->[схема]->выход (с нужным значением). Операций нужно несколько, я ж написал. (2х+1) - одна операция. А+Б - другая операция. Сравнение с 0 - третья операция, которая тоже решается логической схемой.

Было бы интересно увидеть алгоритм вычисления.
А так я уже выше писал по грубой прикидке для 8K бит надо будет 3-4 такта (200-300 MHz) на одну операцию -
получить цикл на операцию 10нc еще надо будет попотеть. Для начала значения в 100-20 нс на цикл более реалистично

Цитата(planetzeus @ Nov 28 2017, 14:38) *
Мне требуется только грамотный совет) Какой девайс выбрать чтобы все это пробовать? Т.е чтобы хватило логических элементов, чтобы была максимальная скорость. Девайсы недешевые, не хотелось бы потратить деньги и понять, что полностью реализовать не получится потому что мало элементов, или другие ограничения.

Берите ... ModelSim, Vivado, Quartus большего Вам в ближайший месяц-два-три и не понадобится.
А затем уж Вы и сами сможете ответить на этот вопрос на какой FPGA Вам будет выгодно реализовать Ваш алгоритм.

Конечно если очень хочется то можно сразу брать плату на Virtex UltarScale+ или Aria10 -не ошибетесь - к тому же мигание светодиода на плате в 10-15K $ особенно завораживающе выглядит. sm.gif

Удачи! Rob.


Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 28 2017, 14:14
Сообщение #28


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(planetzeus @ Nov 28 2017, 14:07) *
Почему дичь? например в RSA тоже используется длинная арифметика. У меня задача связана с другой темой, но также немного имеет отношение к криптографии.
Мне нужно быстрое АЛУ для длинных чисел, что тут дикого?) Микропроцессоры, на мой взгляд, в любом случае медленнее, чем быстрая логика

Тут советуют новичку взяться сначала за симуляторы, а не за плис. И это верно, для первого шага.

Я бы пошел дальше и посоветовал тут для начала набросать алгоритм, чтобы он работал в матлабе/питоне/что_там_еще, чтобы было видно что всё успешно разбилось на много тактов, и результат такой же как и у "медленной версии на процессоре". И вот когда всё будет разбито на маленькие стадии, вот тогда можно пытаться это сделать на языке Verilog HDL.


--------------------
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Nov 28 2017, 15:20
Сообщение #29


ʕʘ̅͜ʘ̅ʔ
****

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



Использовать CLA.

Если есть ограничения на pipeline delay, то нужно балансировать между разрядностью элементарного сумматора и длиной цепочки переносов для достижения максимальной Fclk. Например, использование DSP-блоков позволит сделать быстрый элементарный сумматор для CLA, скажем, разрядностью 48х8 и, как следствие, цепь переносов длиной ceil{8000/(48х8)} ~= 20.

Если ограничений на pipeline delay в сумматоре не накладывается, то всё становится совсем просто, и работать будет на околопредельных частотах ПЛИС при любом внятном описании конвеера.

В одно действие задачка в общем-то. Вполне подойдет для собеседований на конкурс "творчество юных".

Самое сложное на мой взгляд - загрузить получившееся устройство данными, чтобы обеспечить коэффициент использования ресурсов хотя бы 0.1, иначе зачем это всё.
Go to the top of the page
 
+Quote Post
krux
сообщение Nov 28 2017, 17:09
Сообщение #30


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

Группа: Свой
Сообщений: 1 579
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



planetzeus
Перенос в FPGA "только АЛУ", как вы это описали - не даст сколько-либо ценного результата.
При переносе в FPGA необходимо вынести в него определенный блок, довольно большой, который осуществляет определенную обработку (заведомо более 10...20 операций) по заранее известному алгоритму. В этим случае можно будет ставить в качестве целей, например, "производительность блока на гарантированном уровне не менее стольких-то обработанных бит на такт" и выстраивать подобные вещи.
Если вы прямо сейчас обладаете только навыками программиста - то для начала вам необходимо зачеркнуть всё, что вы ранее знали про обработку данных при помощи микросхем, и сменить парадигму с "у меня есть жесткий набор инструкций для ЦПУ или АЛУ" на "я могу сделать столько нужных мне действий за такт, сколько мне нужно". Крамольный смысл здесь в чем: матерого программиста сложно переучить на сколь-нибудь годного HDL-щика, в силу того, что программиста с рождения учили что на ЦПУ может выполняться только одна инструкция одновременно. А в HDL можно сделать одновременным выполнение стольких инструкций, сколько нужно. Следующий момент связан с тем, что "матерый программист со стажем" не понимает, что язык описания архитектуры HDL - это не язык программирования. Приходится долго и упорно объяснять, что единственно правильным решением для HDL - является реализация конечного автомата. Что для этого автомата необходимо заранее наметить условия изменения состояния, действия, выполняемые при изменении состояния. Ибо программистам как правило пофиг, потому что они считают что "ежели я не менял значение переменной, то оно должно сохранять свое состояние" по умолчанию, однако в HDL умолчания ведут к провалу; ну и про то, что в результате перехода конечного автомата через несколько состояний что-то где-то может измениться - им тоже плевать. Поначалу. Потом они просто сдаются.
Поэтому.
При переходе от языков программирования высокого уровня необходимо обязательно "слезть с дерева", и перестать считать, что все что ты пишешь на языке HDL - это примерно то же самое что и на C-ях, к примеру.
Это не так, от слова "совсем".
Поэтому у вас два пути - либо найти человека, который в ладах с HDL, и сможет внятно сформулировать какой же вычислительный блок вам сможет помочь, и что для этого нужно, либо "встрять надолго" начав изучение с азов.


Цитата
Я думаю последовательно. Т.е если будут например 4 регистра по 8000 бит, то 2 внешних пина на выбор регистра, один пин для data, один на синхронизацию.

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

зы. полагаю, что если ваш изначальный алгоритм полностью "развернуть", или "по-программистски сделать unroll & inline", то биты конечного результата всегда будут выражаться через биты входных данных. Тогда в "блоке обработки", который планируется к переносу на FPGA нужно эту матрицу (либо несколько матриц) описать, После чего уже пытаться оптимизировать сложность этих действий в раскладках по тактам, и т.д. о чем вам опять-таки сможет объяснить найденный вами человек, который в ладах с HDL

ззы. если у вас есть выход на ИПМ Келдыша РАН, (и если это будет для вас достаточно), то там есть гибридные варианты суперкомпьютеров с интегрированными мульти-модулями ПЛИС, на очень специфическом языке программирования, из семейства C. При этом не придется изучать HDL, но думать конкуррентно-параллельно при создании алгоритма всё равно придется.
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 Текстовая версия Сейчас: 11th December 2017 - 11:07
Рейтинг@Mail.ru


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