Круто! Если не секрет, какие получились характеристики: сколько оно заняло по ресурсам (ПЛИС), на какой частоте, какую производительность в МБ/с имеет?
Разговор про ничтожную стоимость ошибки, как в программировании.
Но вот издержки должны учитываться и не следует убеждать начальство, что они ничтожны))
Также должны учитываться издержки на 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 человек может столкнуться с широким спектром проблем, которые можно дебажить неделями. В мануале на корки, например трансиверы, конечно, в общем виде описано, куда копать. Но там полно частностей, на которые можно потратить много времени не умеючи. А иногда ответы на вопросы лежат совсем не там, где человек ищет. И дело может быть не в человеке, а в неадекватной структуре некоторых мануалов, глюках сред разработки, ОС, ошибках разводки плат и т.д. и т.п.
Всё же чужой опыт хождения по граблям способствует прогрессу, не надо его обесценивать.
Интересует следующий вопрос - есть идея на уровне бреда реализовать 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.
Круто! Если не секрет, какие получились характеристики: сколько оно заняло по ресурсам (ПЛИС), на какой частоте, какую производительность в МБ/с имеет?
Кстати, в недавнем анонсе Spartan Ultrascale+ (достаточно бюджетной плисины) Xilinx акцентировала внимание на 15+ годах поддержки своих моделей.
Также должны учитываться издержки на 1 итерацию и скорость итераций, как быстро может быть получена ценность. FPGA по этим критериям позволяют приблизиться к гибким методологиям в софте, получать рабочие промежуточные результаты, адаптироваться к изменениям в требованиях и тестировать в приближенных к реальным условиях. Частые итерации позволяют снизить стоимость ошибки и уменьшить требования к кадрам.
Насколько понял, Catapult где-то тогда разделился на ветку ускорителей ИИ Brainwave и ветку прочих ускорителей для Azure. Brainwave что-то исследовали, поначалу что-то получалось, но сейчас уже всё, уступили место GPU. В Azure ускорители ушли зарабатывать деньги в продакшн, поделившись ещё на какие-то ветки. Одна, Azure Boost примерно соответствует функциональности Catapult и здравствует до сих пор, но про исследования не слышно.
И всё же цена ошибки получается на порядки меньше цены ошибки для ASIC-ов, не правда ли? Ведь не требуется делать респин, выкладывая за это очередные миллионы долларов и месяца времени ожидания. Время обратной связи, имхо, критический фактор, в случае FPGA респин занимает от пары минут до нескольких часов. NRE существенно меньше в случае FPGA даже для сложной массовой аппаратуры, вот пример, где Microsoft делится своими восторгами по поводу скорости разработки хардвера, которая была у них при использовании FPGA. Их начинку Azure-карточек на всех стадиях делала команда из 5 FPGA-шников и горстки программистов.
Акселераторы для датацентров, быструю финансовую аналитику для всяких банков и ведомств, акселераторы для некоторых задач HPC, некоторую прочую графовую аналитику, некоторые сетевые вещи, базовые станции для 5G, ускорители видеостриминговых сервисов (Twitch не так давно девайсы Xilinx массово для этого закупал) и т.д. Всё, что требует быстрого выхода на рынок, имеет неустоявшиеся/меняющиеся требования, и высокие требования по производительности при низкой задержке.
Импортозамещение в США затеяно потому, что чипы для их военки и прочего national security делают другие страны. США хочет перенести такое чувствительное производство себе. Поэтому везти в Азию не придется, ведь военные производства, потребители этих чипов, расположены в США.
AMD вовсю использует чиплеты, в предложении имелся ввиду Apple?
Во многих архитектурах ПЛИС в каждой брамке есть блок ЕСС. Скрин из мануала на брамки Xilinx:
Важное свойство брамок low-latency доступ. Про это вспоминают всегда, когда проектируют устройства с большими требованиями к памяти и решают, что оставить в ПЛИС, а что держать в DDR и т.д. Ещё одно важное свойство -- высокий параллелизм. Ведь брамок на кристалле может быть сотня или тысяча, у каждой свои независимые порты (или порт), и при желании можно обращаться к каждой в каждом такте.
Насчёт свойства удобства, имхо, это что-то неизмеримое.
Синтезатор не умеет читать мысли. Ресурс памяти -- это не только про объём, но и про использование портов в том числе во времени. В данном случае проектировщик знает свой проект и то, что может безболезненно уменьшить производительность системы в 4 раза (ведь было 4 независимых буфера, а остался один), а синтезатор этого угадать не может. Если это знание отразить в коде, возможно, синтезатор приятно удивит.
Также ПЛИС хороши для применений, где спектр выполняемых задач не очень чётко сформулирован, не устоялся или быстро изменяется. Например, так FPGA-акселераторы заняли свою нишу в датацентрах. Там было много разнородных задач, которые требовалось ускорить, но непонятно в каких пропорциях (пропорции ещё и изменялись с течением времени, а также в зависимости от локации и т.д.). В некоторых случаях тиражи составляли миллионы таких акселераторов, а бюджет -- миллиарды долларов. Другим таким применением стали базовые станции 5G, где параметры обработки сигналов, алгоритмы предобработки и прочее меняются быстрее и чаще, чем есть возможность и экономическая целесообразность выпускать под это ASIC.
Kintex просто более дорогая и мощная серия плисин. Не по карману многим хоббистам, поэтому не попадает в туториалы. Если что-то сходится и работает на Artix, то предполагается, что оно точно сойдется и будет работать на Kintex.
Без скриптов не получится CI. Не сможете погонять регрессионные тесты. Со скриптами какой-нибудь Jenkins раз в сутки будет собирать ваш проект и гонять полсотни тестбенчей в автоматическом режиме, а затем рисовать какую-то красивую статистику по этому поводу.
Крутой замысел, респект!
Не соглашусь. Вот например корка имеет два варианта интерфейсов X и Y. Среда генерит корку под Х нормальную, а под Y -- с неправильным направлением одного порта. По документации -- всё норм, корке без разницы с какими интерфейсами её юзают. А по факту Y в этой версии использовать нельзя. Если точились на него -- переделывайте.
Или корка генерит неправильную обёртку, заменяет STD_LOGIC порты на STD_LOGIC_VECTOR(0 downto 0). Вляпавшись в это ранее, опытный человек уже будет знать, что обёртку можно исправить и всё будет работать. А не зная, первый раз придётся до этого дойти. Доки опять молчок про это.
Опыт -- набор навыков и знаний, полученных в ходе решения проблем, а также кругозор. Такое пойдёт?
Например, при поднятии сетевых интерфейсов в FPGA человек может столкнуться с широким спектром проблем, которые можно дебажить неделями. В мануале на корки, например трансиверы, конечно, в общем виде описано, куда копать. Но там полно частностей, на которые можно потратить много времени не умеючи.
А иногда ответы на вопросы лежат совсем не там, где человек ищет. И дело может быть не в человеке, а в неадекватной структуре некоторых мануалов, глюках сред разработки, ОС, ошибках разводки плат и т.д. и т.п.
Всё же чужой опыт хождения по граблям способствует прогрессу, не надо его обесценивать.
Masters of Doom -- про DOOM, Quake, Ромеро и Кармака.
Извините за вмешательство, люблю вопросы про оценки.
По части характеристик, во-первых скорость пинов. 1.5 Гбит/с -- это многовато для обычных пинов, как правило они держат до 700-900 Мбит/с. Поэтому вам потребуется ПЛИС с трансиверами. Во-вторых, ресурсы удобно грубо прикидывать по существующим ядрам вендоров. Например SATA у Xilinx тянет порядка 1К LUT, это совсем немного. Gigiabit Ethernet порядка 1.5К LUT.
С готовой платой сложнее, почему-то SATA нечасто встречается. Видел например такую. Возможно для экспериментов проще будет взять плату ПЛИС+Gig Ethernet и отдельный SATA-мезонин к ней, например как тут.
Синтез и имплементейшн HDL языков -- это специфическая и ресурсоёмкая задача. Для средних и больших проектов запросто занимает 4-8 часов. Задача включает несколько NP-полных подзадач. Для них на данный момент нет быстрых решений. Теоретическую возможность их быстрого решения информатика пока не доказала. Поэтому, справедливости ради, у прочих вендоров HDL EDA +- такая же ситуация.
Тема неоднократно поднималась на тематических форумах и каналах. Кроме частоты процессора ускорение конкретно этой задачи дают: увеличение размера кэша на ядро, использование SSD и увеличение объема RAM.
Hyper-Threading -- это маркетинговое название, которое в Intel придумали для своей реализации концепции Simultaneous Multithreading (SMT). Смысл SMT в возможности запуска в суперскалярном конвейере инструкций из нескольких thread в одном такте. SMT реализовывали не только в Intel.