SuperH: проект J2 воскресил процессор как открытое железо
Статья LWN.net (написана в 2015 году, сейчас всплыла в обсуждении на Hacker News) пересказывает доклад на LinuxCon Japan "Turtles all the way down: running Linux on open hardware". Джефф Дионн, Роб Лэндли и Шумпей Кавасаки представили проект J2, попытку вернуть к жизни процессорную архитектуру SuperH японской Hitachi.
SuperH была предшественником набора инструкций, который позже лёг в основу ARM Thumb, сама ARM в середине 1990-х лицензировала патентный портфель SuperH для создания Thumb. По плотности набора инструкций (метрика эффективности процессора: чем плотнее код, тем меньше циклов уходит на выполнение задачи) исследование 2009 года ставило SuperH впереди всех архитектур, кроме x86, x86_64 и CRIS v32. Чипы SH2 стояли в игровой консоли Sega Saturn, а SH4, в Sega Dreamcast. Ключевой момент для проекта: патенты истекают. Последние патенты на SH2 закончились в 2014 году, у SH4 последний патент истекает в 2016-м, это делает архитектуру доступной для открытого использования без лицензионных отчислений.
J2, чистая (clean-room) реализация ядра SH2, исходники которой написаны на VHDL и синтезируются на недорогой FPGA-плате Xilinx Spartan6 (такие платы стоят около $50). Сборочная цепочка J2 генерирует не только битстрим для FPGA, но и RTL-описание схемы, которое можно передать на фабрику для производства заказных микросхем (ASIC). По оценке Дионна, при производстве по техпроцессу 180 нанометров чип обходится около трёх центов за штуку и не требует роялти, он назвал это "одноразовыми вычислениями на уровне 'бесплатной игрушки внутри'".
Главное преимущество J2 перед конкурирующими открытыми проектами вроде OpenRISC и RISC-V, по словам Лэндли, в том, что поддержка SuperH уже существует в ядре Linux, GCC, GDB, strace и большинстве других системных компонентов, команде не пришлось писать код с нуля, а нужно было "откопать и отряхнуть от пыли" то, что уже было. Дионн ранее был мейнтейнером uClinux, проекта Linux для систем без блока управления памятью (MMU), который активно развивался до 2003 года, а затем замедлился после смены сопровождающих. По его словам, минимальная система для запуска Linux, это плоское 32-битное адресное пространство памяти, процессор с регистрами, какой-то ввод-вывод и накопитель (откуда грузятся ядро и initramfs) и таймер для прерываний; кэш, блок плавающей запятой, поддержка нескольких ядер (SMP) и MMU не обязательны.
На докладе Лэндли и Дионн провели живую демонстрацию: они синтезировали ядро J2 на серийной плате Spartan6, купленной накануне в токийском районе Акихабара, и загрузили на ней Linux с ядром версии 3.4, процесс занял несколько секунд, но закончился рабочей командной строкой bash и аплодисментами зала. Кавасаки, один из разработчиков оригинальной архитектуры SH2, теперь участник проекта J2, рассказал, что J2 добавляет к набору инструкций SH2 всего четыре новые команды: для атомарных операций, для обхода особенностей барабанного сдвигателя (barrel shifter), который работал не так, как ожидал компилятор, и ещё пару инструкций, интересных в основном программистам на ассемблере.
План развития на момент доклада выглядел так: в 2016 году должен был выйти J2+ с поддержкой SMP и набором цифровых сигнальных процессоров (DSP) для применения в медицинских устройствах и IoT-продуктах вроде бытовых счётчиков электричества; ещё позже, J4 на основе архитектуры SH4 с поддержкой SIMD-вычислений для приставок и автомобильной электроники. Команда также планировала кампанию на Kickstarter для выпуска отладочной платы в форм-факторе, совместимом с Raspberry Pi, с более мощной FPGA, чем в существующих стартовых наборах. Для документации проекта готовились два сайта: nommu.org, про Linux для систем без MMU, и 0pf.org, про аппаратную часть проекта.
Из проблем на докладе прозвучало, что из последнего на тот момент релиза buildroot поддержку SuperH убрали, Лэндли сказал, что команда пытается вернуть её обратно. Общую поддержку систем без MMU в ядре, по его словам, продолжают поддерживать в актуальном состоянии другие проекты вроде Blackfin и microblaze, а команда J2 также работает над поддержкой без-MMU-режима в библиотеке musl и над устранением накопившихся мелких проблем в сборочных инструментах GCC.
Ключевые факты
- J2, чистая (clean-room) открытая реализация процессорного ядра Hitachi SuperH SH2 на VHDL, синтезируемая на FPGA-плате Xilinx Spartan6 (~$50) или производимая как ASIC.
- При техпроцессе 180 нм чип обходится примерно в три цента за штуку без роялти, патенты на SH2 истекли в 2014 году, на SH4 истекают в 2016-м.
- Поддержка SuperH уже есть в ядре Linux, GCC, GDB и strace, в отличие от конкурентов вроде OpenRISC и RISC-V, где всё нужно писать с нуля.
- На демонстрации команда загрузила Linux с ядром 3.4 на плате Spartan6, синтезированной прямо перед докладом; J2 добавляет к SH2 четыре новые инструкции.
- План на 2016 год включал J2+ (SMP и DSP для IoT и медицинских устройств) и позже J4 на базе SH4 с SIMD для приставок и автомобильной электроники, плюс кампанию на Kickstarter.
Почему это важно
Патенты на архитектуру SuperH японской Hitachi истекают, последние патенты SH2 закончились в 2014 году, у SH4 последний истекает в 2016-м. Это редкий случай, когда некогда коммерческая процессорная архитектура становится доступной для свободного использования без лицензионных отчислений. Команда Дионна, Лэндли и Кавасаки увидела в этом возможность собрать открытое аппаратное ядро (J2) на базе уже готового и проверенного набора инструкций, а не изобретать архитектуру заново, как это делают проекты OpenRISC и RISC-V.
Кому это важно
Материал адресован разработчикам встраиваемых систем и энтузиастам открытого железа: тем, кто делает низкобюджетные IoT-устройства, датчики и простые контроллеры, а также тем, кто интересуется темой "открытых" процессоров как альтернативой закрытым архитектурам x86 и ARM. J2 особенно интересен благодаря готовому программному стеку, ядру Linux, компилятору GCC и другим инструментам, которые уже умеют работать с SuperH.
Как это применить
J2 можно синтезировать на плате Xilinx Spartan6 стоимостью около $50, этого достаточно для прототипирования и запуска Linux. Для серийного производства сборочная цепочка J2 умеет генерировать RTL-описание схемы для передачи на фабрику ASIC: по расчётам команды, при техпроцессе 180 нм чип обходится около трёх центов за штуку без роялти, что подходит для одноразовой ("disposable") электроники. Дальнейшее развитие по плану на момент доклада, J2+ в 2016 году с поддержкой SMP и DSP для медицинских и IoT-применений, а затем J4 на базе SH4 с поддержкой SIMD для приставок и автомобильных систем.
Можно ли доверять
Это архивная статья LWN.net от 2015 года, пересказывающая публичный доклад на конференции LinuxCon Japan; LWN, авторитетное техническое издание с историей аккуратного освещения ядра Linux и открытых проектов. Но важно учитывать возраст материала: описанные планы (J2+ на 2016 год, кампания на Kickstarter) даны с точки зрения 2015 года, и текст не сообщает, что из этого было реализовано впоследствии, сюжет всплыл на Hacker News заново, но фактически описывает состояние проекта более чем десятилетней давности. Сайты nommu.org и 0pf.org на момент публикации уже заработали, первый с активной рассылкой, второй с документацией по аппаратной части.
Риски и подводные камни
Уже на самом докладе прозвучало, что из последнего на тот момент релиза buildroot поддержку SuperH убрали, и команде пришлось добиваться её возврата, верный признак того, что нишевая архитектура постоянно рискует выпасть из апстрима сопутствующих проектов. Команде приходилось параллельно чинить накопившиеся мелкие проблемы в сборочных инструментах GCC и добавлять поддержку в библиотеку musl. Статья не приводит никаких данных о производительности самого ядра J2, только оценки стоимости и сроки истечения патентов, так что судить о реальной скорости чипа по этому материалу нельзя.
«Это одноразовые вычисления на уровне «бесплатной игрушки внутри».»
— Джефф Дионн, содокладчик на LinuxCon Japan