Отечественный процессор — так каким он должен быть?
Предыдущая статья про микропроцессор Эльбрус вызвала живой отклик читателей Хабра. Изначально я планировал написать только статью о технических проблемах VLIW-архитектур на конкретном примере Эльбруса и имел мало желания углубляться в вопрос дальше, ввиду его куда большой скользкости и дискуссионности. Но сказать «А» и не сказать «Б» было бы, наверное, не совсем правильно. Поэтому в данной статье я попытаюсь изложить исключительно СВОЙ взгляд на проблематику того, какие процессорные Архитектуры (в контексте general purpose CPU) надо развивать и поддерживать рублем в России.
Сразу скажу — данная статья куда более дискуссионная, чем предыдущая. Если тупиковость VLIW для GP CPU — это просто научный факт, давно известный экспертам в индустрии (вот мнение Линуса Торвальдса, вот Хеннеси и Паттерсона), то пути развития отечественных процессоров в целом имеют множество неопределённостей, рисков и проблем, которые не всегда можно предугадать или правильно оценить. Поэтому убедительная просьба воспринимать данную статью как отправную точку для профессиональной дискуссии, а не готовое бесспорное решение. Конструктивная критика и вообще любые значимые дополнения — крайне приветствуются.
Но перед тем как погрузиться в техническую сторону вопроса необходимо сделать лирическое отступление на тему «отечественности» чего-либо и конкретно процессоров. К сожалению, на этом вопросе происходит такое количество спекуляций, манипуляций и откровенной дезинформации, что дискуссия как правило просто тонет в каких-то оторванных от реальности и полностью лишённых понимания ситуации аргументах. А серия выступлений и видео от популярных блогеров в последнее время сделали настолько актуальной данную тему, что не оставили мне шанса не пройтись по ней.
Что надо, чтобы собрать более-менее приличный сервер, который не стыдно поставить на реальное предприятие? Процессор, память, диски и куча мелкой комплектухи, на которую можем пока даже не обращать внимание. Память в России мы не производим. Диски тоже. Т.е. это не просто какая-то критическая зависимость в компонентах от зарубежных поставщиков — просто не производим ни в каком виде. Как и видеокарты, если мы говорим о десктопах или каких-то HPC вычислениях. Т.е. даже если не брать в рассмотрение процессоры, то по ключевым компонентам компьютера в целом у нас пока полная зависимость. И по некоторым пунктам наладить собственное производство — едва ли не сложнее, чем с процессорами. Но в данной статье мы не будем углубляться в проблемы с другими компонентами и сконцентрируемся именно на процессорах.
Для начала давайте попробуем на верхнем уровне разобраться, а что нужно, чтобы сделать более-менее современный процессор? Как выглядит та работа, которую выполняют передовые дизайн-центры в мире (такие как Apple, AMD, Qualcomm, Nvidia, HiSilicon), проектирующие процессоры?
В крайне схематичном виде, процесс выглядит как-то так:
В скобках указаны примерные затраты в человеко-годах для создания данного этапа производства процессора в условиях России. Понятно, что это крайне приблизительно, но важно, чтобы читатель примерно понимал порядки цифр. Синим цветом выделены этапы, которыми может заниматься дизайн-центр (а может не заниматься). Оранжевым — те этапы, которые в России отсутствуют, если речь идёт о создании передовых процессоров.
Что мы видим, исходя из этой картинки? Непосредственное производство у любого отечественного дизайн-центра будет на Тайване на TSMC. Вопрос с заводом в России, который будет способен производить чипы по передовым технологиям, это настолько большая проблема, что пока она выглядит просто нерешаемой, и про неё пока можно забыть. Некоторые технологические процессы можно пытаться локализовать (например, корпусирование), но в целом производство — это пока из другой вселенной.
Создание процессоров в наше время невозможно без кучи специализированного программного обеспечения, необходимого для процесса проектирования. Поэтому все разработчики будут использовать САПР (или EDA tools — общее название таких программ, используемое в индустрии) от Synopsys/Cadence — ведущих компаний в данной отрасли. И применение каких-то отечественных средств проектирования хоть и выглядит чуть менее страшно, чем история с заводом, но по сути о каком-либо импортозамещении сейчас речи идти не может, а разработка аналогов — это даже не годы, а десятилетия.
Для симуляций (необходимого процесса проверки корректности логики проектируемого процессора) необходимы современные ПЛИС (FPGA). Все они — импортные. Места для разработки и сервера — x86 (на другом Synopsys/Cadence не работает).
Все разработчики будут использовать сторонние IP-блоки, просто кто-то больше, а кто-то меньше (IP-блоки — это своего рода библиотеки, которые можно не писать самому, а использовать уже в готовом виде для создания процессора. Т.е., например, вы можете разрабатывать само ядро процессора, но контроллер памяти или PCI купить в готовом виде и интегрировать в свой SOC, т.к. их разработка потребует много времени и ресурсов).
К чему это всё? А к тому, что современная индустрия производства процессоров настолько колоссальна и сложна, что на данный момент ни одно государство в мире не имеет здесь полный цикл производства «от песка до MS Word» в контексте самого передового техпроцесса. Поэтому «импортозаместить» весь цикл производства процессоров в России — нереально в сколь-либо обозримой перспективе в масштабах человеческой жизни. Возможно, сейчас я разрушил вашу веру в деда Мороза, но взросление — иногда тяжёлый процесс. Но для того, чтобы понять, что делать, первое с чего стоит начинать — это без прикрас обрисовать ситуацию.
Означает ли это, что не стоит тогда мучаться, а надо просто покупать Intel«а, если нам их соизволят продать? Конечно же нет, ибо дорогу осилит идущий. Но надо чётко понять, что сейчас реально достижимо, и поставить адекватную цель. А потом понять, как к ней оптимально двигаться.
Лично для меня в разрезе процессоров текущая цель для России выглядит следующим образом –создать несколько (их не будет много, скорее всего, 2–3, но в идеале чем больше, тем лучше) дизайн-центров, которые будут разрабатывать собственные высокопроизводительные процессоры мирового уровня, уступающие передовым аналогам от Intel/AMD не в 3–5 раз, а на 20–30% и имеющие потенциал догнать конкурентов по характеристикам. Горизонт — 5–10 лет. И главное — это должны быть не предприятия, живущие на госдотации, а экономически успешные компании, зарабатывающие деньги самостоятельно, причём желательно существенную долю — на мировом рынке. Достижение этой цели позволит нарастить компетенции и создать экономический базис для того, чтобы двигаться дальше. Без этого, все рассказы и программы о том, как поднять с колен российскую микроэлектронику можно сразу выбрасывать в мусорное ведро — это просто демагогия.
Данные дизайн-центры сразу должны иметь потенциал для выхода на международный рынок. Чем больше рынок — тем больше партии и доходы. Рынок России сейчас априори слишком мал для окупаемости таких продуктов. Текущая поддержка от государства должна рассматриваться лишь как помощь в контексте затрат, неминуемо связанных с освоением новых рынков. Иначе вся эта история превращается бесконечную мыльную оперу — «мы такие бедные и несчастные, посмотрите сколько вкладывает Intel, дайте нам денег».
Т.е. главной целью должно быть создание конкурентноспособного на мировом рынке продукта. И для этого должны использоваться все доступные на данный момент технологии и разработки, если надо — то зарубежные. Потому что на текущий момент мы всё равно критически завязаны на импортные технологии. Да, тут возможны эксцессы, санкции, нечестная конкуренция и т.д. Но выбора у нас нет. Хорошая новость заключается в том, что мир сейчас настолько глобален и взаимосвязан, а стремление к прибыли у капиталистов настолько неистребимо, что полностью исключить Россию из мировых цепочек не получится (иначе это уже варианты, где будет говорить РВСН), и у нас всегда будет пространство, чтобы искать способы решения возникающих проблем и находить их.
В этом контексте все рассуждения об «отечественности» всегда должны иметь крайне прагматичный подход. Отечественность должна быть к месту и должна быть оправдана. Если она создаёт рабочие места в стране, при этом не влияет критически плохо на качество продукта — это хорошая отечественность. Если мы развиваем определённые компетенции и понимаем, сколько эти вложения стоят и какие конкретные проблемы решит — это тоже хорошая отечественность. А если это изобретение велосипеда с последующим геморроем для миллионов людей и миллиардными потерями и только потому, что «это наш дядя Вася изобрел» — это про то, как делать не надо. Продукт и компетенции — это должно стать альфой и омегой наших дизайн центров.
Что ещё показывает вышеприведённая схема? Что разработка Архитектуры — процесс несложный и в общем не представляющий особого интереса в плане компетенций. Здесь я хочу ещё раз повторить написанное в прошлой статье:
При обсуждении микропроцессоров крайне важно понимать различие между Архитектурой и Микроархитектурой. Говоря простыми словами, Архитектура процессора — это набор команд, который предоставляет аппаратура для использования софтом, иначе говоря, интерфейс между миром ПО и миром железа. Микроархитектура — это то, как процессор устроен внутри, т.е. каким образом он реализует предоставленные Архитектурой интерфейсы. В современных процессорах именно микроархитектура является ключевым фактором достижения производительности. Именно из-за неё разные процессоры линейки x86 или Arm, реализующие одинаковую Архитектуру, при схожих параметрах тактовой частоты могут в разы отличаться по производительности
Студенты любого приличного факультета, связанного с разработкой процессоров, за семестр делают свою архитектуру и пишут под неё эмулятор. Разница в вариантах RISC архитектуры будет не более чем в удобстве использования и в каких-то процентах производительности в зависомости от разных мелких нюансов. Разработка первой версии архитектуры x86 заняла 10 человеко-недель. Да, после этого было ещё X87/MMX/SSE/AVX и всякие расширения, но принципиально это ситуации не меняет. Вопрос только в том, какие команды стоит добавить в ISET, а какие «уже слишком». Тогда как для сравнения, разработка более-менее современного Out-of-Order процессора с нуля — это сотни, иногда тысячи, но уже не человеко-недель, а человеко-лет. Это не считая времени на разработку сторонних тулов, сторонних IP-блоков и непосредственно производства.
Ключевые и критические компетенции в разработке процессоров находятся в проектировании микроархитектуры и её реализации в кремнии, а не в разработке архитектуры. Фактически, спор об отечественности архитектуры аналогичен обсуждению — «а стоит ли для разработки отечественного софта использовать язык Си или любой другой, разработанный за рубежом?»
В то же время разработка собственной архитектуры имеет один крайне неприятный минус — необходимо полностью создавать программную экосистему с нуля, что по суммарным затратам может существенно превышать ресурсы, потраченные непосредственно на разработку процессора. А главное — на это потребуется много времени (годы), а до этого ваш процессор будет никому не нужен, потому что «silicon without software is just a sand».
Поэтому в данном вопросе как раз нет никакого смысла гнаться за абстрактной «отечественностью». Надо просто выбрать из тех вариантов, которые уже существуют и удовлетворяют нашим требованиям (об этом ниже).
Итак, с лирикой, можно закончить. Перейдём к конкретике. Из каких архитектур мы можем выбирать на данный момент? Каковы должны быть критерии выбора?
Мой тезис заключается в том, что массовая архитектура должна быть RISC/CISC (почему, объяснялось в прошлой статье) и в первую очередь удовлетворять двум основным требованиям:
Лицензионная чистота (т.е. возможность легально производить процессоры данной архитектуры, с минимальными рисками этой возможности лишиться)
Размер существующей программной экосистемы.
Все остальные аспекты можно рассматривать только в том случае, если по данным двум критериям сравниваемые архитектуры эквивалентны. И точка.
Ниже я приведу все варианты, которые достойны рассмотрения. Все остальные, на мой взгляд, заведомо уступают выбранным и не стоят внимания (если будут аргументированные возражения в пользу других архитектур — welcome):
X86–64
В нише серверов и десктопов архитектура от компании Intel — безусловный лидер. Поэтому по критерию развитости программной экосистемы у x86 нет конкурентов. Но всё заканчивается на вопросе лицензирования — это практически невозможно. Компания Intel полностью эксплуатирует факт доминирования x86-го софта на рынке и не горит желанием плодить себе конкурентов. Наличие лицензий у компаний вроде AMD и VIA есть результат бурной молодости в эпоху становления гегемонии x86. Сейчас же единственный шанс получить лицензию на архитектуру x86 — это купить компанию наподобие AMD. Думаю, достаточо очевидно, что это нереально по многим причинам, в том числе политическим. Поэтому архитектура x86 не может стать базисом для отечественных процессоров.
ARM
По размеру программной экосистемы архитектура ARM находится на текущий момент на 2-ом месте, уступая только конкурентам из Intel. Это безусловный плюс. Минусом является то, что это лицензируемая архитектура, правами на которую владеет британская комания Arm Ltd. И хотя бизнес-моделью Arm Ltd. является как раз зарабатывание на лицензировании своей архитектуры, и в общем случае, нет особых сложностей эту лицензию получить, для нас важно понимать, что может происходить в случаях частных. А в них, например, есть история про то, как компания Байкал Электроникс имела сложности с лицензированием Arm, из-за чего первый процессор, который она выпустила, был чип на основе MIPS архитектуры. И даже если вы лицензию получили, понятно, что её можно потом и отозвать. Тут крайне важно, как юристы пропишут договор, но понятно, что молодая компания из России вряд ли сможет диктовать условия контракта гиганту вроде Arm Ltd. Поэтому риск потенциальных проблем с лицензированием Arm всегда существует, и это является большим минусом.
Схема лицензирования от Arm содержит ещё один потенциальный минус — в основном варианте она не позволяет вносить изменения в микроархитектуру процессора, ограничивая лицензиата только правом менять некоторые настройки и интегрировать купленное ядро в свой чип. А как мы помним, именно умение разрабатывать собственную высокопроизводительную микроархитектуру является важнейшей компетенцией, к обладанию которой мы должны стремиться. Обойти данное ограничение можно только купив так называемую «Архитектурную» лицензию. Но это очень дорогое удовольствие — счёт на сотни миллионов долларов. Из 500+ компаний, лицензирующих архитектуру Arm, такую лицензию имеют только около 15.
Тем не менее, для старта «с нуля» — использование архитектуры Arm даёт большие преимущества, в виде не только развитой программной экосистемы, но и широкой аппаратной экосистемы, которую развивает Arm Ltd.
В России процессоры на базе архитектуры Arm разрабатывают как минимум компании Байкал Электроникс, Элвис, Миландр (хотя не все эти разработки нацелены на нишу выскопроизводительных процессоров, но тем не менее).
Sparc
Архитектура Sparc имеет долгую историю и на данный момент представлена в нишевых решениях серверов от компании Oracle, Fujitsu, линейки «космических» чипов Leon от EASA. Программная экосистема достаточно развитая, но уступает той же Arm. Главная проблема — это опять-таки лицензируемая архитектура. Формально лицензии выдаёт независимая некоммерческая организация SPARC International Inc. Сложно оценить, насколько затруднительно получение лицензии на Sparc, а главное, каковы риски отзыва. Это вопрос к профессиональной команде юристов. Но в целом, Sparc — это увядающая архитектура. Свои последние чипы Fujitsu уже перевела на Arm, Oracle вложился в стартап Ampere, разрабатывающий Arm-сервера. В общем-то, на данный момент Sparc по всем критериям уступает Arm, поэтому на мой взгляд нет смысла его рассматривать в качестве базовой платформы для отечественных процессоров.
В России процессоры архитектуры Sparc выпускает МЦСТ.
MIPS
Когда-то архитектура MIPS была исключительно популярной, фактически, бросая вызов x86. Но те времена давно минули, а буквально недавно компания, владеющая правами на MIPS, объявила, что она прекращает развитие архитектуры и «переходит» на RISC-V. Программная экосистема MIPS достаточно развита, с лицензией до конца непонятно, т.к. переход в полностью открытую хотя и был объявлен, но судя по всему, завершён не был. А теперь и непонятно, будут ли её вообще выдавать. В любом случае, делать ставку на архитектуру, от поддержки которой отказались сами владельцы, достаточно бессмысленно на мой взгляд.
В России процессоры на базе архитектуры MIPS разрабатывает НИИСИ
PowerPC
Архитектура из недр компании IBM, которая имеет достаточно большую долю рынка серверов даже сейчас. Т.е. с экосистемой всё неплохо. Более того, 2 года назад компания IBM, следуя за веяниями моды, сделала свою архитектуру открытой, передав все права Linux Foundation. Таким образом, архитектура PowerPC вполне удовлетворяет базовым требованиям для архитектуры, которую можно использовать для разработки отечественного процессора и широкого использования в дальнейшем.
Но опять-таки, минус архитектуры заключается в том, что она «не в тренде». Новые процессоры на её базе не появляются, экосистема не растёт, индустрия смотрит в сторону других архитектур. При этом IBM является founding member некоммерческой организации RISC-V International, которая занимается развитием архитектуры RISC-V. В каком-то смысле, история аналогична MIPS, с той разницей, что IBM как компания куда более финансово устойчива и успешна, и поэтому, в состоянии совсем уж не бросать своё детище.
RICV-V
Новомодная архитектура, целью которой заявляется «создание Linux для мира hardware». Несмотря на небольшой возраст, экосистема уже достаточно объёмная, и что главное, растёт быстрыми темпами, в то время как «старожилы» давно застопоролись в своём развитии. Главная прелесть RISC-V — это полностью лицензионно открытая архитектура. Т.е. брать и делать чип на базе RISC-V можно прямо сейчас, не нужно никаких бюрократических действий или выплат. Собственно, именно появление RISC-V привело к фактической смерти MIPS, заставило IBM сделать PowerPC открытым, добивает Sparc и даже заставлет нервничать гигантов из Arm и Intel, что приводит к появлению такого рода новостей.
В целом, RISC-V также можно признать отличным кандидатом для создания базовой отечественной платформы.
Справедливости ради, надо отметить, что в силу своей молодости, RISC-V — ещё достаточно сырая архитектура. Например, не до конца утрясены необходимые расширения наподобие SIMD или атомарных инструкций. Но гибкость архитектуры и лицензирования позволяет даже в таком состоянии производить уже вполне серьёзные процессоры. И скорость развития экосистемы RISC-V действительно впечатляющая.
На текущий момент мне известно о 2-х компаниях в России, занимающихся разработкой RISC-V ядер — это Syntacore (приобретённая в 2019-ом году компанией Yadro) и CloudBear (Миландр выпустил микроконтроллер на базе ядра от CloudBear).
RISC архитектура собственной разработки
Было бы справедливо упомянуть и данный вариант. Главный его минус — это полное отсутствие экосистемы и необходимость создавать её с нуля. В силу того, что вряд ли стоит рассчитывать, что популярность новой архитектуры выйдет за пределы России, нам придётся всё тащить самим. Т.к. разработка новой архитектуры сама по себе никакой практической ценности не несёт, а вот проблем добавляет множество, мне этот путь видится неправильным. Он проигрывает любому варианту из уже существующих архитектур со свободной лицензией.
Что касается лицензирования — то новая архитектура не должна принадлежать никакой частной компании. Она должна быть открыта для всех наподобие RISC-V.
Эльбрус
Хотя мы уже выяснили, что VLIW не может быть основой для GP CPU на широком рынке, мне кажется полезным для понимания рассмотреть архитектуру Эльбрус в контексте вышеозначенных требований, предъявляемых для RISC/CISC архитектур. С программной экосистемой всё понятно — это вариант 7, помноженный на сложности портирования на VLIW и закрытость архитектуры.
А вот про лицензируемость стоит поговорить отдельно. Компания МЦСТ постоянно заявляет об отечественной архитектуре. Нет сомнения, что архитектуру E2K разработали люди в России (сам к этому приложил руку). Но в таких делах гражданство или национальность разработчиков имеет мало значения. Две трети жителей Силиконовой Долины — азиаты, но вряд ли можно чипы от Apple или Qualcomm назвать индийскими. Главный вопрос — кому юридически принадлежат права на архитектуру Эльбрус? И вопрос этот, вообще говоря, совсем непраздный. Секретом Полишинеля является тот факт, что всеми патентами, связанными с разработкой Эльбрусов, владеет компания Elbrus International Ltd., зарегистрированная на Каймановых Островах. Какова тогда структура владения прав на архитектуру Эльбрус? И кто является конечным бенефициаром тех юридических структур? Даже если это МЦСТ в конечном итоге, то это частная компания, которая принадлежит вполне определенным лицам. Что произойдёт в случае, если они захотят компанию продать иностранцам, как это уже было сделано в 2004-ом году? И что будет, если во владение МЦСТ вступят люди с иностранными паспортами, хотя бы по праву наследования?
Вообще, ситуация с закрытостью архитектуры Эльбрус, чем дальше, тем вызывает всё больше вопросов. Массово в масштабах страны внедрять в производство архитектуру с закрытой системой команд — это даже уже не маразм, это где-то на грани госизмены. Поэтому первое, с чего надо начинать, если рассматривать её в качестве базовой отечественной платформы — это выяснение юридического статуса архитектуры и её открытие. Иначе мы можем получить ситуацию, когда вложив миллиарды, получим иски от компаний с иностранной юрисдикцией и все затраты по созданию программной экосистемы под E2K вылетят в трубу. И никакие ссылки на могущественного «заказчика», которыми любят оправдывать закрытость архитектуры спикеры от МЦСТ, здесь уже не спасут — иностранным судам будет всё равно.
Для меня очевидно, что базовая отечественная архитектура не должна принадлежать одной частной компании без простой возможности её лицензирования (в идеале, вообще должна быть открытой архитектурой). Какой бы мы вариант в итоге не выбрали, архитектура должна быть свободно доступна для любого желающего, кто захочет создавать процессоры для отечественного рынка, или разрабатывать под него ПО. Потому что это избавляет от множества рисков: что конкретно эта компания попадёт под санкции, что пользуясь своим доминированием начнёт диктовать условия потребителям и государству или работать спустя рукава. Общедоступная и открытая архитектура даёт гарантию, что всегда можно будет переориентироваться на другого разработчика, возникнет та самая конкуренция на уровне коллективов разработки, и что все те усилия, которые государство и разработчики софта будут вкладывать в создание программной экосистемы, не пойдут прахом.
Если суммировать вышеизложенные пункты, лично моё мнение будет таким: на текущий момент «здесь и сейчас», лучший вариант — это архитектура ARM. Она имеет наиболее развитую из доступных вариантов экосистему (не только программную, но и аппаратную), при этом, есть возможность её лицензирования.
Если же смотреть на перспективу, то это RISC-V. Данная архитектура не имеет лицензионных рисков ARM, хотя на данный момент и уступает по размеру экосистемы (но это будет стремительно меняться в ближайшие годы).
По большому счёту, обсуждение должно идти, какую комбинацию из этих 2-х архитектур нужно выбирать. На мой взгляд, упор надо делать на развитие именно RISC-V, т.к. это, помимо прочего, и новый рынок, на который наши компании имеют возможность зайти, ввиду его текущего бурного развития. Рынок ARM уже куда более забронзовел и там меньше возможностей. При этом, с учётом того, что программная экосистема ARM сама по себе очень широкая, нам не потребуется больших усилий по её развитию, по-большей части, мы можем пользоваться уже готовым. Да, некоторым локальным производителям программного обеспечения, возможно, придётся портировать свои продукты не на одну архитектуру, а на две (ARM и RISC-V), но это уже неизбежные издержки, на которые придётся пойти, т.к. идеальных вариантов всё равно нет.
Выбор, каким путем идти и какую из 2-х вышеуказанных архитектур использовать для создания своих процессоров каждый дизайн-центр должен уже решать сам. Риски, преимущества и недостатки каждого варианта в целом изложены выше. А какой путь окажется более успешным будет зависеть уже от множества факторов. Но по-крайней мере, если придерживаться такого пути, имеющиеся ресурсы и усилия людей будут работать на дальнейшее развитие отрасли максимально эффективно.