Открытое аппаратное обеспечение (Open Source Hardware, OSH), названное так по аналогии с программным обеспечением (Open Source), — это физические комплектующие, созданные в рамках децентрализованной модели проектирования и разработки, основанной на открытом взаимодействии. Согласно принципу открытости, спецификации, инструкции по сборке и другая документация по такому оборудованию находятся в свободном доступе и его могут изготавливать все желающие: любой может обращаться к имеющейся информации, изменять ее и использовать. «Аппаратное обеспечение» при этом — любые конструкции, которые можно изготовить. Соответственно, открытое аппаратное обеспечение относится к категории продуктов «сделай сам» (do-it-yourself, DIY) и субкультуре «умельцев» (maker) в самом широком смысле. «Умельцы» занимаются самостоятельным изготовлением электроники, механики, робототехники и др.
ПО с открытым кодом является свободным, то есть любой может бесплатно загружать, копировать, изучать и распространять такое ПО с изменениями или без. Для запуска такого ПО достаточно компьютера и соответствующей среды выполнения. Для изучения, изменения и локализации ПО с открытым кодом нужны дополнительные инструменты: редакторы, компиляторы, библиотеки и пр., большинство которых тоже доступны в открытых кодах. Открытое оборудование можно также называть «свободным и открытым», но его нельзя просто «скачать» и воспроизвести — на его изготовление требуются физические и денежные ресурсы. Для производства продукта требуется описание материалов, комплектующих и инструментов с ценами. Таким образом, «свобода» здесь относится к оборудованию, изготовленному по свободно доступной конструкции — например, по чертежам, схемам, макетам печатных плат, исходному коду на языке HDL (hardware description language) и описаниям материалов.
Термин «оборудование» можно трактовать очень широко. Некоммерческая организация Open Source Hardware Association (OSHWA) приводит подробное определение и устанавливает принципы открытости оборудования, предоставляет рекомендации и организует тематические мероприятия. Принципы OSHWA распространяются на весь спектр оборудования, но здесь будет рассматриваться только электронное.
Arduino: пример успешного открытого проекта
Проект Arduino, начатый группой студентов более 15 лет тому назад, дает возможность всем желающим поэкспериментировать с электроникой и программированием микроконтроллеров при создании прототипов изделий, соединяющих цифровой и физический миры: художественные инсталляции, музыка, игры, игрушки, робототехника, умный дом, умное производство и сельское хозяйство.
Arduino включает как открытое оборудование, так и ПО с открытым кодом. Среди программных компонентов — интегрированная среда разработки с языком программирования Arduino, представляющим собой библиотеку функций Си/С++, упрощающих работу с платой. Что касается оборудования, все схемы и файлы конструкции (макет, список комплектующих и т. д.) для изготовления платы находятся в свободном доступе. Хотя конструкция Arduino открытая, следует отметить, что основная функциональность подобных плат зависит от проприетарных компонентов (например, чипов) и, соответственно, от их доступности.
Можно было бы перечислить еще множество успешных открытых электронных платформ, мини-компьютеров и устройств Интернета вещей, но сосредоточимся на изделиях на основе центрального процессора. Благодаря непрерывной полувековой миниатюризации полупроводниковых устройств, сегодня одна кремниевая микросхема может содержать миллиарды транзисторов. Подобные высокоинтегрированные схемы — системы на кристалле — используются в мобильных устройствах и бортовых решениях. Система на кристалле включает процессорные ядра (нередко разных типов), память, межсоединения, модули обработки графики, аудио- и видеокодеки, блоки обработки цифрового сигнала, ускорители задач искусственного интеллекта, радиомодемы, датчики, а также интерфейсы для работы с внешней памятью и другими устройствами. Компоненты системы на кристалле называют IP-ядрами (intellectual property core).
IP-ядра: «исходники» для микросхем
IP-ядро — это созданный по готовому проекту функциональный блок микросхемы многократного использования. Он содержит интеллектуальную собственность разработчика или производителя. Такие строительные блоки обеспечивают модульность конструкции системы на кристалле и позволяют избежать лишних трудозатрат и расходов. IP-ядра могут иметь собственника, который ими пользуется и может их лицензировать. Многие участники полупроводниковой индустрии не имеют собственных заводов (работают по схеме fabless) и занимаются исключительно разработкой и лицензированием IP-ядер. Наиболее известны компании ARM, Imagination Technologies, а также поставщики программных систем автоматизации проектирования электроники, такие как Cadence Design Systems и Synopsis. IP-ядра бывают программными (soft) и физическими (hard).
Программное IP-ядро — это, как правило, модель уровня регистровых передач, заданная на HDL или в формате списка электрических соединений. Программные IP-ядра независимы от технологии, их можно многократно использовать и функционально дорабатывать. Они называются программными, так как требуют компиляции (синтеза) для сопоставления с конкретным технологическим узлом, отвечающим за изготовление соответствующей части чипа.
Физическое IP-ядро — это низкоуровневая реализация блока, рассчитанная на конкретную полупроводниковую технологию. Физическое ядро обычно предоставляется в форме готового макета, например, в формате GDSII. Конструкцию такого ядра изменить практически невозможно, при этом можно очень точно определить площадь чипа, характеристики производительности и питания.
Открытое оборудование — новшество? От одиночек к корпорациям
Первые свободно доступные процессорные ядра появились еще в начале 2000-х годов, когда были открыты спецификации двух RISC-процессоров: LEON-1 на архитектуре системы команд (instruction set architecture, ISA) SPARC V8 и OpenRISC1000. Оба разработаны в рамках проектов с единственным участником и опубликованы в виде кода HDL и соответствующего компилятора Си. Разработчик OpenRISC в то время также основал веб-портал OpenCores для открытых IP-ядер специализированных ИС и программируемых логических матриц FPGA. Но это не платформа открытого взаимодействия — на портале доступны IP-ядра, разработанные энтузиастами-одиночками.
За последние десять лет были основаны еще несколько некоммерческих ассоциаций и зонтичных организаций. В частности, по инициативе OpenCores был создан фонд Free and Open Source Silicon Foundation (FOSSi), предложивший термин «открытое полупроводниковое устройство» (open silicon), который пропагандирует и поддерживает создание открытых спецификаций цифрового аппаратного обеспечения и связанных экосистем. Фонду принадлежит сайт LibreCores, посвященный свободным и открытым программным IP-ядрам. FOSSi управляется волонтерами на пожертвования и средства спонсоров. Другие некоммерческие организации по открытому оборудованию финансируются по схеме членства, как, например, Open Compute Project (OCP) — фонд, который делится конструкциями элементов компьютерной инфраструктуры и центров обработки данных. В OCP открытость трактуют широко — от полностью открытых спецификаций до проектов, совместимых с уже существующими открытыми интерфейсами.
Некоммерческая организация RISC-V International (прежнее название — RISC-V Foundation) занимается стандартизацией и продвижением свободной и открытой архитектуры системы команд (instruction set architecture, ISA) RISC-V [1] и соответствующей экосистемы проектирования оборудования и ПО. Сообщество RISC-V быстро растет [2] и в апреле 2021 года насчитывало более 1500 членов, в том числе сотни известных компаний и исследовательских учреждений. По прогнозу Semico Research, к 2025 году в мире будет задействовано более 60 млрд ядер ЦП RISC-V.
Кроме того, под эгидой Linux Foundation существует некоммерческая организация CHIPS Alliance, развивающая проекты высококачественных открытых кремниевых чипов и матриц FPGA. Альянс состоит из нескольких рабочих групп, образующих полноценную экосистему проектирования оборудования и ПО, в том числе проверенных IP-ядер (процессоров, межсоединений, ускорителей, аналоговых компонентов, блоков смешанного типа), проектов систем на кристалле и САПР электроники с открытым кодом, имеющих функции верификации. Многие из этих проектов базируются на RISC-V — альянс тесно сотрудничает с RISC-V International. Участие в работе CHIPS Alliance принимают Google, Intel, Western Digital, SiFive, ALibaba, Esperanto Technologies, Ant-micro и многие другие компании.
Экосистемы открытого оборудования
Путь от идеи к конечному полупроводниковому устройству состоит из множества шагов. Соответственно, для разработки системы на кристалле нужна обширная открытая экосистема, состоящая из следующих взаимосвязанных частей.
Открытые спецификации и стандарты: в контексте процессоров это абстрактная модель интерфейса программирования — архитектура системы команд. На сегодня существуют несколько открытых и не требующих лицензионных отчислений ISA: SPARC от Sun Microsystems, OpenRISC, MIPS, Power (изначально созданная в IBM) и RISC-V. Последняя целиком разработана научно-исследовательским сообществом для свободного распространения.
Языки описания. Проекты и спецификации программных IP-ядер главным образом распространяются на языках описания аппаратуры, являющихся стандартами IEEE: VHDL, Verilog, SystemVerilog (надмножество предыдущего с доработками для верификации) и System C (язык моделирования системного уровня). Два последних языка — объектно-ориентированные, а остальные — языки программирования на основе более старых концепций, которые весьма широко применяются и поддерживаются практически всеми САПР.
За последнее время научно-исследовательским сообществом было создано несколько открытых языков описания оборудования, созданных по одному принципу, — они внедрены в базовый язык программирования. Для удобства встраивания в цепочки инструментов все эти языки имеют средства трансляции кода в форматы VHDL, Verilog или SystemVerilog.
Аппаратное сообщество активно развивает открытые проекты, однако их долю в общем объеме определить сложно. На GitHub, например, доля проектов на языках описания оборудования совсем незначительна. Одна из причин заключается в том, что можно оценить лишь долю проектов на известных языках, тогда как в проектах на встроенных языках в описании указан хостовый язык программирования, например Scala или Python. SystemVerilog и Verilog вошли в 50 самых популярных языков на GitHub за последние два года, но их совокупная доля в общем объеме pull-запросов на платформе составляет менее 0,07%.
САПР электроники. Такие средства используются на разных этапах от создания проекта до физической реализации. В целом этапы разработки можно разделить на две группы: фронтенд-проектирование — спецификация, высокоуровневое проектирование, создание кода RTL (register-transfer level), функциональная верификация; бэкенд-проектирование — синтез логических схем, поуровневое планирование, размещение и разводка, подготовка к производству. Результатом фронтенд-проектирования может быть программное IP-ядро, тогда как для создания физического ядра требуются процессы бэкенд-проектирования. Существуют комплекты OpenROAD и OpenLANE [3], объединяющие множество инструментов в полноценный стек проектирования, от кодирования на RTL до вывода в формате GDSII.
Комплект для разработки фотопроцесса (process design kit, PDK) — набор файлов, используемый на полупроводниковом производстве для моделирования процесса изготовления.
Программный стек для процессоров — компиляторы (например, GCC или LLVM), операционные системы (например, Linux), а также эмуляторы и средства виртуализации (QEMU и др.)
Значительным достижением в деле создания полноценной цепочки производства микросхем с открытой спецификацией стало сотрудничество Google, производителя полупроводников SkyWater и проектировщика микросхем efabless. Google финансирует производство мультипроектных пластин (multiproject wafer, MPW — пластины, одновременно содержащие чипы разных типов) на рассчитанных на технологический процесс 130 нм узлах SkyWater для изготовления комбинированных КМОП-схем. При этом используются полностью открытые PDK и инструментарий OpenLANE. Открытый конвейер проектирования разрешено применять для проприетарных проектов, что дает возможность изготавливать доступные по цене прототипы или небольшие партии чипов.
Преимущества открытого оборудования
Инновации. Совместное проектирование оборудования обеспечивает экономию затрат за счет многократного использования компонентов, ускорение сроков выпуска продукции на рынок и повышение качества. Свободная конкуренция множества разработчиков проприетарных и открытых ядер способствует инновациям и дифференциации продуктов благодаря появлению множества проектов специализированных микросхем.
Демократизация. Процессы проектирования оборудования доступны всем желающим без затрат на лицензирование и длительное обучение. Появляются более широкие возможности создания специализированного аппаратного обеспечения, что особенно важно для недорогих устройств Интернета вещей.
Безопасность. Зачастую безопасность достигается за счет сокрытия особенностей конструкции, являющейся коммерческой тайной, однако злоумышленники могут находить и эксплуатировать слабые места компьютерных систем. Открытость оборудования позволяет исследователям находить уязвимости и быстро их устранять.
Прозрачность и доверие. Использование проприетарного оборудования нередко сопряжено с неопределенностью, так как в нем могут быть «черные входы» (например, для обхода системы шифрования) и механизмы сбора данных. К тому же современные программно-аппаратные системы могут быть невероятно сложными «черными ящиками», что приводит к кризису доверия. Открытое оборудование характеризуется прозрачностью и возможностью отслеживания их работы, что в конечном счете обеспечивает доверие таким технологиям.
Исследования и образование. Такую деятельность можно тесно привязать к реальным аппаратным архитектурам, если опираться на полноценные стеки открытого оборудования и ПО.
Трудности и перспективы
Юридические аспекты. Многие сложности работы с открытым аппаратным обеспечением касаются юридических вопросов. Требует ли открытое оборудование специальных моделей лицензирования? Использование некоммерческих лицензий всегда сопряжено с трудностями, поскольку на производство оборудования требуются деньги. Либеральные лицензии на ПО хорошо подходят для открытого оборудования, однако возникают сложности из-за различия терминологий мира ПО и аппаратного обеспечения. Например, лицензия оборудования Solderpad организации FOSSi основана на лицензии Apache 2.0, и в ней проблема терминологии решена с помощью специального словаря. Сложнее ситуация со свободными лицензиями, оперирующими авторским правом для обложения держателей обязательствами. Но авторское право не распространяется на производство и распространение оборудования (эта проблема учитывается, например, в лицензионных соглашениях CERN Open Hardware Licence v2).
Где следует регистрировать некоммерческие организации по открытому оборудованию, чтобы избежать влияния политических кризисов? Как влияют на открытое оборудование экспортные ограничения?
Защита проприетарных данных. Этапы подготовки и изготовления на полупроводниковых производствах обычно проприетарны. Полупроводниковая отрасль и разработчики САПР электроники охраняют свои коммерческие секреты (технологические данные, библиотеки стандартных элементов, инструменты, IP-ядра) и делятся ими только при условии заключения соглашений о неразглашении и покупки дорогостоящей лицензии. Одна из сложностей состоит в защите исходной интеллектуальной собственности без лишения пользователей доступа к открытому оборудованию. Еще один вопрос в том, каким образом организовать сосуществование защищенной интеллектуальной собственности, касающейся полупроводников, с открытой платформой проектирования оборудования. Помимо юридических проблем, здесь возникают и технические, связанные, например, с шифрованием IP-ядер или размещением в них «водяных знаков».
Уменьшение затрат. Освобождение проектирования оборудования от дорогостоящих лицензий на инструменты и интеллектуальную собственность — большой важный шаг. Однако фиксированная стоимость выпуска чипов по технологии 20-летней давности (130 нм) относительно высока. Вопрос в том, каким образом поставщики услуг проектирования MPW и выпуска открытого оборудования (такие как MOSIS Service, EUROPRACTICE и efabless) могли бы наладить доступное по цене производство малых партий чипов по самым современным технологиям и как поставщикам услуг поступать с идентификационными кодами поставщика с учетом того, что бесплатно их получить нельзя.
Бизнес-модели. Как побудить проектировщиков микроэлектроники и владельцев производств к более активному участию в экосистеме открытого оборудования? К примеру, они могли бы открыть базовую часть аппаратного продукта и предлагать дополнительные возможности в составе проприетарного оборудования или предоставлять облачные сервисы САПР.
САПР микроэлектроники. Каким образом можно было бы далее улучшать продуктивность, повышать уровень сложности, обеспечивать интероперабельность и диверсификацию? Для решения этих задач можно было бы применять языки описания архитектуры и средства интеграции, которые позволили бы задавать конфигурации и собирать синтезируемые системы на кристалле, а также использовать средства логического синтеза, верификации и соответствующие программные стеки. В пример можно привести фреймворк Chipyard быстрой разработки чипов RISC-V. Повышение уровня абстракции ввода за счет домен-специфичных языков и соответствующих инструментов для синтеза специализированных ускорителей и гетерогенных процессоров позволит повысить темпы проектирования и увеличить продуктивность.
***
Стремительный рост и развитие открытых сообществ позволят в скором времени преодолеть трудности работы с открытым аппаратным обеспечением, благодаря чему движение открытого оборудования проложит путь к созданию множества самых разнообразных электронных устройств.
Литература
1. K. Asanovic, D. A. Patterson. Instruction sets should be free: The case for RISC-V. Univ. of California, Berkeley, Tech. Rep. UCB/EECS-2014–146, 2014.
2. S. Higginbotham. The rise of RISC // IEEE Spectrum. — 2018. — Vol. 55, N. 8. — Р. 18.
3. A. Ghazy, M. Shalan. OpenLANE: The open-source digital ASIC implementation flow. In Proc. Workshop on Open-Source EDA Technol. (WOSET), 2020, Art. no. 21.
Франк Ханниг (frank.hannig@fau.de) — старший научный сотрудник, Юрген Тейх (juergen.teich@fau.de) — профессор, Университет Эрлангена — Нюрнберга.
Frank Hannig, Jurgen Teich, Open Source Hardware. IEEE Computer, October 2021, IEEE Computer Society. All rights reserved. Reprinted with permission.