Разработка современного микропроцессора — 5 ЭКО

efea3b70ead551e7cd277fe35956c083.jpg

Преамбула

Микроэлектроника на сегодняшний момент является самой сложной областью человеческой деятельности. Текущий технологический уклад основан на нанометровых кремниевых (и не только) структурах, количество вложенных материальных и интеллектуальных средств в микроэлектронную индустрию колоссально. Вся эта сложность порождает громадный стек технологий и высокую специализацию в цепочке разделения труда, необходимого, чтобы произвести то устройство, с которого вы сейчас читаете данную статью. И как следствие, высокий порог входа в понимание того, как научиться создавать конкурентоспособные микропроцессоры. В российских реалиях добавим к этому общую слабость индустрии, сильно оторванной от мировой системы разделения труда, что вкупе с врождённой закрытостью большинства наших предприятий приводит к ситуации, когда осознание масштаба проблем и способов их решения в обществе и государстве достаточно слабое. Серия данных статей призвана глубже познакомить читателя с тем, как устроен процесс разработки высокопроизводительных Систем на Кристалле (СнК или SoC — System on Chip).

Вводная

Итак, представим, наша цель — разработка современного высокопроизводительного микропроцессора (серверного, десктопного или мобильного класса, это вы решаете сами). Вы- молодой и амбициозный руководитель новой компании, специально созданной для данной цели. У вас есть $100 млн инвестиций (сумма, достаточная для разработки и вывода на рынок первого решения), и понимание, кому продавать разработанное изделие (например, государственные меры создали рынок сбыта). Иными словами, экономический базис для ввязывания в такое безнадёжное дело, как разработка конкурентоспособного микропроцессора, у вас есть. Что нужно для успеха предприятия? Если абстрагироваться от технических деталей, то на верхнем уровне ответ будет простым — доступ к 5 ЭКОсистемам. Что это за экосистемы? Вот они:  

Экосистемы разработки микропроцессора

Экосистемы разработки микропроцессора

Почему они так важны? Потому, что не имея доступа хотя бы к одной из перечисленных экосистем, создать минимально конкурентоспособное решение невозможно. Давайте пройдёмся по каждому пункту отдельно, и вкратце обсудим, что он из себя представляет. Особенно уделим внимание тому, как это всё выглядит в российских реалиях, с нашей склонностью делать всё самостоятельно и часто изобретать велосипед там, где не надо. Итак, поехали.

1. Экосистема ПО

7ca2e4152b44eb949d21d5affae6257f.jpeg

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

Отсюда, выхода здесь 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-блоками для отечественных решений и уже известна читателям хабра. 

6843601f745012e31a38cd1b05051e13.jpg

Все нанесённые на данную схему прямоугольники являются отдельными IP-блоками (с определённой степенью дублирования). Давайте перечислим основные из них:

  1. Процессорный кластер на базе ядер Arm Cortex A53

  2. GPU Imagination Technologies PowerVR Series8XE

  3. VPU Arm Mali-­V61

  4. ISP Imagination Technologies PowerVR V2505

  5. Контроллер дисплея на базе ядер Arm DP550

  6. Процессорный DSP‑кластер на базе ядер Элвис ELcore50

  7. Навигационный аппаратный ускоритель Элвис Navicore5L

  8. Сервисные MIPS32-совместимые ядра Элвис RISC0 и RISC1

  9. DDR4 (контроллер + PHY)

  10. PCIe 3.0 (контроллер + PHY)

  11. USB 3.0 (контроллер + PHY)

  12. MIPI (контроллер + PHY)

  13. Nand Flash контроллер

  14. QSPI контроллер

  15. SDMMC контроллер

  16. Ethernet контроллер

  17. И прочие UART, I2C, I2S, SPI, CAN, JTAG, Таймеры, Сенсоры, PLL и т.д.

Нельзя не заметить, что данный чип не является какой-то супер-передовой разработкой в мировом масштабе. Произведённый по технологии 28нм (почти 15-летней давности) и не содержащий каких-то сложных и современных IP-блоков. Тем не менее, он содержит в себе по большей части покупные IP-блоки. И это абсолютно типичная ситуация для большинства решений как в России, так и за рубежом.  Логика такой ситуации вполне очевидна, если хоть немного понимать процесс разработки SoC. Здесь можно только посоветовать перечитать статью от самого настоящего CEO процессорной компании: IP or not IP?

В экономическом разрезе рынок IP-блоков выглядит примерно вот так:

154726717325e62fb5826e6926d44480.jpg

Видно, как первые 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). За прошлый год распределение по долям рынка выглядело примерно так:

92ec06353fa3fe030af484546815f0f4.png

Эти тулы представляют из себя десятки сложнейших программных инструментов. И создать конкурентный SoC без участия компаний Synopsys или Cadence де-факто невозможно.

В условиях России нет ничего, если мы говорим о дизайне хоть сколько-то современного ASIC. Есть какие-то решения для дизайна плат, софт для корпусирования, но непосредственно в дизайне ASIC ситуация плачевная. Я не слышал, чтобы в российских дизайн-центрах использовалось хоть что-то отечественное по данной части. Даже открытые openlane/openroad использовались хотя бы на посмотреть/попробовать (пусть сейчас это всё далеко от серьёзных дел), но не отечественные САПР.

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

4. Экосистема разработчиков

ec9f1682c0d1f36acfd251fcc30d17ed.png

Никакие разработки, никакие технологии невозможны без главного — людей, которые всё это будут делать. И ведь это не только инженеры — нужны также логисты, экономисты, финансисты, маркетологи и сейлзы, понимающие специфику отрасли. Но ядро процессорной компании — это, конечно же, разработчики. И если вы решили создать новую компанию в микроэлектронной индустрии, вам потребуется нанять необходимое количество специалистов, зачастую с уникальными компетенциями. Сколько сотрудников потребуется? Конечно же, это сильно зависит от того, насколько сложный процессор вы решите разрабатывать, а также, что потребуется делать самостоятельно в части разработки ПО и 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

foundry_market_share

Правда, в реальности, выбор у вас небольшой — это TSMC, TSMC и TSMC. Нет, в теории есть Samsung, есть может быть Intel, а если вы не замахиваетесь на самые современные ноды, то вероятно вас удовлетворит Global Foundries или SMIC.

Но на практике, в данный момент, если цель произвести ваш чип максимально быстро и качественно, вариант фактически один — TSMC.

Что с производством в России?

Думаю, все уже в курсе — это наша самая главная боль. Возможности отечественных фабрик находятся в диапазоне 90–180 нм. Даже не будем обсуждать скользкий вопрос, насколько 90нм реально есть — в любом случае таких техпроцессов катастрофически недостаточно для создания чего-либо актуального в части высокопроизводительных процессоров. Никакие серверные, десктопные, ноутбучные, мобильные и ИИ-процессоры недоступны для создания в таких условиях. Есть бодрые заявления чиновников о появлении в России 28 нм фабы к 2028-ому году. Тут можно только скрестить пальцы и надеяться на реализацию этих планов. Но надо понимать, что в 2028-ом году 28 нм техпроцессу будет 18 лет и мир будет переходить уже на техпроцесс 14А (1.4 нм).  А что означает техпроцесс в контексте разработки высокопроизводительных процессоров вы можете ознакомиться здесь.

В качестве резюме

Возможно, дойдя до данного абзаца, у читателя возникло ощущение, что его отговаривают от такой затеи, как разработка процессоров — всё очень сложно и дорого, а в российских условиях так просто ужас. Но это не так. Микроэлектроника — основа современной цивилизации. Более того, она продолжает оставаться одним из основных драйверов технологического развития человечества. Здесь создаются захватывающие дух технологии и умопомрачительные решения. И при правильной постановке дела, должном упорстве и наличии знаний, можно достичь намеченной цели. Особенно в России, где сложность ситуации компенсируется возможностями в освободившихся рынках и нишах.

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

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

© Habrahabr.ru