Pull to refresh
4
0.1

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

Send message
Прикольно, похоже, в Беларуси этот workaround входит в стандарт в качестве одной из опций. Кстати, там же есть ещё требования к случайности и тесты случайности, а генераторы должны соответствовать первым и проходить вторые при сертификации. В теории, уязвимость в Yubico можно было бы этими тестами выщемить.
Вот тоже встречаю варианты для ПЛИС с табуляцией функций, в т.ч. сигмоида, только вместо плавающей точки всё чаще попадаются с числами с фиксированной точкой.
В контексте статьи к вопросу о необходимости понимания железа и понимания работы HLS при использовании таких средств интересным может оказаться чужой опыт. По ссылке диссер, где ребята реализовывали нейронную сеть (что-то вроде SqueezeNet) на ПЛИС и пытались использовать для этого HLS, во что воткнулись и как пытались это разруливать (спойлер: не разрулили).
Прикольные вещи вы там вытворяете).
Мы наверно не поняли друг друга, я имел ввиду, что сам файлик битстрима (.bit или .bin), соответствие его содержимого элементам в ПЛИС, порядку их инициализации и т.д. держится в секрете. Битстрим чем-то напоминает ДНК, тоже набор инструкций и содержимого для инициализации, рецепт, поэтому употребил слово «протокол».
Про chipscope я не особо в теме, но вроде как это средство отладки, местами графической, с совсем малым количеством ресурсов, т.е. им бы глядеть пару самых подозрительных сигналов, не работающих в железе, на тысяче-другой сэмплов. Вам точно надо именно через него грузить данные в ПЛИС? Обычный uart не сойдет? Хотя скорости, конечно, на нем тоже не ахти.
Да, вы правы. Порядки помнил очень приблизительно.
Мы похоже уходим в оффтоп, так что заранее прошу меня извинить). Прошить Spartan без tcl можно Impact-ом — GUI тулза от Xilinx. В целом прошивка происходит через jtag и потолок там где-то в районе 10 Мбайт/с, это аппаратное ограничение. Насчет сишных либ для прошивки, я не проверял, знаю, что формат и протокол битстрима держится в секрете, и также что его не так давно разреверсили, так что либы наверно можно поискать. Что касается взаимодействия с ПЛИС после прошивки и передачи в неё больших объемов данных, то тут большой простор для творчества: данные можно передавать например через интерфейсы Fast Ethernet/Gigabit Ethernet, PCI-express и прочие. Для них наверняка можно найти и сишные либы, ну и фишка акселераторов на ПЛИС как раз в использовании таких стандартных и быстрых интерфейсов. Spartan 6 уже староваты, в 7 семействе гораздо веселее всё с интерфейсами. Далее, если вам всё же надо быстрее сконфигурировать ПЛИС, чем обычным jtag, то тут можно попробовать частичную динамическую реконфигурацию в паре с одним из быстрых интерфейсов (Gig Ethernet, PCI-express): прошивку загружаете через быстрый интерфейс, а зашивается она через внутренний конфигурационный интерфейс.
Некоторая польза всё же может быть. Для меня из этих данных стало открытием, что в РФ так мало специалистов vhdl/verilog, интуитивно ожидал на несколько порядков больше. Понимаю, что цифры неточны, но имхо общий порядок прикинуть из них можно.
FPGA. У Xilinx вся среда Vivado внутри использует tcl и многие вещи, недоступные из GUI можно сделать только скриптами. А многие вещи удобно загонять в скрипты и выполнять потом пачками, вместо ручного режима в GUI. Наконец свежие фичи также обкатываются пользователями сначала в tcl, а потом уже выносятся в GUI (например так было с частичной реконфигурацией, её сначала можно было пощупать только скриптами, а в более поздней версии среды она появилась в GUI). А если проект из Vivado надо загнать под git, то тут тоже придется ковырять tcl…
VHDL с Verilog пока ещё особо нечем заменить, новые ещё не подросли. А tcl — составная часть стека разработки под железо, так что тоже пригодится.
Благодарю!
Что касается критики, имхо, она во многом справедлива, FPGA действительно гораздо слабее ASIC-ов. Однако у FPGA есть и очень сильные преимущества: они программируемы и достаточно дёшевы для небольших партий, в то время как на изготовление ASIC требуются месяца и миллионы долларов, запрограммить FPGA может буквально студент на тест-ките за пару сотен долларов. Т.е. порог вхождения в железо гораздо-гораздо ниже для простых смертных. Мне кажется это очень существенным для маленьких стран и для маленьких фирм, ASIC-и, имхо, весьма тяжеловесны в этом плане. Кроме того, время выхода на рынок для изделий на FPGA гораздо быстрее, чем у ASIC.
Далее, в сравнении с CPU, FPGA имеют более высокую производительность для многих задач с параллелизмом уровня данных, но если нужна сложная управляющая логика, то это уже не к ПЛИС в основном.
Имхо, в сравнении с GPU для того же ИИ первоначально казалось, что у FPGA практически не было шансов, но они во многом вырулили: в частности, во-первых энергоэффективностью, здесь они делают GPU легко во многом за счет того, что используют ровно столько сколько надо ресурсов, без оверхедов на питание неиспользуемых, во-вторых даже производительностью (но здесь это часто больше хаки, чем очевидный выигрыш, в частности, уменьшение разрядности операндов, в FPGA это проще простого, а в GPU такие вещи появляются только сейчас, насколько могу судить). В целом, FPGA выглядит очень круто для быстроизменяющихся нестабильных задач, таких как ИИ, если задачи стабилизируются, то можно выкатывать ASIC-и.
По этому пути пошли в датацентрах Microsoft (проект Catapult v.2), сделав там у каждого сервера навесной FPGA-акселератор. Они заявляют, что сейчас это самое крупное вложение в FPGA. И планируют часть стабильной логики (инфраструктуру) впоследствии изготовить в кремнии.
Ещё одной интересной темой в контексте FPGA и ИИ мне кажется всякие программные решения вроде Ristretto и Deephi, которые подрезают нужным образом нейронные сети, а Deephi ещё и генерят под это логику FPGA. Но в целом, я не спец по ИИ, так что может многого ещё не вижу из того, что происходит.
Серьезная проблема FPGA состоит в сложности программирования для нежелезячных программистов и её пытаются решить самые различные стартапы.
На Xilinx. За Альтерой мало наблюдал. И свежего не в курсе совсем, из более давнего, знаю, что Интел совместил логику ПЛИС Альтеры, Arm и свой Xeon на одном кристалле, и вроде как обещал возможность программировать ПЛИС через какие-то программные API, практически из кода, но не знаю, как это вышло на деле.
Клёвая статья! Пять копеек про FPGA, на конец 2019 года несколько производителей ПЛИС анонсировали новые семейства, ориентированные как раз под машинное обучение. Обратите внимание на новшества в архитектуре — появляются блоки спец.вычислителей для нейросетей вместо/в дополнение к dsp-блокам у Xilinx и у Achronix, а также на количество интерфейсов к DDR.
По поводу пункта 3, задача автоматической «раскладки» на девайсы вроде ещё не решена в полной мере. Есть пару реализаций OpenCL (у Intel и у Xilinx), которые делают примерно то, что вы описали, но даже они далековаты от идеала. Вряд ли каждая команда будет делать такую работу заново и самостоятельно.
В памяти могут содержаться ключи и пароли, флаги проверок и прочее. Закладка в памяти позволит например их слить, поднять уровень привилегий и т.д. Можно глянуть хотя бы на rowhammer-атаки, хотя там памяти даже без закладок. Далее, учитывая частоты интерфейса DDR, закладка в памяти может например сливать инфу в GSM-дипазоне у локальной закрытой системы (без всякого выхода в сеть). В случае с памятью тоже можно разгуляться при желании.
У них на лезвии 4 процессора, а в мире тем временем уже наметилась тенденция на однопроцессорные лезвия: www.nextplatform.com/2019/04/24/why-single-socket-servers-could-rule-the-future
Исходя из описания на Thrangrycat, рискну сделать следующие предположения и комментарии: 1. функциональность Trust Anchora достаточно мелкая, поэтому можно было обойтись дешёвой мелкой плисиной; 2. шифрование битстрима в дешёвых мелких FPGA есть сравнительно недавно, в тех же мелких спартанах 6 ещё не было. 3. Задача прямых манипуляций с битстримом FPGA раньше считалась не совсем тривиальной, в частности вендоры держат в секрете полный формат битстрима, и в диссерах мелькали только модификации самых базовых частей типа блочной памяти или содержимого некоторых LUT-блоков. Но к году 2017 её в принципе уже раскачали. 4. Просто подменить битстрим на другой вроде недостаточно, там ведь формат взаимодействия какой-то между устройствами, залочится ещё. Как я понял, фишка в том, что атакующие расхачили прошивку FPGA и смогли не копаясь в ней слишком глубоко (по их словам without RTL reconstruction) убрать или изменить критические проверки. Опять же, не то чтобы это совсем простая задача, имхо.
А чем эта реализация лучше прочих? Есть ли какая-то инфа по скоростям этой реализации?
Кстати, в мире FPGA тоже есть некоторый движ в этом направлении, например: www.plunify.com/en/intime. Здесь пытаются использовать ИИ для подбора лучших опций синтеза и place & route под конкретные проекты.
Подскажите, какие возможности программирования FPGA предусмотрены для данного процессора? Как понимаю, будет OpenCL, но может будет и что-то ещё? Будет ли в какой-то форме доступно низкоуровневое программирование (VHDL/Verilog)?

Information

Rating
3,962-nd
Registered
Activity