Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Full Adder vs DPS48, что быстрее.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
count_enable
Возник такой полутеоретический вопрос. Надо считать сумму ряда 18-битных чисел итерационно, Р(х)=Р(х-1)+А(х). Что будет быстрее: сумматор в CLB или DPS48 блок и корка Adder из CoreGen? Числа идут из BRAM.
"Возьми напиши сумматор, и сравни" - скажете вы. Но я не уверен что мой сумматор будет самый оптимальный и что размещение в ПЛИС не будет влиять на скорость. Рассматриваем 6 и 7 семейство Xilinx, а так же интересует результат для Altera Cyclone V, о которой я знаю только то что там DSP 9-битные.
Bad0512
Цитата(count_enable @ Oct 30 2015, 16:15) *
Возник такой полутеоретический вопрос. Надо считать сумму ряда 18-битных чисел итерационно, Р(х)=Р(х-1)+А(х). Что будет быстрее: сумматор в CLB или DPS48 блок и корка Adder из CoreGen? Числа идут из BRAM.
"Возьми напиши сумматор, и сравни" - скажете вы. Но я не уверен что мой сумматор будет самый оптимальный и что размещение в ПЛИС не будет влиять на скорость. Рассматриваем 6 и 7 семейство Xilinx, а так же интересует результат для Altera Cyclone V, о которой я знаю только то что там DSP 9-битные.

На таких разрядностях ИМХО на логике будет как минимум не хуже. После БРАМки надо влепить промежуточный регистр - тайминги по выходу БРАМок всегда хромают. Гробить 35-битный аппаратный сумматор из DSP блока на такое жалко, мне кажется это расточительно. Кореген вам чудес не сделает - в конце концов он тоже применит один из двух вариантов. Ну а написать "неоптимальный" сумматор - это очень постараться надо.
З Ы Всё вышесказанное относилось к Xilinx.
Vascom
Суммировать в DSP48 скорее всего нет смысла. Они больше нужны для операций умножения, которые иначе занимали бы кучу места на логике.
А тут просто аккумулятор получается на одном сумматоре, даже не одновременное суммированием множества чисел.
count_enable
Цитата
Гробить 35-битный аппаратный сумматор из DSP блока на такое жалко
Чаго их жалеть, нехристей? Если на кристалле они уже есть и не используются в других модулях, несоразмерность задаче не важна.

Интересует только макс. скорость работы (pipeline произвольной длины если нужно), и оценка энергопотребления. DSP относительно прожорливы.
RobFPGA
Приветствую!

To Bad0512,Vascom "учите матчасть Шура" DSP48 как раз для таких дел заточены -
можно легко сделать накаливающий сумматор с мак частотой 450-500 MHz. На CLB для этого ох как попотеть придется

Успехов! Rob.
count_enable
А вот и ответ от Xilinx на мой вопрос: http://www.xilinx.com/support/documentatio...ru/c-accum.html

Виртекс7: Fabric: 615 MHz, 32 LUT, 43 FF. DSP: 544 MHz, 0 LUT,0 FF. На таких скоростях ограничивать будут другие элементы - тот же BRAM, хотя бы.

Виртекс5: на логике 410 МГц для 32-битного аккумулятора, на DSP 450 МГц. Так что вопрос не так прост как кажется.

Спасибо всем отписавшимся, еще расскажите мне об Альтере и получите большое спасибо sm.gif.
Vascom
Цитата(RobFPGA @ Oct 30 2015, 14:27) *
Приветствую!

To Bad0512,Vascom "учите матчасть Шура" DSP48 как раз для таких дел заточены -
можно легко сделать накаливающий сумматор с мак частотой 450-500 MHz. На CLB для этого ох как попотеть придется

Успехов! Rob.

Ну если это основная задача, и DSP48 не жалко, то конечно можно. Хотя узким местом по скорости может стать уже BRAM.
Зато логика позволяет более гибко и масштабируемо это выполнять.

Просто не сталкивался с задачами в 400-500МГц вычислительных на FPGA. У меня на 100-200МГц.

Цитата(count_enable @ Oct 30 2015, 14:37) *
... На таких скоростях ограничивать будут другие элементы - тот же BRAM, хотя бы.

Тогда стоит подумать над распараллеливанием задачи и использованием нескольких сумматоров/аккумуляторов, получающих данные из разных BRAM например.
Это же FPGA, надо пользоваться параллельностью.
bogaev_roman
Цитата(count_enable @ Oct 30 2015, 14:37) *
Виртекс7: Fabric: 615 MHz, 32 LUT, 43 FF. DSP: 544 MHz, 0 LUT,0 FF. На таких скоростях ограничивать будут другие элементы - тот же BRAM, хотя бы.
Виртекс5: на логике 410 МГц для 32-битного аккумулятора, на DSP 450 МГц. Так что вопрос не так прост как кажется.

Для DSP это реальная скорость, которая практически не будет зависеть от заполненности кристалла, для логики - максимально возможная, при большой заполненности достичь такой частоты нереально и тут никакое дублирование логики не спасет с конвейером да и разводится будет долго. Так что на таких скоростях однозначно DSP, если есть возможность.
Ps/ я для стратикса IV делал схожий сумматор на частоту 250МГц, отдельно все замечательно работало, вставлял несколько таких в проект - все разваливалось, пока жестко не зафиксировал разводку отдельных кусков.
Pss все данные по максимальному быстродействию для отдельных элементов (DDR, DSP, триггеры, сумматоры, память) в даташитах прописаны.
Timmy
Цитата(RobFPGA @ Oct 30 2015, 14:27) *
To Bad0512,Vascom "учите матчасть Шура" DSP48 как раз для таких дел заточены -
можно легко сделать накаливающий сумматор с мак частотой 450-500 MHz. На CLB для этого ох как попотеть придется
Где тут потеть, по-моему накапливающий сумматор с латентностью 2-3 делается так же, как и простой сумматор с разбивкой цепи переноса на несколько ступеней конвейера. Работы на 5 минут 1111493779.gif , ну или 10. Только сигнал сброса аккумулятора тоже надо конвейеризовать и синхронизировать с разными ступенями аккумулятора.
count_enable
Цитата(bogaev_roman @ Oct 30 2015, 15:46) *
Ps/ я для стратикса IV делал схожий сумматор на частоту 250МГц, отдельно все замечательно работало, вставлял несколько таких в проект - все разваливалось, пока жестко не зафиксировал разводку отдельных кусков
Вот этого я и побаиваюсь при работе с логикой.

Цитата
Тогда стоит подумать над распараллеливанием задачи и использованием нескольких сумматоров/аккумуляторов, получающих данные из разных BRAM например.
Конечно, будет массив памяти и массив аккумуляторов.

В общем, пока буду делать на DSP. Благо coregen позволяет сгенерить корку на DSP и на логике с одинаковым интерфейсом, если что поменять можно как кубик лего.

Побочный вопрос по альтеровских DSP. Неоднократно слышал что по производительности и удобности не хуже Xilinx DSP48, но т.к. они 9-битные, как так может быть что каскадирование не влияет на производительность?
RobFPGA
Приветствую!

Цитата(Timmy @ Oct 30 2015, 13:57) *
Где тут потеть, по-моему накапливающий сумматор с латентностью 2-3 делается так же, как и простой сумматор с разбивкой цепи переноса на несколько ступеней конвейера. Работы на 5 минут 1111493779.gif , ну или 10. Только сигнал сброса аккумулятора тоже надо конвейеризовать и синхронизировать с разными ступенями аккумулятора.


Ага - а потом подождать 2-5 часов пока PR пыхтит и открыв результаты его труда вспотеть холодным потом и начать ваять констрэйны для фиксации расползшихся по кристаллу частей сумматоров, ограничения fanout для сигналов сброса или инициализации аккумулятора. sm.gif

Успехов! Rob.
bogaev_roman
Цитата(count_enable @ Oct 30 2015, 15:20) *
Побочный вопрос по альтеровских DSP. Неоднократно слышал что по производительности и удобности не хуже Xilinx DSP48, но т.к. они 9-битные, как так может быть что каскадирование не влияет на производительность?

Да одинаково все примерно, Вы просто сравниваете семейства разной весовой категории. Сравните не с циклоном, а стратиксом, у альтеры и документация приятней sm.gif
Bad0512
Цитата(RobFPGA @ Oct 30 2015, 17:27) *
Приветствую!

To Bad0512,Vascom "учите матчасть Шура" DSP48 как раз для таких дел заточены -
можно легко сделать накаливающий сумматор с мак частотой 450-500 MHz. На CLB для этого ох как попотеть придется

Успехов! Rob.

Напомню, что речь в изначальной задаче шла об аккумулировании 18-битных чисел. Это значит что с учётом накопления разрядности при суммировании, итоговая разрядность аккумулятора будет много меньше 35 бит.
И соответственно обычный сумматор порвёт по скорости DSP блок как тузик грелку. Про то, кто на что заточен, видимо глупо указывать - умение читать документацию не является уникальным, многие обладают этим ремеслом.

З Ы Автору - сколько чисел планируете суммировать? Важно для расчёта разрядности аккумулятора.
count_enable
От 100 до 1000. Архитектура массивно-параллельная, т.е. аккумуляторов будет несколько сотен на кристалл. И я не уверен в гениальности P&R ISE14.7 настолько чтобы развести такое количество аккумуляторов с максимально одинаковыми временными характеристиками. На дсп проверил - масштабируется практически без потерь скорости.
Vascom
Почему не уверен? Сумматор же копейки занимает на логике + один регистр - вот и аккумулятор готов.
count_enable
Синхронность важна.
Vascom
Ну так клок обеспечит абсолютную синхронность.
count_enable
А вот растекание этого клока мысию по клоковому древу, и одинаковое латенси для всех аккумуляторов это вопрос нетривиальный. Попробую на этой неделе сделать хотя бы сотню аккумуляторов, отпишусь про результат.
Vascom
Затактируй всё от внутренней PLL, даже если частоту менять не требуется. Он всё проанализирует и сделает оптимальное клоковое дерево, подстроив задержку внутри PLL.
RobFPGA
Приветствую!
Цитата(count_enable @ Nov 2 2015, 12:30) *
А вот растекание этого клока мысию по клоковому древу, и одинаковое латенси для всех аккумуляторов это вопрос нетривиальный. Попробую на этой неделе сделать хотя бы сотню аккумуляторов, отпишусь про результат.

А что Вы такое (если не секрет) грандиозное аккумулируете? И что потом с накопленными суммами делать собираетесь?

Успехов! Rob.
count_enable
Цитата(RobFPGA @ Nov 2 2015, 14:33) *
Приветствую!

А что Вы такое (если не секрет) грандиозное аккумулируете? И что потом с накопленными суммами делать собираетесь?

Успехов! Rob.

Деньги sm.gif. А на сбережения куплю мотоцикл sm.gif)).

Ну а если не получится - тогда импульсная нейронка. Она тем хороша что там входы всегда 0 или 1, поэтому умножение не требуется.
RobFPGA
Приветствую!

Цитата(count_enable @ Nov 2 2015, 14:29) *
Деньги sm.gif. А на сбережения куплю мотоцикл sm.gif)).
Ну а если не получится - тогда импульсная нейронка. Она тем хороша что там входы всегда 0 или 1, поэтому умножение не требуется.

На одном DSP48 можно делать 2 суммы по 24 бит, так Вы быстрее накопите и на коляску к мотоциклу sm.gif

Успехов! Rob.
count_enable
А с этого места попрошу поподробнее.

Открыл УГ479, по дсп 7 серии. В схеме вижу преаддер на A D, алушку на все сигналы от A до D. Теоретически если подать выход ACOUT преаддера на D, то получится аккумулятор А. Я верно думаю?

Второй подвопрос о saturated арифметике. Есть ли у Xilinx штатные способы реализации оной? А то я по старинке всё руками пишу. И аккумулятор тоже нужен с насыщением, в принципе 24 бита более чем достаточно (при 18 битах дробной части это даст значения +-32, с лихвой для меня).
RobFPGA
Приветствую

Цитата(count_enable @ Nov 2 2015, 15:17) *
А с этого места попрошу поподробнее.

Открыл УГ479, по дсп 7 серии. В схеме вижу преаддер на A D, алушку на все сигналы от A до D. Теоретически если подать выход ACOUT преаддера на D, то получится аккумулятор А. Я верно думаю?

Второй подвопрос о saturated арифметике. Есть ли у Xilinx штатные способы реализации оной? А то я по старинке всё руками пишу. И аккумулятор тоже нужен с насыщением, в принципе 24 бита более чем достаточно (при 18 битах дробной части это даст значения +-32, с лихвой для меня).


Смотрите ст 42 в том-же кодексе sm.gif - Single Instruction, Multiple Data (SIMD) Mode
А на преаддер можно подавать 2 слова с памяти за такт и потом сумму аккумулировать в P
Для saturated можно использовать PATTERDETEC но он только для full 48 bit вроде.

Успехов! Rob.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.