- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF110:Что за штука...
Материал из Linuxformat.
Что за штука… FPGA?
- Трюки с приложениями, операционными системами и даже ассемблером уже неактуальны: Марко Фиоретти открывает новый рубеж для хакеров.
- Имеет ли это отношение к Французской национальной ассоциации профессиональных гольфистов?
Non! Аббревиатура раскрывается так: Field Programmable Gate Arrays [Перепрограммируемые логические матрицы] – очень интересный класс настраиваемых интегральных схем.
- Но я еще не дочитал вторую главу учебника по программированию… Не напомните, что такое логическая матрица?
В рамках нашего разговора, условимся, что логическая матрица – это кремниевый брусок, содержащий множество однородных логических элементов – вентилей, выстроенных в строки [rows] и столбцы [columns]. Простейшая форма вентиля – элементарная булева функция (OR, AND, инверсия…), полученная комбинацией нескольких транзисторов.
- А почему «перепрограммируемые»?
Потому что программируются в процессе эксплуатации, а не на заводе. Одиночные вентили все одинаковы, независимо от типа интегральной схемы. Наш CPU становится центральным процессором, а графический чип – графическим чипом благодаря особому соединению логических вентилей между собой. Вентили и микропровода, их соединяющие (так называемые «сети», nets), наносятся на специальную матрицу, а затем впечатываются прямо в кремний. Каждая маска соответствует одной-единственной интегральной схеме, которую впоследствии невозможно изменить – если это не FPGA.
- Выходит, конфигурацию схемы можно менять самому…
Точно так. В кремний впечатываются только базовые блоки и неподключенные микропровода. Соединения выполняются потом, хоть на кухонном столе, после того, как вы купите «чистую» FPGA и установите на печатную плату!
FPGA-полуфабрикаты можно штамповать в огромных количествах при относительно низкой себестоимости (матрица одна и та же!), а продавать в розницу или мелкими партиями. Последствия могут затронуть самые широкие круги общества – от китов микроэлектронной индустрии и образовательных учреждений до обычных пользователей-энтузиастов.
- Но ведь чипы и так программируются – что же здесь необычного?
Вы правы: один и тот же микропроцессор (х86, например) может запускать кучу разнообразных программ: Windows, сотни Linux-дистрибутивов, OpenOffice.org, Apache, Photoshop и много чего еще. При этом сам он остается неизменным: интегральная схема, выполняющая ограниченный, твердо очерченный набор базовых инструкций на машинном языке. И он всегда имеет шину данных с фиксированной шириной, и фиксированное число вспомогательных выводов.
FPGA предоставляет уникальную возможность построить собственную схему (почти) любой конфигурации. Больше того, эта схема может быть новой всякий раз, когда включается питание платы!
- Как это?
Программирование, или, на сленге FPGA, «прошивка», происходит при чтении особого файла сразу после подачи питания на FPGA. Файл содержит указания, как настроить базовые блоки (ББ) и как их соединить. При обесточивании платы эта информация полностью стирается. А раз процедура «прошивки» происходит при каждом новом включении, незачем цепляться за один-единственный «прошивочный» файл.
- И как устроены базовые блоки?
В общем случае, ББ FPGA состоят из комбинаторных и регистровых элементов. Все блоки размещены на прямоугольной сетке. Выход комбинаторных элементов меняется практически в момент изменения входа, а регистровые (последовательные) цепи пересчитывают выходные данные только по тактовому или управляющему сигналу, а между ними хранят последнее вычисленное значение. Элементарные сумматоры и декодеры – комбинаторные элементы; переключатели и элементы памяти относятся к регистровым.
- А что находится за пределами блоков?
Группы ББ соединяются металлическими проводами. Провода подключаются к вводам и выводам соседних ББ через микропереключатели. «Прошивочный» файл хранит также и сведения о состоянии переключателей, при котором достигается желаемая конфигурация микросхемы. Вот вам и «перепрограммирование» FPGA!
- Чуть раньше вы упоминали о «почти» любой конфигурации FPGA. Подозрительно как-то звучит…
Основные ограничения – пространство и скорость. Количество ББ внутри процессора неизменно, оно физически ограничивается размерами кремниевой пластинки. Если FPGA в компьютере содержит на один ББ меньше необходимого, вам не повезло: ищите FPGA побольше, или начинайте проект с нуля.
Еще одно ограничение, связанное с пространством – предельное количество комбинаций, в которых можно соединить ББ внутри микросхемы. Может случиться (да и случается), что блоков в схеме достаточно, а способов их соединения для осуществления задуманного не хватает. Часто бывает и так, что путь между необходимыми блоками наладить можно, но он оказывается настолько длинным, что сигнал проходит по нему недопустимо медленно. Тогда критична скорость прохождения сигнала: следует поискать другой путь. Каждый ББ обладает некоторой задержкой срабатывания, и использовать такты короче этой задержки нельзя.
- Применяются ли FPGA в промышленности?
В основном в двух областях. Во-первых, для создания прототипов. ASIC (специализированные микросхемы) непомерно дороги в производстве, поэтому часто поступают так: берут несколько FPGA, монтируют на плату, тестируют задуманный проект и воплощают в ASIC, только убедившись в успехе. Второй случай – успех проекта сомнений не вызывает, но потребность в чипах столь мала, что невыгодно изготавливать специальную ASIC-маску.
- Но если FPGA такие гибкие, что ж они до сих пор не вытеснили специализированные микросхемы?
Все дело в цене вопроса. Тщательно разработанная ASIC оптимизируется под конкретную задачу, в этом ее преимущество перед FPGA. Оптимизация означает, что для выполнения данной задачи ASIC укладывается в меньшие размеры, работает быстрее и потребляет меньше энергии, чем универсальная FPGA. А при серийном производстве еще и обходится гораздо дешевле. Поэтому в обозримом будущем мы вряд ли увидим FPGA, скажем, в мобильнике или iPod.
- А как разрабатываются FPGA?
В четыре стадии: проектирование, имитация, логический синтез, компоновка и «прошивка»; эта последняя означает запись конфигурации на модуль флэш-памяти, подключенный к FPGA. Проектирование и имитация, как и в случае с ASIC, делаются на машинном языке HDL.
- Вроде в LXF52 говорилось про HDL… Пока я ищу журнал на полке, может, вы мне напомните о логическом синтезе?
Это трансляция (специальным компилятором) финальной поведенческой модели микросхемы на языке HDL в единую карту Карно – длинный перечень булевых операторов и соединительных цепей; иначе это называется «карта сети» (netlist).
- Затем идет компоновка, вы сказали…
Верно. Компоновка – это просмотр карты сети и поиск наилучшего сочетания настройки каждого ББ и микровыключателей, чтобы добиться искомой конфигурации схемы при соблюдении требуемой скорости.
- Вернемся к проекту на секунду: может ли FPGA иметь открытый исходный код, подобно ПО?
HDL и есть исходный код и, как таковой, может лицензироваться на условиях GPL или любой другой лицензии. Сочетание на одном кусочке кремния «свободных» и «проприетарных» цепей пока белое пятно: поинтересуйтесь у юриста.
- Вы тут намекали, что FPGA могут повлиять на образовательные учреждения и энтузиастов-любителей. А как?
Создалась ситуация, когда макетная плата FPGA, оснащенная разъемами всевозможных видов (USB, VGA, FireWire, последовательный порт и т.д.), ОЗУ и прочими красотами, не говоря уж о специальном ПО, может стоить несколько сот евро! А теперь каждый любитель или обычная школа может позволить себе разработку собственной микропроцессорной техники, или открыть Лабораторию цифровых технологий – и все это за сущие копейки! Небывалые перспективы!
- Чудесно! А где можно приобрести макетную плату? Не порекомендуете модель?
И технологии, и цены стремительно меняются; многое зависит от имеющегося у вас периферийного оборудования, поэтому называть конкретную модель нет смысла. Наберите в строке поиска «макетная плата FPGA» – думаю, не разочаруетесь.
- А есть ли онлайн-сообщество или портал, с которого можно начать изучение FPGA?
Конечно, есть. Например, неплохо начать с http://www.fpgacentral.com или http://www.opencores.org. Во втором случае вы узнаете о сотнях прочих проектов свободного ПО.
- ОК, значит, проектирование FPGA вполне доступно и может укладываться в рамки свободного ПО, как и Linux. Есть ли другие точки соприкосновения?
Есть, и весьма интересные: скажем, последние поколения FPGA настолько велики, что допускают размещение внутри себя не только микропроцессоров типа ARM, но и кое-чего сверх этого. Следовательно, внутри FPGA можно запустить Linux! Но как этого добиться и какие могут быть последствия – это уже тема другой статьи! LXF