Разработка современного микропроцессора — 5 ЭКО
Преамбула
Микроэлектроника на сегодняшний момент является самой сложной областью человеческой деятельности. Текущий технологический уклад основан на нанометровых кремниевых (и не только) структурах, количество вложенных материальных и интеллектуальных средств в микроэлектронную индустрию колоссально. Вся эта сложность порождает громадный стек технологий и высокую специализацию в цепочке разделения труда, необходимого, чтобы произвести то устройство, с которого вы сейчас читаете данную статью. И как следствие, высокий порог входа в понимание того, как научиться создавать конкурентоспособные микропроцессоры. В российских реалиях добавим к этому общую слабость индустрии, сильно оторванной от мировой системы разделения труда, что вкупе с врождённой закрытостью большинства наших предприятий приводит к ситуации, когда осознание масштаба проблем и способов их решения в обществе и государстве достаточно слабое. Серия данных статей призвана глубже познакомить читателя с тем, как устроен процесс разработки высокопроизводительных Систем на Кристалле (СнК или SoC — System on Chip).
Вводная
Итак, представим, наша цель — разработка современного высокопроизводительного микропроцессора (серверного, десктопного или мобильного класса, это вы решаете сами). Вы- молодой и амбициозный руководитель новой компании, специально созданной для данной цели. У вас есть $100 млн инвестиций (сумма, достаточная для разработки и вывода на рынок первого решения), и понимание, кому продавать разработанное изделие (например, государственные меры создали рынок сбыта). Иными словами, экономический базис для ввязывания в такое безнадёжное дело, как разработка конкурентоспособного микропроцессора, у вас есть. Что нужно для успеха предприятия? Если абстрагироваться от технических деталей, то на верхнем уровне ответ будет простым — доступ к 5 ЭКОсистемам. Что это за экосистемы? Вот они:
Экосистемы разработки микропроцессора
Почему они так важны? Потому, что не имея доступа хотя бы к одной из перечисленных экосистем, создать минимально конкурентоспособное решение невозможно. Давайте пройдёмся по каждому пункту отдельно, и вкратце обсудим, что он из себя представляет. Особенно уделим внимание тому, как это всё выглядит в российских реалиях, с нашей склонностью делать всё самостоятельно и часто изобретать велосипед там, где не надо. Итак, поехали.
1. Экосистема ПО
Разработка любого железа не имеет смысла без понимания того, какой софт будет на нём крутиться: «Процессор без программного обеспечение просто песок». Ведь конечный пользователь, в конце концов, использует программы, а что лежит по стеку ниже его волнует мало. История знает много примеров, когда менее производительные и «крутые» процессоры выигрывали рынок именно за счёт развития программной экосистемы. Это особенно важно сейчас, когда за десятилетия создания программного обеспечения накопились большие стеки пользовательских приложений, и самостоятельное портирование всего этого хозяйства для разработчика железа является абсолютно нереальной задачей.
Отсюда, выхода здесь 2:
либо вы выбираете узкую нишу, где какими-то разумными усилиями совместно с разработчиками ПО (чем-то простимулированными, конечно) реалистично создать необходимую экосистему софта
либо вы присаживаетесь на уже существующую программную экосистему
Собственно, именно данный пункт определяет выбор того, какая процессорная Архитектура будет использоваться в вашем микропроцессоре.
Именно поэтому, при всех проблемах компании Intel, процессоры архитектуры x86–64 доминируют на серверных и десктопных рынках. И будут там доминировать ещё долго, так как развитие программной экосистемы дело небыстрое и инертное.
Именно поэтому процессоры архитектуры Arm безоговорочно доминируют на мобильном рынке. И наработанная база ПО в данном сегменте позволяет Arm-процессорам пытаться проникать в серверные и десктопные решения.
Именно поэтому весь мир сейчас идёт в сторону развития архитектуры RISC-V. Это не вопрос какой-то уникальности или производительности данной системы команд. В современном мире все RISC/CISC архитектуры с точки зрения производительности примерно одинаковы (по модулю определённых нюансов, конечно же). Дело именно в попытке создания общего стандарта интерфейса между миром ПО и миром железа, коим процессорная архитектура и является по сути. В перспективе, это позволит разработчикам процессоров получить доступ к огромной готовой программной экосистеме, не ломая голову, как её разработать.
В российских реалиях данный пункт имеет некоторые интересные особенности. По сути, реализация процессора архитектуры x86 или arm имеет только юридические ограничения. Т.к. спецификации находятся в открытом доступе, технически сделать процессор с поддержкой этих архитектур не составляет труда (составляет большую сложность сделать ХОРОШИЙ x86/arm процессор, но об этом ниже). Вопрос, насколько такой путь правильный, я оставлю для размышления читателям. Лично мне кажется, что выбранный в целом российской индустрией путь на участие в развитии экосистемы RISC-V на текущий момент верным (хотя ситуация может и поменяться). Создавать свою отдельную российскую систему команд выглядит затеей достаточно сомнительной — мы не получаем никаких особых плюсов, зато лишаем себя легального доступа к огромному стеку ПО, который самостоятельно портировать мы не сможем. Давайте не забывать, что программистов в России примерно в 30 раз меньше, чем во всём остальном мире.
В целом, в одной из предыдущих статей изложены общие рассуждения на предмет выбора процессорной архитектуры. И несмотря на то, что она была написана более 3-х лет назад (считай, в другой реальности), все приведённые там рассуждения до сих пор актуальны.
2. Экосистема IP-блоков
Допустим, вы определились с тем, на какую программную экосистему опираться. Этот выбор определил то, процессор какой архитектуры мы будем разрабатывать. Но дело в том, что в вопросе разработки самого «железа» выбор системы команд пока нам не дал практически ничего. По сути, вы получили спецификацию, что принимает на входе и выдаёт на выходе процессор. А вот как это всё делать — вопрос уже микроархитектурной реализации. И это — основная по сложности и трудоёмкости задача в части разработки процессора. Если разработка архитектуры исчисляется несколькими человеко-месяцами, в крайнем случае годами, то разработка только хорошего процессорного ядра (говоря техническом языком — IP-блока процессорного ядра) — это сотни, а то и тысячи человеко-лет. А кроме процессорных ядер на чипе есть много ещё чего. Собственно, те кубики, из которых вы будете собирать ваш чип, и есть IP-блоки.
И тут хочется немного углубиться в детали. Вообще, в публичных дискуссиях почти всегда фокус внимания сосредоточен на микроархитектуре процессорных ядер. Но строго говоря, дизайн конечного аппаратного решения включает в себя как минимум 3 уровня:
Микроархитектура каждого из IP-блоков SoC (включая в том числе процессорное ядро, причём оно может быть далеко не самым сложным IP-блоком)
Архитектура самого SoC (состоящего из сконфигурированного набора IP-блоков)
Архитектура вычислительной системы в целом (это больше относится к разработчикам конечных устройств, но архитектор процессора должен также учитывать определённые аспекты архитектуры вычислительной системы, например, требования по тепловыделению, количество и параметры необходимых интерфейсов и т.д.)
Давайте посмотрим, что из себя представляет какой-нибудь российский чип с точки зрения содержания различных IP-блоков. Например, возьмём микросхему 1892ВА018 СнК «СКИФ» от АО НПЦ «Элвис», которая является достаточно типичной в разрезе комплектации IP-блоками для отечественных решений и уже известна читателям хабра.
Все нанесённые на данную схему прямоугольники являются отдельными IP-блоками (с определённой степенью дублирования). Давайте перечислим основные из них:
Процессорный кластер на базе ядер Arm Cortex A53
GPU Imagination Technologies PowerVR Series8XE
VPU Arm Mali-V61
ISP Imagination Technologies PowerVR V2505
Контроллер дисплея на базе ядер Arm DP550
Процессорный DSP‑кластер на базе ядер Элвис ELcore50
Навигационный аппаратный ускоритель Элвис Navicore5L
Сервисные MIPS32-совместимые ядра Элвис RISC0 и RISC1
DDR4 (контроллер + PHY)
PCIe 3.0 (контроллер + PHY)
USB 3.0 (контроллер + PHY)
MIPI (контроллер + PHY)
Nand Flash контроллер
QSPI контроллер
SDMMC контроллер
Ethernet контроллер
И прочие UART, I2C, I2S, SPI, CAN, JTAG, Таймеры, Сенсоры, PLL и т.д.
Нельзя не заметить, что данный чип не является какой-то супер-передовой разработкой в мировом масштабе. Произведённый по технологии 28нм (почти 15-летней давности) и не содержащий каких-то сложных и современных IP-блоков. Тем не менее, он содержит в себе по большей части покупные IP-блоки. И это абсолютно типичная ситуация для большинства решений как в России, так и за рубежом. Логика такой ситуации вполне очевидна, если хоть немного понимать процесс разработки SoC. Здесь можно только посоветовать перечитать статью от самого настоящего CEO процессорной компании: IP or not IP?
В экономическом разрезе рынок IP-блоков выглядит примерно вот так:
Видно, как первые 3 игрока занимают более 2/3 рынка — всем уже известный ARM и компании Synopsys/Cadence, о которых поговорим ниже.
Что всё вышенаписанное означает в нашей российской ситуации?
Давайте предположим, что мы хотим сделать чип СКИФ на полностью российских IP-блоках. Какова была бы ситуация?
Аналог процессорных Cortex A53 в России есть. Как минимум, компании CloudBear и Syntacore/Ядро имеют у себя ядра схожего класса. Это хорошая новость. Плохая новость заключается в том, что Arm Cortex A53 является достаточно простым 2-way superscalar in-order процессором. Иными словами, процессор с таким ядром в десктоп/ноутбук/смартфон/сервер не поставишь — он слишком низкой производительности для этого. Самые передовые IP-блоки процессорных ядер, разработанных в России, находятся где-то в промежутке между Cortex A57 и Cortex A72. Это тоже достаточно слабые ядра, уступающие в разы современным ядрам от Intel/Amd/Apple.
GPU/VPU/ISP — просто отсутствуют. Я не знаю ни одного более-менее современного готового к промышленному применению IP-блока российской разработки.
DDR/PCIe — в принципе, ситуация аналогичная предыдущему пункту, если мы говорим о чём-то современном. Тут ситуация усугубляется ещё тем, что для данных интерфейсов (называемых высокоскоростными), нужны не только сами цифровые котроллеры, но ещё и аналоговая часть, называемая PHY. Разработка последнего для современных стандартов задача крайне затратная, завязанная на конкретный техпроцесс и требующая тесного взаимодействия с фабрикой. А в нынешней ситуации, как вы понимаете, это проблема. Разработка цифровой части DDR/PCIe у нас ведётся в МЦСТ. В НИИСИ есть наработки по PHY для старых версий DDR (насколько мне известно). Поэтому как минимум, есть какой-то базовый опыт. Но готовых IP-блоков для лицензирования на российском рынке нет.
USB/MIPI/NAND/Ethernet — опять-таки, почти аналогично предыдущему пункту. Там, где нужен PHY — их нет, какие-то разработки цифровой части фрагментарно ведутся, но для лицензирования почти ничего нет.
Низкоскоростные интерфейсы UART, I2C, I2S, SPI, CAN, JTAG и т.д. — присутствуют на российском рынке. Правда, проблема в том, что цена им — полушка в базарный день, т.к. это достаточно простые блоки. У мировых лидеров рынка лицензирования IP-блоков их выдают едва ли не на сдачу при покупке дорогих решений. Причём это отлаженные на тысячах дизайнов IP-блоки. И экономия микроскопических по масштабу всего проекта денег с риском получить багованный UART выглядит, конечно, такой себе перспективой. Но они хотя бы есть, пусть и являются наименее сложными IP-блоками в стеке разработки всего чипа.
Для желающих детальнее исследовать данный вопрос, можно зайти на сайт сф-блоки.рф и изучить номенклатуру предлагаемых решений. Правда многие позиции там доступны только для зарегистрированных пользователей, а зарегистрироваться можно только от имени компании. Но, как говорится, хоть что-то.
Если суммировать, то фактически в России нет ни одного готового IP-блока для дизайна современного процессора мирового уровня. Есть какие-то наработки по отдельным позициям, где-то больше, где-то меньше, но собрать из собственных IP-блоков серверный/десктопный процессор даже 15 летней давности на текущий момент не представляется возможным.
3. Экосистема САПР (EDA tools)
Разработка любого процессора невозможна без специализированного САПР, называемого в индустрии EDA tools. В мире есть 2.5 лидера в данной области — компании Cadence, Synopsys и Mentor Graphics (теперь Siemens). За прошлый год распределение по долям рынка выглядело примерно так:
Эти тулы представляют из себя десятки сложнейших программных инструментов. И создать конкурентный SoC без участия компаний Synopsys или Cadence де-факто невозможно.
В условиях России нет ничего, если мы говорим о дизайне хоть сколько-то современного ASIC. Есть какие-то решения для дизайна плат, софт для корпусирования, но непосредственно в дизайне ASIC ситуация плачевная. Я не слышал, чтобы в российских дизайн-центрах использовалось хоть что-то отечественное по данной части. Даже открытые openlane/openroad использовались хотя бы на посмотреть/попробовать (пусть сейчас это всё далеко от серьёзных дел), но не отечественные САПР.
В последнее время государство предпринимает определённые шаги в данном направлении, но на какие-то заметные результаты в ближайшие годы рассчитывать не приходится, т.к. отставание огромное. Опять-таки, проблему усугубляет отсутствие доступа к современному производству чипов, т.к. разработка многих EDA тулов возможна лишь в тесной кооперации с фабами.
4. Экосистема разработчиков
Никакие разработки, никакие технологии невозможны без главного — людей, которые всё это будут делать. И ведь это не только инженеры — нужны также логисты, экономисты, финансисты, маркетологи и сейлзы, понимающие специфику отрасли. Но ядро процессорной компании — это, конечно же, разработчики. И если вы решили создать новую компанию в микроэлектронной индустрии, вам потребуется нанять необходимое количество специалистов, зачастую с уникальными компетенциями. Сколько сотрудников потребуется? Конечно же, это сильно зависит от того, насколько сложный процессор вы решите разрабатывать, а также, что потребуется делать самостоятельно в части разработки ПО и IP-блоков (создание собственного САПР или фабрики не предполагается, это фантастический сценарий). Если вы максимально исключите необязательные затраты, лицензируете все нужные IP-блоки и минимизируете количество необходимого для самостоятельной разработки софта, то для создания более-менее современного процессора вам потребуется коллектив в диапазоне 20–100 инженеров. Любая дополнительная «фича», как-то, разработка новых библиотек, или разработка собственного IP-блока добавляет инженерных человеко-лет. Причём такая добавка может легко перекрыть трудозатраты на разработку самого чипа. Например, создание собственного высокопроизводительного ядра CPU, GPU, разработка PHY высокоскоростных интерфейсов — задачи, по сложности сопоставимые и даже превышающие проектирование непосредственно SoC. И специалисты для этого требуется отдельные, со своей специализацией.
Каковы реалии экосистемы разработчиков в России?
Суровая правда текущей ситуации заключается в том, что нанять даже одного опытного HW инженера на отечественном рынке сейчас — задача крайне сложная. Речь не идёт о 100, или хотя бы 10 человек. Речь идёт о единицах. Это реальность для всех дизайн-центров в России — от самых передовых до самых захудалых. Всё количество HW инженеров с опытом ASIC-разработки в России исчисляется несколькими сотнями, максимум 1–2 тысячами человек — и это включая и RTL-дизайнеров, и верификаторов, и топологов. Есть ещё некоторое количество FPGA-инженеров, которые имеют смежный опыт и могут при определённых условиях привлекаться к разработке SoC, но собственно и всё. И все ваши начинания будут упираться в дичайший дефицит инженерного ресурса. Причём по некоторым направлениям наличие опытных инженеров физически равно нулю, т.к. в стране по ним не велось разработки от слова совсем.
Кстати, если вы обладатель столь редких компетенций и вам интересны крутые проекты, то ждём вас в Байкал Электроникс. Со списком вакансий можно ознакомиться здесь: https://hh.ru/employer/1188681/vacancies
Пишите в личку)
5. Экосистема производства
Все вышеперечисленные пункты при разработке процессора должны иметь логическое завершение — реализация вашего дизайна в кремнии.
У нас принято говорить только о непосредственном производстве чипов — у всех на слуху TSMC и мучения Intel в попытке догнать убежавшего вперёд конкурента. На самом деле производство несколько шире: это и подложки, и корпусирование, и тестирование — тоже огромные, сложные и важные производства, без которых вы не произведёте конечный продукт. Но для упрощения повествования я тоже сконцентрируюсь именно на печати самих чипов.
Итак, предстоит выбрать фабрику, на которой вы будете производить свой самый лучший процессор. Причём сделать это надо практически в начале проекта — закупка IP-блоков и САПР уже зависит от того, где будет осуществляться производство. Вот так выглядит рынок Foundry сейчас:
foundry_market_share
Правда, в реальности, выбор у вас небольшой — это TSMC, TSMC и TSMC. Нет, в теории есть Samsung, есть может быть Intel, а если вы не замахиваетесь на самые современные ноды, то вероятно вас удовлетворит Global Foundries или SMIC.
Но на практике, в данный момент, если цель произвести ваш чип максимально быстро и качественно, вариант фактически один — TSMC.
Что с производством в России?
Думаю, все уже в курсе — это наша самая главная боль. Возможности отечественных фабрик находятся в диапазоне 90–180 нм. Даже не будем обсуждать скользкий вопрос, насколько 90нм реально есть — в любом случае таких техпроцессов катастрофически недостаточно для создания чего-либо актуального в части высокопроизводительных процессоров. Никакие серверные, десктопные, ноутбучные, мобильные и ИИ-процессоры недоступны для создания в таких условиях. Есть бодрые заявления чиновников о появлении в России 28 нм фабы к 2028-ому году. Тут можно только скрестить пальцы и надеяться на реализацию этих планов. Но надо понимать, что в 2028-ом году 28 нм техпроцессу будет 18 лет и мир будет переходить уже на техпроцесс 14А (1.4 нм). А что означает техпроцесс в контексте разработки высокопроизводительных процессоров вы можете ознакомиться здесь.
В качестве резюме
Возможно, дойдя до данного абзаца, у читателя возникло ощущение, что его отговаривают от такой затеи, как разработка процессоров — всё очень сложно и дорого, а в российских условиях так просто ужас. Но это не так. Микроэлектроника — основа современной цивилизации. Более того, она продолжает оставаться одним из основных драйверов технологического развития человечества. Здесь создаются захватывающие дух технологии и умопомрачительные решения. И при правильной постановке дела, должном упорстве и наличии знаний, можно достичь намеченной цели. Особенно в России, где сложность ситуации компенсируется возможностями в освободившихся рынках и нишах.
Но без понимания того, как организована микроэлектронная индустрия и почему именно так, как и к каким экосистемам вы подключаетесь для получения необходимых решений, цели не достичь.
Являясь самой сложной индустрией человечества, микроэлектроника имеет крайне высокую степень разделения труда. И это неизбежность — создание технологий и решений такого уровня требует серьёзной специализации. Данный факт необходимо понимать и действовать, вооружившись этим знанием. И только в этом случае есть шанс на успех.