Pull to refresh
4
0.1

Пользователь

Send message

Круто! Если не секрет, какие получились характеристики: сколько оно заняло по ресурсам (ПЛИС), на какой частоте, какую производительность в МБ/с имеет?

время эксплуатации изделия превышает время поддержки конкретного микроконтроллера

Кстати, в недавнем анонсе Spartan Ultrascale+ (достаточно бюджетной плисины) Xilinx акцентировала внимание на 15+ годах поддержки своих моделей.

Разговор про ничтожную стоимость ошибки, как в программировании. 

Но вот издержки должны учитываться и не следует убеждать начальство, что они ничтожны))

Также должны учитываться издержки на 1 итерацию и скорость итераций, как быстро может быть получена ценность. FPGA по этим критериям позволяют приблизиться к гибким методологиям в софте, получать рабочие промежуточные результаты, адаптироваться к изменениям в требованиях и тестировать в приближенных к реальным условиях. Частые итерации позволяют снизить стоимость ошибки и уменьшить требования к кадрам.

Насколько понял, Catapult где-то тогда разделился на ветку ускорителей ИИ Brainwave и ветку прочих ускорителей для Azure. Brainwave что-то исследовали, поначалу что-то получалось, но сейчас уже всё, уступили место GPU. В Azure ускорители ушли зарабатывать деньги в продакшн, поделившись ещё на какие-то ветки. Одна, Azure Boost примерно соответствует функциональности Catapult и здравствует до сих пор, но про исследования не слышно.

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

И всё же цена ошибки получается на порядки меньше цены ошибки для ASIC-ов, не правда ли? Ведь не требуется делать респин, выкладывая за это очередные миллионы долларов и месяца времени ожидания. Время обратной связи, имхо, критический фактор, в случае FPGA респин занимает от пары минут до нескольких часов. NRE существенно меньше в случае FPGA даже для сложной массовой аппаратуры, вот пример, где Microsoft делится своими восторгами по поводу скорости разработки хардвера, которая была у них при использовании FPGA. Их начинку Azure-карточек на всех стадиях делала команда из 5 FPGA-шников и горстки программистов.

Интересно, что такое люди пилят на этих микросхемах по 10k$ за штуку?

Акселераторы для датацентров, быструю финансовую аналитику для всяких банков и ведомств, акселераторы для некоторых задач HPC, некоторую прочую графовую аналитику, некоторые сетевые вещи, базовые станции для 5G, ускорители видеостриминговых сервисов (Twitch не так давно девайсы Xilinx массово для этого закупал) и т.д. Всё, что требует быстрого выхода на рынок, имеет неустоявшиеся/меняющиеся требования, и высокие требования по производительности при низкой задержке.

 И вместо экономии на логистике - возникает увеличение затрат, т.к. произведенные в Штатах чипы нужно будет везти назад в Азию, собирать изделия и везти обратно. 

Импортозамещение в США затеяно потому, что чипы для их военки и прочего national security делают другие страны. США хочет перенести такое чувствительное производство себе. Поэтому везти в Азию не придется, ведь военные производства, потребители этих чипов, расположены в США.

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

AMD вовсю использует чиплеты, в предложении имелся ввиду Apple?

 Но как мне кажется в архитектуре Плис этого нет, но наверное можно запрограмировать такую функцию если необходимо и использовать, так как конфигурация организации массива памяти позволяет этоорганизовать разработчиком

Во многих архитектурах ПЛИС в каждой брамке есть блок ЕСС. Скрин из мануала на брамки Xilinx:

Для начала хотелось бы выделить два основных свойства внутренней памяти ПЛИС

Важное свойство брамок low-latency доступ. Про это вспоминают всегда, когда проектируют устройства с большими требованиями к памяти и решают, что оставить в ПЛИС, а что держать в DDR и т.д. Ещё одно важное свойство -- высокий параллелизм. Ведь брамок на кристалле может быть сотня или тысяча, у каждой свои независимые порты (или порт), и при желании можно обращаться к каждой в каждом такте.

Насчёт свойства удобства, имхо, это что-то неизмеримое.

Да, видим, что каждый наш модуль занял по 1 M9K, но задействовал не полностью и я пока не встречал, чтобы Quartus автоматических оптимизировал такое использование внутренней памяти ввиду её архитектуры.

Синтезатор не умеет читать мысли. Ресурс памяти -- это не только про объём, но и про использование портов в том числе во времени. В данном случае проектировщик знает свой проект и то, что может безболезненно уменьшить производительность системы в 4 раза (ведь было 4 независимых буфера, а остался один), а синтезатор этого угадать не может. Если это знание отразить в коде, возможно, синтезатор приятно удивит.

Для чего хороши ПЛИС

Также ПЛИС хороши для применений, где спектр выполняемых задач не очень чётко сформулирован, не устоялся или быстро изменяется. Например, так FPGA-акселераторы заняли свою нишу в датацентрах. Там было много разнородных задач, которые требовалось ускорить, но непонятно в каких пропорциях (пропорции ещё и изменялись с течением времени, а также в зависимости от локации и т.д.). В некоторых случаях тиражи составляли миллионы таких акселераторов, а бюджет -- миллиарды долларов. Другим таким применением стали базовые станции 5G, где параметры обработки сигналов, алгоритмы предобработки и прочее меняются быстрее и чаще, чем есть возможность и экономическая целесообразность выпускать под это ASIC.

В интернете довольно много примеров для ZynQ, Artix, меньше для Spartan, а вот по Kintex я нашел крайне мало информации, так что пришлось проводить параллели с примерами для других плат и пытаться опытным путем найти подходящее решение.

Kintex просто более дорогая и мощная серия плисин. Не по карману многим хоббистам, поэтому не попадает в туториалы. Если что-то сходится и работает на Artix, то предполагается, что оно точно сойдется и будет работать на Kintex.

И это как раз те программные комплексы, где писать скрипты - себе дороже и проще использовать GUI.

Без скриптов не получится CI. Не сможете погонять регрессионные тесты. Со скриптами какой-нибудь Jenkins раз в сутки будет собирать ваш проект и гонять полсотни тестбенчей в автоматическом режиме, а затем рисовать какую-то красивую статистику по этому поводу.

Крутой замысел, респект!

Именно это я имею ввиду. Именно об этом-то я и толкую. По сути, опыт, нормальный опыт (а не вышеприведённый "киньте 22 пФ и всё починится") опирается исключительно на документацию. Кто больше знает больше документации, тот более опытен - всё просто.

Не соглашусь. Вот например корка имеет два варианта интерфейсов X и Y. Среда генерит корку под Х нормальную, а под Y -- с неправильным направлением одного порта. По документации -- всё норм, корке без разницы с какими интерфейсами её юзают. А по факту Y в этой версии использовать нельзя. Если точились на него -- переделывайте.

Или корка генерит неправильную обёртку, заменяет STD_LOGIC порты на STD_LOGIC_VECTOR(0 downto 0). Вляпавшись в это ранее, опытный человек уже будет знать, что обёртку можно исправить и всё будет работать. А не зная, первый раз придётся до этого дойти. Доки опять молчок про это.

О-о! Здесь хотелось бы поподробнее :) Что Вы подразумеваете под опытом и чем Ваш опыт, на Ваш взгляд, может быть кому-то полезен? Хотелось бы услышать пример. Можно - реальный, можно - воображаемый.

Опыт -- набор навыков и знаний, полученных в ходе решения проблем, а также кругозор. Такое пойдёт?

Например, при поднятии сетевых интерфейсов в FPGA человек может столкнуться с широким спектром проблем, которые можно дебажить неделями. В мануале на корки, например трансиверы, конечно, в общем виде описано, куда копать. Но там полно частностей, на которые можно потратить много времени не умеючи.
А иногда ответы на вопросы лежат совсем не там, где человек ищет. И дело может быть не в человеке, а в неадекватной структуре некоторых мануалов, глюках сред разработки, ОС, ошибках разводки плат и т.д. и т.п.

Всё же чужой опыт хождения по граблям способствует прогрессу, не надо его обесценивать.

Буду признателен за упоминания в комментариях книг о видеоиграх, которые вам понравились!

Masters of Doom -- про DOOM, Quake, Ромеро и Кармака.

Интересует следующий вопрос - есть идея на уровне бреда реализовать ata over ethernet и понимаю, что ПЛИС для этого идеально подходит, но никак не могу понять это какие характеристики надо иметь. Предположим, что хотим реализовать SATA I (1.5 Gbit/s) и Gigabit Ethernet. Какая плата подойдёт для реализации данного проекта?

Извините за вмешательство, люблю вопросы про оценки.

По части характеристик, во-первых скорость пинов. 1.5 Гбит/с -- это многовато для обычных пинов, как правило они держат до 700-900 Мбит/с. Поэтому вам потребуется ПЛИС с трансиверами. Во-вторых, ресурсы удобно грубо прикидывать по существующим ядрам вендоров. Например SATA у Xilinx тянет порядка 1К LUT, это совсем немного. Gigiabit Ethernet порядка 1.5К LUT.

С готовой платой сложнее, почему-то SATA нечасто встречается. Видел например такую. Возможно для экспериментов проще будет взять плату ПЛИС+Gig Ethernet и отдельный SATA-мезонин к ней, например как тут.

Конкретно у нас есть компиляторы (как ни странно фирмы тоже Intel, в частности Quartus), которые компилируют проекты в течении длительного времени - это 20-40 минут. 

Синтез и имплементейшн HDL языков -- это специфическая и ресурсоёмкая задача. Для средних и больших проектов запросто занимает 4-8 часов. Задача включает несколько NP-полных подзадач. Для них на данный момент нет быстрых решений. Теоретическую возможность их быстрого решения информатика пока не доказала. Поэтому, справедливости ради, у прочих вендоров HDL EDA +- такая же ситуация.

Время компиляции напрямую и строго зависит от частоты процессора.

Тема неоднократно поднималась на тематических форумах и каналах. Кроме частоты процессора ускорение конкретно этой задачи дают: увеличение размера кэша на ядро, использование SSD и увеличение объема RAM.

hypertreading — особенность процессоров intel позволяющая за счет нескольких конвееров исполнения запускать "вроде-как" несколько потоков на одном ядре. это не маркетинговое название многопоточности ни разу.

Hyper-Threading -- это маркетинговое название, которое в Intel придумали для своей реализации концепции Simultaneous Multithreading (SMT). Смысл SMT в возможности запуска в суперскалярном конвейере инструкций из нескольких thread в одном такте. SMT реализовывали не только в Intel.

Information

Rating
3,962-nd
Registered
Activity