Altera + opencl: программируем под fpga без знания vhdl/verilog

Содержание:

Шины с тремя состояниями.

Применение шин с тремя состояниями — типичное схемное решение вычислительных устройств, реализованных на плате. Благодаря такому решению, легко достигается многомодульность и наращиваемость системы, низкие аппаратурные затраты и малые задержки в системе межсоединений. Внутри заказных СБИС редко применяются шины с тремя состояниями из-за технологических трудностей их безотказной реализации, а также увеличенной задержки на их переключение.

Несмотря на это, в ПЛИС фирмы Xilinx всё-таки широко применяются шины с тремя состояниями, хотя это существенно повышает их себестоимость. Зато, во-первых, проще выполнить переход от проекта схемы на плате к проекту системы на кристалле. Во-вторых, ВУ с общими шинами, к которым подключено несколько десятков модулей, имеет аппаратные затраты в несколько раз меньше, чем такое же ВУ, в котором шины заменены на эквивалентную схему из системы мультиплексоров. В-третьих, с помощью общих шин можно эффективно реализовать встроенное распределенное ОЗУ, о котором пойдет речь ниже.

Для реализации общей шины каждый КЛБ имеет два буфера с тремя состояниями BUFT , которые через транзисторы-перемычки могут подключаться к общим шинам, проходящим вдоль всего кристалла. В обычных шинах третье состояние характеризуется уровнем, находящимся между уровнями логической 1 и логического 0. Но если такую шину реализовать внутри микросхемы, то в случае, когда все тристабильные буферы будут в третьем (закрытом) состоянии, их выходные транзисторы будут полуоткрытыми и могут выйти из строя. Для исключения такого электрического режима в ПЛИС общая шина нагружена на концах специальной триггерной схемой — Weak Keeper , которая выводит уровень шины или к уровню H, или к уровню L (слабые 1 или 0), если все буферы закрыты.

Неправильное функционирование общей шины, когда несколько источников с разными уровнями подключаются к шине, может вывести ПЛИС из строя. САПР ПЛИС тщательно проверяет, чтобы спроектированная общая шина функционировала правильно. Поэтому не рекомендуется ручное редактирование файла прошивки, так как случайная ошибка в коде может привести к неправильной работе общей шины и порче ПЛИС.

Все в небо! Ближе к облакам!

  • С повальным уходом исследований в глубокие нейросети (с десятками и сотнями слоев, которые действительно всех рвут) потребовалось перемалывать сотни мегабайт коэффициентов, что немедленно сделало неэффективными все кэши процессоров предыдущих поколений. При этом на классическом ImageNet рассуждают о строгой корреляции между размером сети и ее точностью (чем выше, тем лучше, чем правее, тем больше сеть, горизонтальная ось логарифмическая):
  • Ход вычислений внутри нейросети идет по фиксированной схеме, т.е. где будут происходить все «ветвления» и «переходы» (в терминах прошлого века) в подавляющем большинстве случаев точно известно заранее, что оставляет без работы спекулятивное исполнение инструкций, ранее заметно повышающее производительность:
    Это делает неэффективными навороченные суперскалярные механизмы предсказания ветвления и предвычислений предыдущих совершенствования процессоров (эта часть чипа тоже, к сожалению, на DNN скорее способствует глобальному потеплению, как и кэш).
  • При этом обучение нейросети относительно слабо масштабируется горизонтально. Т.е. мы не можем взять 1000 мощных компьютеров и получить ускорение обучения в 1000 раз. И даже в 100 не можем (по крайней мере пока не решена теоретическая проблема ухудшения качества обучения на большом размере батча). Нам вообще довольно сложно что-то раздавать по нескольким компьютерам, поскольку как только падает скорость доступа к единой памяти, в которой лежит сеть — катастрофически падает скорость ее обучения. Поэтому если у исследователя будет доступ к 1000 мощных компьютеров на халяву, он, безусловно, скоро их все займет, но скорее всего (если там не infiniband + RDMA) обучаться там будет много нейросетей с разными гиперпараметрами. Т.е. общее время обучения будет лишь в несколько раз меньше, чем при 1 компьютере. Там возможны и игра с размерами батча, и дообучение, и прочие новые модные технологии, но основной вывод — да, при увеличении количества компьютеров эффективность работы и вероятность достичь результата будут расти, но не линейно. Причем сегодня время исследователя Data Science стоит дорого и часто если можно потратить много машин (пусть неразумно), но получить ускорение — это делается (см. пример с 1, 2 и 4 дорогими V100 в облаках чуть ниже).

полны оптимизма

Логическая таблица.

Роль основного логического элемента в ПЛИС играет логическая таблица (ЛТ) или look-up table (LUT), представляющая собой однобитное ОЗУ на 16 ячеек. В ЛТ по адресу G3,G2,G1,G0 записана единица, если код адреса представляет собой конституенту единицы заданной четырехвходовой логической функции. Например, если по адресу 1,1,1,1 записана единица, а по остальным адресам — ноль, то ЛТ реализует четырехвходовую функцию И. На рис. показан пример кодирования функции Исключающее ИЛИ на четыре входа.

Триггеры ЛТ входят в состав программирующего сдвигового регистра и их начальное состояние заполняется в период конфигурирования ПЛИС.

Конфигурирование ПЛИС.

Для конфигурирования ПЛИС в ней предусмотрены входы задания режима M2, M1, M0, вывод синхросерии программирования CCLK, вход последовательности конфигурации PROGRAM, выход флага окончания конфигурирования DONE и выводы порта JTAG. В зависимости от установленного режима можно загружать прошивку ПЛИС через однобитовый вход PROGRAM, порт JTAG или 8-разрядную шину D c использованием для управления выводов WRITE и BUSY.

Конфигурирование через однобитовый вход длится до нескольких десятков секунд. Это стандартный способ конфигурирования и для него не требуется дополнительного оборудования, кроме ПЗУ прошивки с однобитовым выходом.

Для реализации конфигурирования через шину D необходимо дополнительное внешнее устройство (автомат или микроконтроллер), управляющее записью и выдающее последовательность адресов чтения на входы байтового ПЗУ. Зато оно происходит значительно быстрее — практически с максимальным темпом чтения из ПЗУ.

Разработка систем на кристалле (СНК) — это устойчивая современная тенденция. И программирование ПЛИС для СНК — один из главных этапов такой разработки. Выпуск ПЛИС новых поколений, например, Xilinx VirtexPro, направлен на поддержку развития СНК. Разработка СНК без применения языка VHDL или Verilog практически невозможна.

Просмотреть дискуссию.

  • Verilog System Tasks.

  • Формирование HDMI изображения с использованием NIOS II.

История

В ранних ПЛИС программированием можно было изменять только связи между вентилями; в 1985 году сооснователи Xilinx Росс Фримен (англ. Ross Freeman) и Бернард Вандершмит (англ. Bernard V. Vonderschmitt) разработали первую коммерчески успешную ППВМ — XC2064, имеющую программируемые вентили и программируемые соединения между ними (в 2005 году за это изобретение Фримен был занесён в ). Сама концепция программируемых вентильных матриц, логических вентилей и логических блоков запатентована Дэвидом Пейджем и Луверном Петерсоном в 1985 году. В 1990-х годах произошёл резкий скачок интереса к ППВМ, возросла их сложность и объёмы производства: если в первые годы они использовались в основном в области телекоммуникаций и сетей связи, то к концу десятилетия они нашли применение в потребительских товарах, в автомобильной промышленности и других отраслях.

В 1997 году Адриан Томпсон объединил генетические алгоритмы и технологию ППВМ для создания устройства, способного отличать звуковые тоны частотой 1 КГц и 10 КГц. Генетические алгоритмы позволили с помощью вентильной матрицы размером 64×64 на микросхеме фирмы Xilinx создать конфигурацию, необходимую для решения поставленной задачи. В те же годы начали широко применяться для прототипирования специализированных интегральных и процессоров общего назначения. В начале 2000-х годов ППВМ начали использоваться для ускорения специфических операций в серверных узлах как в индустрии высокопроизводительных вычислений, так и в машинах баз данных (Netezza). Во второй половине 2010-е годов отмечен всплеск интереса к технологии в связи с эффективностью применения для глубокого обучения (прежде всего за счёт возможности реализации арифметики с пониженной точностью и безрегистровых вычислений — аналога тензороного процессора Google), а у инфраструктурных облачных провайдеров появилась возможность приобрести ППВМ по подписке из публичного облака (Amazon F1, Baidu, Tencent, Huawei).

К 2018 году объём мирового рынка ППВМ составил около $5,7 млрд, крупнейшие производители — Xilinx (51 % рынка), Intel (36 %, за счёт активов Altera), Microchip (17 %), Lattice Semiconductor (9 %).

Организовываем взаимодействие между ПК и ЦАП/АЦП при помощи ПЛИС

Из песочницы

В современном цифровом мире необходимость ЦАП/АЦП (цифро-аналоговых преобразователей/аналого-цифровых преобразователей) не подвергается сомнению: они используются для обработки сигналов разнообразных датчиков, в звуковой аппаратуре, ТВ-тюнерах, платах видеовхода, видеокамерах и т.д.
Однако использование или отладка ЦАП/АЦП могут быть затруднены поставленными производителем аппаратуры ограничениями, например, на используемое ПО или на способы управления устройством. Это наводит на мысль о проектировании собственной модели взаимодействия.
В этой статье мы рассмотрим возможность организации взаимодействия между ПК и ЦАП/АЦП при помощи ПЛИС.

Общие вопросы сравнения характеристик ПЛИС

Чтобы получить представление о характере обсуждаемого в статье вопроса, обратимся к аналогичной технической проблеме, существующей в области процессоров общего назначения и, по всей, видимости, известной каждому, кто имеет отношение к информационным технологиям или хотя бы выбирал конфигурацию домашнего компьютера. Длительное время в сфере ПК обсуждается вопрос — как соотносятся линейки продукции Pentium и Celeron фирмы Intel? Является ли «облегченный» процессор Celeron низкопроизводительным бюджетным решением, покупка которого может быть произведенатолько при сильной стесненности в средствах, или же напротив, «полнофункциональные» Pentium не оправдывают себя, а их дополнительные возможности совершенно не требуются рядовому пользователю? Масса аргументов «за» и «против» привела в конце концов к появлению публикаций, которые тщательно анализировали, в каких именно условиях использование процессоров класса hi-end оправдывает себя. Имея доступ к подробной аналитической информации и результатам тестирования производительности процессоров в конкретных программных пакетах, пользователь мог сознательно сделать выбор в пользу того или иного решения.

Аналогичная ситуация складывается в настоящее время в области устройств программируемой логики. Являясь теми же цифровыми микросхемами, ПЛИС в полной мере подвержены тенденциям, характерным для цифровой микроэлектроники вообще. Так же, как и процессоры, ПЛИС могут быть выполнены либо на грани технологических возможностей, обеспечивая максимальную на настоящий момент производительность (и иметь весьма высокую цену), либо напротив, обеспечить разумный минимум возможностей, который все еще не приводит к резкому и неоправданному удорожанию. Перефразируя принцип Парето, можно сказать, что 80% функциональности ПЛИС можно обеспечить, реализовав 20% аппаратных ресурсов. Естественно, такое процентное соотношение, взятое из первоисточника, весьма далеко от реального, однако общая картина выглядит именно так — основные функции ПЛИС могут быть выполнены достаточно небольшим набором логических модулей. Добавление дополнительных устройств в скором времени приведет к «насыщению» характеристик — пропорциональный рост производительности прекратится. Соответственно, имеется некоторая архитектура, обеспечивающая оптимальное соотношение «производительность — цена». Из современной роли ПЛИС в разработке цифровых устройств проистекает дополнительное требование к такой архитектуре — совместимость с наиболее производительными устройствами класса hi-end на уровне исходных текстов описания аппаратуры. Иными словами, основные цифровые узлы, разрабатываемые с использованием языков описания аппаратуры (HDL), должны реализовываться как на наиболее производительных, так и на дешевых ПЛИС. Во втором случае возможна некоторая потеря производительности и увеличение размера проекта за счет того, что ряд цифровых узлов будет выполнен с использованием большего количества логических ячеек.

Таким образом, вопросы, возникающие при выборе серии ПЛИС, аналогичны вопросам о выборе модели процессора. Является ли серия Virtex неоправданным вложением средств? Или напротив, бюджетные устройства Spartan принципиально не позволяют реализовать какие-либо возможности обработки сигналов или реализации цифровых устройств и являются, таким образом, вынужденным компромиссом? Ответ на этот вопрос не имеет смысла без описания условий применения этих серий. Кроме того, необходимо подробно рассмотреть, какие именно характеристики ПЛИС подлежат сравнению и каким образом они отражаются на параметрах проектируемых изделий.

Возможно, вам также будет интересно

Продолжаем рассказ о программируемых системах на кристалле PSoC Cypress. В данной статье вы познакомитесь с новым графическим редактором приложений PSoC Express. Даже если вы никогда в жизни не программировали микроконтроллеры и никогда не сталкивались с PSoC, вам может быть интересен и полезен данный материал, поскольку по его прочтении вы сможете делать несложные электронные устройства на

Многопозиционные радиолокационные системы (МПРЛС) обладают рядом принципиальных преимуществ по сравнению не только с однопозиционными локаторами, но и с совокупностью РЛС, не интегрированных в систему. Наибольшей потенциальной эффективностью обладают многопозиционные системы с кооперативной обработкой сигналов. В таких системах каждая РЛС или приемная позиция способна принимать и обрабатывать сигналы, переотраженные целью при ее облучении с любой другой

Операция позиционирования и установки сложных компонентов является одним из ответственных и трудоемких процессов на этапе сборки печатных плат в технологии SMD-монтожа.

Расчет временных ограничений для ПЛИС простым языком

Здравствуйте. Эта статья написана для самых-самых новичков в мире ПЛИС, которые пока что совсем не знают что такое STA (static timing analysis). В ней я попытаюсь максимально просто и наглядно рассказать что такое временны́е ограничения (timing constraints), накладываемые на проекты под ПЛИС.
Статья создана на основе собственного опыта попыток объяснить самому себе, студентам-практикантам и любопытным коллегам эту тему так, чтобы не погружаться в заумные академические дебри, а максимально просто и прозрачно, бытовым языком. Я учился работать с ПЛИС без учебы и подготовки по этой теме и знаю по своему опыту насколько трудно что-то понять не имея теоретического базиса в этой теме и в схемотехнике. Для опытного плисовода описанное — элементарно. Но для какого-нибудь студента четвертого курса статья будет полезной и поможет разобраться во всех этих слэках, сетапах и холдах.

Типы ПЛИС

Ранние ПЛИС

В 1970 году компания «TI» разработала маскируемые (то есть, программируемые с помощью маски, англ. mask-programmable) интегральные схемы (далее ИС), основанные на ассоциативном ПЗУ (ROAM) фирмы «IBM». Эта микросхема называлась TMS2000 и программировалась чередованием металлических слоёв в процессе производства интегральной схемы (ИС). TMS2000 имела до 17 входов и 18 выходов с 8 JK-триггерами в качестве памяти. Для этих устройств компания «TI» ввела термин PLA — англ. programmable logic array — программируемая логическая матрица.

PAL

Основная статья: PAL (ПЛИС)

PAL (англ. programmable array logic) — программируемый массив (матрица) логики. В СССР PLA и PLM не различались и обозначились как ПЛМ (программируемая логическая матрица). Разница между PLA и PLM состоит в доступности программирования внутренней структуры (матриц).

GAL

Основная статья: GAL

GAL (англ. generic array logic) — это ПЛИС, имеющие программируемую матрицу «И» и фиксированную матрицу «ИЛИ».

CPLD

Основная статья: CPLD

CPLD (англ. complex programmable logic device — сложные программируемые логические устройства) содержат относительно крупные программируемые логические блоки — макроячейки, соединённые с внешними выводами и внутренними шинами. Функциональность CPLD кодируется в энергонезависимой памяти, поэтому нет необходимости их перепрограммировать при включении. Может применяться для расширения числа входов/выходов рядом с большими кристаллами, или для предобработки сигналов (например, контроллер COM-порта, USB, VGA).

FPGA

Основная статья: FPGA

FPGA (англ. field-programmable gate array) содержат блоки умножения-суммирования, которые широко применяются при обработке сигналов (DSP, англ. digital signal processing), а также логические элементы (как правило, на базе таблиц перекодировки — таблиц истинности) и их блоки коммутации. FPGA обычно используются для обработки сигналов, имеют больше логических элементов и более гибкую архитектуру, чем CPLD. Программа для FPGA хранится в распределённой памяти, которая может быть выполнена как на основе энергозависимых ячеек статического ОЗУ (подобные микросхемы производят, например, фирмы «Xilinx» и «Altera») — в этом случае программа не сохраняется при исчезновении электропитания микросхемы, так и на основе энергонезависимых ячеек flash-памяти или перемычек antifuse (такие микросхемы производит фирма «Actel» и «Lattice Semiconductor») — в этих случаях программа сохраняется при исчезновении электропитания. Если программа хранится в энергозависимой памяти, то при каждом включении питания микросхемы необходимо заново конфигурировать её при помощи начального загрузчика, который может быть встроен и в саму FPGA. Альтернативой ПЛИС FPGA являются более медленные цифровые процессоры обработки сигналов. FPGA применяются также, как ускорители универсальных процессоров в суперкомпьютерах (например, компьютер «Cray XD1» компании «Cray», проект «RASC» компании «Silicon Graphics» («SGI»)).

Принцип работы FPGA

Микросхема FPGA — это та же заказная микросхема ASIC, состоящая из таких же транзисторов, из которых собираются триггеры, регистры, мультиплексоры и другие логические элементы для обычных схем. Изменить порядок соединения этих транзисторов, конечно, нельзя. Но архитектурно микросхема построена таким хитрым образом, что можно изменять коммутацию сигналов между более крупными блоками: их называют CLB — программируемые логические блоки.

Также можно изменять логическую функцию, которую выполняет CLB. Достигается это за счет того, что вся микросхема пронизана ячейками конфигурационной памяти Static RAM. Каждый бит этой памяти либо управляет каким-то ключом коммутации сигналов, либо является частью таблицы истинности логической функции, которую реализует CLB.

Так как конфигурационная память построена по технологии Static RAM, то, во-первых, при включении питания FPGA микросхему обязательно надо сконфигурировать, а во-вторых, микросхему можно реконфигурировать практически бесконечное количество раз.

Очень упрощенная 2D-структура микросхемы без конфигурационной памяти

Блоки CLB находятся в коммутационной матрице, которая задает соединения входов и выходов блоков CLB.

Схема коммутационной матрицы

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

CLB

CLB очень упрощенно состоит из блока, задающего булеву функцию от нескольких аргументов (она называется таблицей соответствия — Look Up Table, LUT) и триггера (flip-flop, FF). В современных FPGA LUT имеет шесть входов, но на рисунке для простоты показаны три. Выход LUT подается на выход CLB либо асинхронно (напрямую), либо синхронно (через триггер FF, работающий на системной тактовой частоте).

Принцип реализации LUT

Интересно посмотреть на принцип реализации LUT. Пусть у нас есть некоторая булева функция . Ее схемотехническое представление и таблица истинности показаны на рисунке. У функции три аргумента, поэтому она принимает 2^3 = 8 значений. Каждое из них соответствует своей комбинации входных сигналов. Эти значения вычисляются программой для разработки прошивки ПЛИС и записываются в специальные ячейки конфигурационной памяти.

Значение каждой из ячеек подается на свой вход выходного мультиплексора LUT, а входные аргументы булевой функции используются для выбора того или иного значения функции. CLB — важнейший аппаратный ресурс FPGA. Количество CLB в современных кристаллах FPGA может быть разным и зависит от типа и емкости кристалла. У Xilinx есть кристаллы с количеством CLB в пределах примерно от четырех тысяч до трех миллионов.

Помимо CLB, внутри FPGA есть еще ряд важных аппаратных ресурсов. Например, аппаратные блоки умножения с накоплением или блоки DSP. Каждый из них может делать операции умножения и сложения 18-битных чисел каждый такт. В топовых кристаллах количество блоков DSP может превышать 6000.

Другой ресурс — это блоки внутренней памяти (Block RAM, BRAM). Каждый блок может хранить 2 Кбайт. Полная емкость такой памяти в зависимости от кристалла может достигать от 20 Кбайт до 20 Мбайт. Как и CLB, BRAM и DSP-блоки связаны коммутационной матрицей и пронизывают весь кристалл. Связывая блоки CLB, DSP и BRAM, можно получать весьма эффективные схемы обработки данных.

Применение

ПЛИС широко используется для построения различных по сложности и по возможностям цифровых устройств, например:

  • устройств с большим количеством портов ввода-вывода (бывают ПЛИС с более чем 1000 выводов («пинов»));
  • устройств, выполняющих цифровую обработку сигнала (ЦОС);
  • цифровой видеоаудиоаппаратуры;
  • устройств, выполняющих передачу данных на высокой скорости;
  • устройств, выполняющих криптографические операции, систем защиты информации;
  • устройств, предназначенных для проектирования и прототипирования интегральных схем специального назначения (ASIC);
  • устройств, выполняющих роль мостов (коммутаторов) между системами с различной логикой и напряжением питания;
  • реализаций нейрочипов;
  • устройств, выполняющих моделирование квантовых вычислений;
  • устройств, выполняющих обработку радиолокационной информации.

Знакомство с FPGA iCE40 UltraPlus Mobile Development Platform от фирмы Lattice Semiconductor

Из песочницы

Введение

Всем доброго времени суток, друзья! Недавно на работе обзавелись новенькой навороченной платой iCE40 UltraPlus Mobile Development Platform от фирмы Lattice Semiconductor. Со слов разработчиков на официальном сайте iCE40 UltraPlus MDP — это плата, на которой расположены 4 ПЛИС iCE40 UltraPlus, каждая из которых управляет своим набором периферии. В набор входят:

  • мобильный дисплей с разрешением 240×240 с интерфейсом MIPI DSI;
  • датчик изображения с разрешение 640×480 (OVM7692);
  • малопотребляющие микрофоны в количестве 4 штук;
  • BLE модуль для беспроводной передачи данных;
  • программируемая SPI Flash память;
  • пак различных датчиков (давления, компас, гироскоп и акселерометр);
  • ну и всякие кнопочки и лампочки.

Вся круть данного кита заключается в том, что на нем с помощью специальных программных пакетов можно разворачивать нейронные сети для работы с видео и звуком. И это не говоря уже о том, что ПЛИСы фирмы Lattice являются низкопотребляемыми, малогабаритными и достаточно дешевыми.

Как работает адресная светодиодная лента?

Наверное этот вопрос «как работает» очень многим покажется глупым. Ответ почти очевиден: адресная светодиодная лента состоит из множества последовательно соединенных «умных светодиодов». Это можно увидеть просто рассматривая устройство ленты. Видны отдельные микросхемы, припаянные к гибкому шлейфу, видны соединения: микросхемы соединены последовательно всего тремя проводами, при этом два из них это питание и земля. Только один провод передает данные о цвете пикселей. Как же это? Что такое «умный светодиод»?
Дальше я расскажу о протоколе передачи данных, используемом в светодиодной ленте на базе WS2812B, и, более того, я почти создам свою «микросхему светодиодной ленты» в микросхеме ПЛИС.

Если кратко

Тип Что ускоряет Комментарий
CPU В основном выполнение Обычно худшие по скорости и энергоэффективности, но вполне пригодны для выполнения небольших по размеру нейросетей
GPU Выполнение+
обучение
Наиболее универсальное решение, но довольно дорогое, как по стоимости вычислений, так и по энергоэффективности
FPGA Выполнение Относительно универсальное решение для исполнения сетей, в некоторых случаях позволяет кардинально ускорить выполнение
ASIC Выполнение Наиболее дешевый, быстрый и энергоэффективный вариант исполнения сети, но нужны большие тиражи
TPU Выполнение+
обучение
Первые версии использовались для ускорения выполнения, сейчас используются для весьма эффективного ускорения выполнения и обучения
IPU, DPU… NNP В основном обучение Много маркетинговых букв, которые благополучно забудут в ближайшие годы. Основной плюс этого зоопарка — проверка разных направлений ускорения DNN
Analog DNN / RPU Выполнение+
обучение
Потенциально аналоговые ускорители могут произвести революцию в скорости и энергоэффективности выполнения и обучения нейросетей

Принцип работы

Микросхема FPGA — это та же заказная микросхема ASIC, состоящая из таких же транзисторов, из которых собираются триггеры, регистры, мультиплексоры и другие логические элементы для обычных схем. Изменить порядок соединения этих транзисторов, конечно, нельзя. Но архитектурно микросхема построена таким хитрым образом, что можно изменять коммутацию сигналов между более крупными блоками: их называют CLB — программируемые логические блоки.

Также можно изменять логическую функцию, которую выполняет CLB. Достигается это за счет того, что вся микросхема пронизана ячейками конфигурационной памяти Static RAM. Каждый бит этой памяти либо управляет каким-то ключом коммутации сигналов, либо является частью таблицы истинности логической функции, которую реализует CLB.

Так как конфигурационная память построена по технологии Static RAM, то, во-первых, при включении питания FPGA микросхему обязательно надо сконфигурировать, а во-вторых, микросхему можно реконфигурировать практически бесконечное количество раз.

Очень упрощенная 2D-структура микросхемы без конфигурационной памяти

Блоки CLB находятся в коммутационной матрице, которая задает соединения входов и выходов блоков CLB.

Схема коммутационной матрицы

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

CLB

CLB очень упрощенно состоит из блока, задающего булеву функцию от нескольких аргументов (она называется таблицей соответствия — Look Up Table, LUT) и триггера (flip-flop, FF). В современных FPGA LUT имеет шесть входов, но на рисунке для простоты показаны три. Выход LUT подается на выход CLB либо асинхронно (напрямую), либо синхронно (через триггер FF, работающий на системной тактовой частоте).

Принцип реализации LUT

Интересно посмотреть на принцип реализации LUT. Пусть у нас есть некоторая булева функция . Ее схемотехническое представление и таблица истинности показаны на рисунке. У функции три аргумента, поэтому она принимает 2^3 = 8 значений. Каждое из них соответствует своей комбинации входных сигналов. Эти значения вычисляются программой для разработки прошивки ПЛИС и записываются в специальные ячейки конфигурационной памяти.

Значение каждой из ячеек подается на свой вход выходного мультиплексора LUT, а входные аргументы булевой функции используются для выбора того или иного значения функции. CLB — важнейший аппаратный ресурс FPGA. Количество CLB в современных кристаллах FPGA может быть разным и зависит от типа и емкости кристалла. У Xilinx есть кристаллы с количеством CLB в пределах примерно от четырех тысяч до трех миллионов.

Помимо CLB, внутри FPGA есть еще ряд важных аппаратных ресурсов. Например, аппаратные блоки умножения с накоплением или блоки DSP. Каждый из них может делать операции умножения и сложения 18-битных чисел каждый такт. В топовых кристаллах количество блоков DSP может превышать 6000.

Другой ресурс — это блоки внутренней памяти (Block RAM, BRAM). Каждый блок может хранить 2 Кбайт. Полная емкость такой памяти в зависимости от кристалла может достигать от 20 Кбайт до 20 Мбайт. Как и CLB, BRAM и DSP-блоки связаны коммутационной матрицей и пронизывают весь кристалл. Связывая блоки CLB, DSP и BRAM, можно получать весьма эффективные схемы обработки данных.

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Я уже участник «Xakep.ru»

Технология FPGA для тысячи применений

Из песочницы

Трудно представить другую технологию, которая настолько разносторонняя как FPGA.
FPGA — Field-Programmable Gate Array, то есть программируемая логическая матрица (ПЛМ), программируемая логическая интегральная схема (ПЛИС). Это технология, при которой создается микросхема с набором логических элементов, триггеров, иногда оперативной памяти и программируемых электрических связей между ними. При этом программирование FPGA оказывается похоже на разработку электрической схемы, а не программы. Пользуюсь данной технологией давно и попробую описать самые полезные с моей точки зрения применения по мере их усложнения.

1. Помощь при разводке плат

Многие наверняка сталкивались, что центральный процессор, память, другие многоногие микросхемы создавали люди, редко задумывающиеся о том, как они будут соединяться на печатной плате. Протянуть шину разрядностью 32 или 64 бита — задача не решаемая без многослойной платы. Но стоит поставить между микросхемами FPGA как разводка становится на несколько порядков проще:

И все это благодаря возможности внутренней перекоммутации сигналов внутри FPGA.

Разные другие буквы

как минимум 5 из них привлекли более 100 миллионов долларовМурДин

  • Neural Processing Unit (NPU) — Нейропроцессор, иногда красиво — нейроморфный чип — вообще говоря, общее название для акселератора нейросетей, каковым называют чипы Samsung, Huawei и далее по списку…
    Здесь и далее в этом разделе будут приведены в основном слайды корпоративных презентаций в качестве примеров самоназваний технологий
    Понятно, что прямое сравнение проблематично, но вот любопытные данные, сравнивающие чипы с нейропроцессорами от Apple и Huawei, производимые упоминавшейся в начале TSMC. Видно, что соревнование идет жесткое, новое поколение показывает прирост производительности в 2-8 раз и усложнение технологических процессов:
  • Neural Network Processor (NNP) — Нейросетевой процессор.

    Так называет свое семейство чипов, например, Intel (изначально это была компания Nervana Systems, которую Intel купила в 2016 за $400+ миллионов). Впрочем, и в статьях, и в книгах название NNP тоже вполне встречается.

  • Intelligence Processing Unit (IPU) — интеллектуальный процессор — название чипов, продвигаемое компанией Graphcore (кстати, получившей уже $310 миллионов инвестиций).

    Она выпускает специальные карты для компьютеров, но заточенные на обучение нейросетей, с производительностью на обучении RNN в 180–240 раз выше, чем у NVIDIA P100.

  • Dataflow Processing Unit (DPU) — процессор обработки потока данных — название продвигается компанией WAVE Computing, получившей уже $203 миллиона инвестиций. Выпускает примерно такие же акселераторы, как и Graphcore:

    Поскольку они получили на 100 миллионов меньше, они декларируют обучение всего в 25+ раз быстрее, чем на GPU (правда обещают, что скоро будет 1000 раз). Посмотрим…

  • Vision Processing Unit (VPU) — Процессор компьютерного зрения:

    Термин используется в продуктах нескольких компаний, например, Myriad X VPU от Movidius (тоже была куплена Intel в 2016).

  • Один из конкурентов IBM (которые, напомним, используют термин RPU) — компания Mythic — двигают Analog DNN, в которых также идет хранение сети в чипе и относительно быстрое выполнение. Пока у них только обещания, правда серьезные:
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *