Программируемые электронные компоненты. GPU и FPGA

Программируемые электронные компоненты. GPU и FPGA

Программируемые электронные компоненты. GPU и FPGA
40

Центральный процессор хорошо справляется с последовательным выполнением программ, но некоторые задачи требуют обработки огромного количества однотипных операций одновременно. Это стало заметно с развитием компьютерной графики: расчёт изображения для каждого пикселя, работа с текстурами и геометрией требуют множества параллельных вычислений.

Для решения таких задач появились графические процессоры (GPU). Позже развитие программируемой логики привело к созданию другого класса компонентов — ПЛИС (FPGA), которые позволяют разработчику самостоятельно формировать аппаратную структуру микросхемы уже после её изготовления.

Первую часть вы можете прочитать здесь.

Время чтения Время чтения: 13 минут

Электроника? Это очень просто!

GPU и FPGA решают разные задачи, но оба класса компонентов демонстрируют один из принципов нынешней электроники: аппаратную часть всё чаще возможно адаптировать под конкретную вычислительную задачу.

Графические процессоры (GPU)

Первые массовые компьютеры 1970-х годов не имели специализированных процессоров для обработки графики. Все вычисления выполнял ЦПУ, а изображение формировалось простыми контроллерами вывода.

Одним из решений стали RAMDAC — устройства, объединявшие видеопамять, цифро-аналоговый преобразователь и узлы формирования аналоговых сигналов для дисплея. Главным способом отображения информации оставался текст, а возможности работы с графикой были ограничены.

С распространением персональных компьютеров в 1980-е годы потребовались специализированные видеоконтроллеры. Появились стандарты MDA, CGA, EGA и VGA, для которых выпускались отдельные микросхемы контроллеров.

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

В 1990-е годы появились специализированные 2D-ускорители. Они уже могли самостоятельно выполнять значительную часть операций по обработке изображения. Это позволило повысить производительность графического интерфейса операционных систем и программ автоматизированного проектирования.

Компании S3 Graphics, ATI Technologies и Matrox выпускали специализированные микросхемы, способные самостоятельно выполнять операции отрисовки. ЦП при этом освобождался от серьёзной части графической нагрузки.

Настоящий перелом произошёл с развитием трёхмерной графики.

Во второй половине 1990-х появились первые массовые 3D-ускорители: 3dfx Voodoo, Nvidia RIVA, ATI Rage и другие. Особо известной стала серия Voodoo компании 3dfx.

gpu история

3dfx Voodoo стала одним из первых массовых решений, предложивших аппаратную обработку трёхмерной графики. Интересно, что ранние Voodoo были именно 3D-ускорителями и не предназначались для полноценного вывода двумерной графики. Для этого требовался отдельный видеоконтроллер.

Одновременно развивались программные интерфейсы взаимодействия с графическим оборудованием. Среди них были Glide, OpenGL и DirectX.

В 1999 году Nvidia представила GeForce 256. Именно эту модель компания позиционировала как первый полноценный GPU — графический процессор, выполняющий основные операции обработки графики непосредственно на видеокарте.

Развитие GPU продолжилось в 2000-е годы. Одним из главных изменений стало появление шейдеров — небольших программ, выполняемых GPU.

Ранние GPU-ускорители имели преимущественно фиксированную функциональность: производитель заранее определял, какие операции сможет выполнять оборудование. Шейдеры сделали GPU более гибким. Разработчик получил возможность задавать собственные алгоритмы обработки изображения.

Это позволило создавать более сложные визуальные эффекты, реалистичное освещение, обработку материалов и другие элементы современной компьютерной графики.

Однако возможности GPU оказались полезны не только для вывода изображения.

Массив вычислительных блоков позволяет GPU одновременно выполнять множество однотипных операций. Поэтому в 2000-е годы графические процессоры начали использоваться для вычислений, не связанных непосредственно с графикой.

Так появилось направление GPGPU — General-Purpose computing on Graphics Processing Units, то есть использование графических процессоров для вычислений общего назначения.

Одним из главных инструментов развития этого направления стала технология CUDA компании Nvidia. Она позволила использовать GPU для программируемых вычислений и открыла им дорогу в научные расчёты, моделирование физических процессов, обработку больших массивов данных, криптографию и машинное обучение.

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

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

Современный GPU уже кардинально отличается от графического ускорителя 1990-х. Он содержит тысячи вычислительных блоков, специализированную память и аппаратные ускорители различных операций.

Производительность работы с памятью современных GPU измеряется сотнями гигабайт в секунду, а в высокопроизводительных системах приближается к терабайту в секунду.

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

ПЛИС (FPGA)

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

В англоязычной терминологии используются обозначения PLD (Programmable Logic Device), CPLD (Complex Programmable Logic Device) и FPGA (Field-Programmable Gate Array). В русскоязычной технической литературе для этого класса устройств обычно используется общий термин ПЛИС.

До появления программируемой логики цифровые устройства строились из множественных отдельных микросхем: логических элементов, триггеров, регистров, счётчиков и других компонентов.

Даже относительно простая цифровая схема требовала десятков микросхем. Это увеличивало размеры платы, усложняло разводку и повышало энергопотребление.

Кроме того, ошибка в логике устройства порой приводила к необходимости целиком переделывать схему и печатную плату.

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

Первые шаги в этом направлении были сделаны ещё в 1970-е годы. Инженеры обнаружили, что программируемая память PROM применима не только для хранения данных, но и для реализации логических функций.

Так появились PLA (Programmable Logic Array) и PAL (Programmable Array Logic).

Эти устройства представляли собой программируемые матрицы логических связей. Изменяя соединения между элементами, можно реализовать различные цифровые функции.

Однако ранние PLA и PAL имели серьёзные ограничения. Они предназначались преимущественно для комбинаторной логики, а некоторые из них программировались только один раз.

Тем не менее даже такие микросхемы позволили заменить множество отдельных логических компонентов одной программируемой схемой.

В 1980-е годы появились GAL (Generic Array Logic). В них использовались программируемые логические блоки (ПЛБ) с триггерами и более развитой системой коммутации.

Одним из главных преимуществ GAL стала возможность многократного программирования. Ошибку в логике уже не требовалось исправлять заменой микросхемы.

плис микросхемы что это

Следующим этапом стали CPLD — сложные программируемые логические устройства.

CPLD состояли из нескольких логических блоков, соединённых программируемой системой коммутации. Их возможности были значительно шире, чем у PLA, PAL и GAL.

Основными производителями CPLD стали Altera, позднее вошедшая в состав Intel, Xilinx, позднее приобретённая AMD, и Lattice Semiconductor.

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

Следующим шагом стали FPGA…

В 1985 году компания Xilinx представила XC2064, первую коммерческую FPGA-версию. Основой архитектуры стали ПЛБ и LUT (Look-Up Table) — таблицы преобразования, с помощью которых реализовывались различные логические функции.

В отличие от фиксированной логики обычных микросхем FPGA позволяет сформировать аппаратную структуру под конкретную задачу.

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

При этом FPGA отличается от обычного процессора принципом работы. Процессор выполняет последовательность программных инструкций на заранее определённой архитектуре. ПЛИС аппаратно конфигурируется под необходимые операции.

Это даёт возможность создавать высокопроизводительные специализированные системы со множеством параллельно работающих блоков.

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

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

arm ядро

Одно из важных применений — прототипирование. Перед производством сложной специализированной микросхемы разработчик сможет реализовать её архитектуру на ПЛИС, проверить работу и исправить ошибки.

Это важно при разработке ASIC. Исправление ошибки в уже изготовленной специализированной микросхеме тогда требует нового производственного цикла и немалых затрат. FPGA позволяет выявить многие проблемы ещё на этапе разработки.

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

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

Главное преимущество ПЛИС заключается в гибкости. Один и тот же физический компонент выполняет абсолютно разные функции в зависимости от загруженной конфигурации.

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

GPU и FPGA показывают два разных подхода к программируемой цифровой электронике.

Графические процессоры первоначально создавались для ускорения обработки изображения, но развитие программируемых шейдеров и GPGPU превратило их в производительные параллельные вычислительные системы. Сегодня они используются не только в компьютерной графике, но и в научных расчётах, машинном обучении и центрах обработки данных.

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

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

Третью часть вы можете прочитать здесь.


Понравилась статья? Поделитесь ей в ваших социальных сетях:
Программируемые электронные компоненты. Память, NPU и микросхемы смешанных сигналов
Что такое микросхемы памяти и их виды в статье магазина Суперайс
Программируемые электронные компоненты. Память, NPU и микросхемы смешанных сигналов 16
Программируемые электронные компоненты. Память, NPU и микросхемы смешанных сигналов
Программируемые электронные компоненты. Микропроцессор и микроконтроллер
Разбираемся, как появились микропроцессоры и микроконтроллеры, чем отличаются CPU и MCU и почему эти компоненты стали основой современной электроники.
Программируемые электронные компоненты. Микропроцессор и микроконтроллер 60
Программируемые электронные компоненты. Микропроцессор и микроконтроллер
Электроника для начинающих: немного теории без практики
Как анализировать сложные электрические цепи? Разбираем законы Кирхгофа, принцип суперпозиции, а также теоремы Тевенена и Нортона на понятных примерах.
Электроника для начинающих: немного теории без практики 164
Электроника для начинающих: немного теории без практики