Безопасность критической инфраструктуры. В чем реальные преимущества процессора «Эльбрус»
Сейчас некоторые специалисты говорят, что процессоры «Эльбрус» могут заменить западные образцы. Так ли это? В чем отечественные разработки могут конкурировать с западными аналогами? Эти и другие вопросы мы задали Константину Александровичу Трушкину, заместителю генерального директора по маркетингу АО «МЦСТ», которое занимается разработкой процессоров «Эльбрус».
Корреспондент ИА Красная Весна: Добрый день, Константин Александрович. Давайте начнем с общего рассказа об истории Вашей компании для наших читателей.
Трушкин К.А.: Добрый день. Компания была образована в апреле 1992 года. Мера эта была связана с развалом Советского Союза, с развалом отрасли промышленности, связанной с разработкой и производством вычислительной техники. Группа специалистов во главе с Александром Киировичем Кимом образовала акционерное общество, которое назвали ЗАО «МЦСТ» — Московский центр SPARC–технологий.
Началось все с очень тесного сотрудничества с фирмой Sun, которая в тот момент искала таланты в России. И вот как раз высококлассные специалисты, которые вышли из стен Института точной механики и вычислительной техники, оказались весьма востребованными и показали свой уровень подготовки тем, что очень быстро спроектировали логическую модель первого 64-х разрядного микропроцессора фирмы Sun, который назывался Sun UltraSPARC.
Это не была «основная» логическая модель, на основе которой был создан процессор UltraSPARC, а отладочная проверочная модель, которая позволила быстро разработать компилятор для этого процессора и проверить функционирование основного проекта.
Это получилось настолько хорошо, что фирма Sun пошла нам навстречу и подарила набор компьютеров Sun SparcStation и средств автоматического проектирования для разработки микросхем. Такого в России ни у кого в то время не было — это был царский подарок. И кроме того, фирма Sun дала право коллективу ЗАО «МЦСТ» разрабатывать собственные микропроцессоры, совместимые с системой команд SPARC, и лицензировала операционную систему «Солярис» в исходных кодах. Это позволило МЦСТ очень быстро сделать несколько моделей микропроцессоров, которые были совместимы с этой системой команд.
Уже в 2001 году МЦСТ R–150 стал первым серийным процессором фирмы МЦСТ.
Микропроцессор МЦСТ R–500, выпущенный в 2004 году, получился достаточно массовым. Это хороший процессор, экономичный, но он был сделан именно как процессор, то есть контроллер памяти не был в него интегрирован, и, соответственно, требовалась специальная программируемая логика для реализации контроллера памяти и периферии.
Следующий процессор в этой линейке был МЦСТ R–500С. Он вышел в 2007 году. Это уже была система на кристалле, где всё было интегрировано вместе — два ядра и периферия. Этот процессор оказался действительно удачным, то есть можно было сделать относительно дешевую систему на его основе. Он не был мощным, но он таким и не разрабатывался.
Следующим процессором в 2010 году стал первый 64-х разрядный SPARC–совместимый процессор фирмы МЦСТ, он был совместим с системой команд SPARC версии 9, этот четырехъядерный процессор с частотой 1 ГГц оказался уже на хорошем, современном уровне производительности. Он и сейчас востребован. Он оказался экономичным, и по уровню производительности сопоставим с первыми процессорами Atom фирмы Intel.
На этом линейка процессоров SPARC у нас не закончилась. В 2018 году мы завершили разработку микропроцессора МЦСТ R–2000 — это уже частота 2 ГГц, 8 ядер, и он выполняет до двух команд в такт с переупорядочиванием, то есть это полноценный out–of–order RISC-процессор. Это уже хороший мощный процессор, который можно использовать в серверах, в сетевых устройствах, в рабочих станциях и во встраиваемой технике. Это самый мощный процессор в нашей линейке SPARC–совместимых процессоров.
Следующий процессор, который мы разрабатываем, будет называться МЦСТ R-2000+, это будет двухъядерный процессор со встроенным графическим ядром, тоже система на кристалле, но уже с современными интерфейсами. Его уже можно будет применять для планшетов, ноутбуков, терминалов, в общем, для малопотребляющих, экономичных устройств.
Линейка процессоров SPARC возникла не случайно, она — наша первая удача, но не эта линейка является носителем основных компетенций и идей команды МЦСТ.
ИА КВ: Расскажите немного об истории процессора «Эльбрус».
Трушкин К. А.: Самая главная и интересная наша линейка — это процессоры «Эльбрус», которые разработаны на основе идей, выношенных еще в советское время. Тогда планировалось разработать супер–ЭВМ под названием «Эльбрус-3». «Эльбрус–3» — была передовая для того времени машина, которая должна была быть построена по принципу широкого командного слова. К сожалению, не удалось этот проект довести до конца: проект был запущен, но компьютер «Эльбрус–3» не был в полном объеме собран и не был налажен.
В 1994 году он был разобран, осталось только несколько плат, которые до сих пор находятся у нас и появятся в музее МЦСТ, который мы планируем скоро открыть. И первый микропроцессор серии «Эльбрус», который был выпущен «в кремнии» спустя 10 лет, во многом унаследовал идеи именно этого суперкомпьютера, но не только его — часть технологий унаследованы еще со времени супер-ЭВМ «Эльбрус–1» и «Эльбрус–2».
Этот микропроцессор, который назвали просто «Эльбрус» (его полное наименование — 1891ВМ4Я), находился в проработке с конца 1990 годов. Как и МЦСТ R500, он был без встроенного контроллера памяти. То есть это было «голое» ядро. Для него использовалась программируемая матрица в качестве «северного моста» (контроллера памяти), а в качестве «южного моста» использовался чипсет Intel 440BX. Первый компьютер на базе этого микропроцессора, двухпроцессорный вычислительный комплекс «Эльбрус-3М1», в 2007 году был принят государственной комиссией.
Так началась линейка процессоров «Эльбрус», которая дальше достаточно быстро набирала темпы.
Следующим процессором был уже процессор «Эльбрус–S», он прошел испытания в 2010 году. Он не пошел в серию, но это был первый процессор серии «Эльбрус», в котором «северный мост» был интегрирован на кристалл, и к нему, к этому процессору, был разработан наш собственный «южный мост», который назывался КПИ (контроллер периферийных интерфейсов). Этот «южный мост» разрабатывался одновременно и для процессора R1000, и для «Эльбрус–S».
Но, как я сказал, этот процессор не стал серийным, и его очень быстро заменил процессор «Эльбрус–2С+», где «С» означает «система на кристалле», а «+» означает, что в нем встроены дополнительные ядра, не эльбрусовские. «Двойка» в названии отвечает за число эльбрусовских ядер, а «+» — за ядра других архитектур. В этой гетерогенной системе было два эльбрусовских ядра на частоте 500 МГц и 4 ядра цифровой обработки сигналов (DSP) фирмы «ЭЛВИС». Что любопытно — на практике оказалось, что подавляющее большинство задач можно и удобно решать на ядрах с архитектурой «Эльбрус» без задействования вспомогательных ядер DSP.
Дальше прогресс шел очень быстро. В 2013 году была сдана работа по созданию четырехъядерного процессора «Эльбрус» — «Эльбрус-4С». И вот этот процессор уже получил широкое распространение. На его основе были созданы интересные системы. В частности, был развернут центр обработки данных, который до сих пор функционирует. И в этом ЦОДе на территории ФГБУ НИИ «Восход» сейчас 24 часа в сутки происходит обработка заявок на оформление загранпаспортов. Система называется «МИР».
Дальше пошли процессоры нового поколения: «Эльбрус-8С», «Эльбрус-1С+». Сейчас у нас готовится к серийному выпуску процессор «Эльбрус-8СВ» — это апгрейд процессора «Эльбрус-8С». Вовсю идет работа над тремя новыми процессорами по технологии 16 нанометров — это «Эльбрус-2С3», «Эльбрус-16С» и «Эльбрус-12С».
Но я бы на этом месте задал вопрос: как удалось довести проект до его сегодняшнего состояния?
Особенностью процессора «Эльбрус» является то, что его идея соответствовала нашим возможностям и нашим ограничениям. Когда я говорю «нашим», я имею в виду возможности и ограничения наших российских команд разработки.
Дело в том, что процессор «Эльбрус» построен по принципу широкого командного слова. То есть это, по сути, простая машина. Простая в том, что не нужно реализовывать сложную логику процессоров, построенных по принципу RISC или CISC, которые ради повышения производительности занимаются поиском параллельно исполняемых операций в потоке инструкций, их переупорядочиванием и т. п.
Это сложная логика, которая присутствует во всех процессорах: Intel, AMD, ARM, MIPS. Сделать ее достаточно мощной, способной загружать параллельно большой парк исполнительных устройств, — очень большая и сложная работа. Она требует больших ресурсов, в том числе большого транзисторного бюджета. В общем-то, если бы была сделана попытка идти по этому пути, то, скорей всего, не было бы никакого результата. Выдающегося результата, точно, не было бы.
Было принято другое решение. Оно заложено было еще в советское время. Главным идеологом его был Борис Арташесович Бабаян. Решение состояло в том, чтобы попытаться сделать в аппаратуре сравнительно простую систему с явным (программным) управлением запуском параллельных операций, которая будет обеспечивать исполнение значительно большего числа операций в такт, по сравнению с современными ему процессорами. А саму работу по планированию параллельных операций возложить на компилятор.
Это удалось, потому что у нас в стране, действительно, очень сильная математическая школа, сильные программисты. В результате удалось создать компилятор, который смог обрабатывать самые разные по своей структуре исходные коды, и эффективно извлекать из них этот параллелизм, который потом в результате планирования операций транслируется в широкие командные слова.
Процессор по возможностям получился достаточно мощным — до 23 скалярных операций в такт на первом процессоре «Эльбрус», и это — 2007 год! В то же время уровень сложности его аппаратуры оказался приемлемым, чтобы спроектировать его смог тот небольшой коллектив разработчиков, который у нас был.
Надо сказать, что по меркам мировой индустрии команда МЦСТ — очень компактная команда. Для сравнения, нас всего сейчас в МЦСТ порядка четырехсот человек, а в компании Intel одних только дизайнеров физического уровня более тысячи человек. При том, что это очень высококвалифицированные специалисты, очень высокооплачиваемые. Конечно, в наших условиях позволить себе такое невозможно. Но в результате принятого нами подхода появился работающий процессор «Эльбрус».
Но надо сказать, что компилятор оказался очень сложным. Он содержит уже более миллиона строк кода. Он постоянно развивается. Видно, что только за счет компилятора в год в среднем мы повышаем производительность системы на пять процентов. Это совсем даже немало.
В итоге сейчас имеем целое семейство процессоров «Эльбрус», свой собственный компилятор, свою собственную операционную систему — «Эльбрус Линукс», или ОС «Эльбрус». Мы вынуждены были разработать свою ОС, потому что никто, кроме нас, не смог бы перенести ядро Linux на архитектуру «Эльбрус», запустить, отладить и поддерживать в течение нескольких поколений.
В составе операционной системы у нас есть довольно много ПО. Это обычные офисные продукты. Это, например LibreOffice, это браузер Firefox, это масса разных пакетов прикладного программного обеспечения, в том числе СУБД Postgres, в том числе Java-машина. Все это было перенесено на платформу «Эльбрус» здесь, в России. По возможности мы использовали открытые исходные коды, но очень много где приходилось и приходится дорабатывать какие-то фрагменты, которые являются архитектурно зависимыми и где нет в исходных кодах аналога, даже близкого к тому, что требуется для процессора «Эльбрус» — например, в Java–машине.
Как я уже сказал, процессор «Эльбрус» имеет широкое командное слово. Такая архитектура больше характерна для цифровых сигнальных процессоров. Тем не менее, он является универсальным процессором. Любые алгоритмы, любые задачи идут на нем достаточно эффективно.
За счет чего это происходит? Прежде всего за счет того, что архитектура «Эльбрус» достаточно гибкая. Это не просто широкое командное слово. Там много инструментов поддержки, которые, фактически, выполняют ту же роль, которую выполняют механизмы переупорядочивания операций и поиска зависимостей в системах типа RISC или CISC.
Кроме того, наш компилятор эффективно «вытягивает» параллелизм, планирует микрооперации и достаточно плотно заполняет широкую команду.
В результате на тестах типа SPEC CPU, например, у нас получается очень хорошее заполнение командного слова, в среднем порядка двух-трех операций в такт. Это больше чем у RISC-процессоров, если посмотреть на то, как заполняется конвейер современных RISC-процессоров на пакете программ SPEC CPU. Там будет порядка одной инструкции в такт.
Предельная возможность команды современных «Эльбрусов» — порядка 25 операций в такт. В реальной жизни, конечно, значительно меньше заполняется. В хороших плотных участках это пять-шесть операций в такт. Бывает, что десять. Больше очень редко можно увидеть. Но заполнение команды растет, если «помочь» компилятору подбором опций компиляции или небольшими изменениями в исходных кодах. Знание работы компилятора позволяет нам сильно оптимизировать исходные коды.
Опыт показывает, что за счет оптимизации программного обеспечения, его работу на «Эльбрусе» можно ускорять в несколько раз. В том смысле, что один и тот же код, взятый из open source, скомпилированный даже на высоком уровне оптимизации, но без какого-то вмешательства человека, без анализа, можно ускорить в два-три раза. Бывает, что и больше. Это особенности «Эльбруса». И связано это с тем, что ресурсы широкой команды действительно велики. Можно с помощью каких-то доработок исходных кодов добиваться того, что широкое слово начинает заполняться плотнее. При этом естественный код работает быстрее.
Читайте также: Безопасность критической инфраструктуры. В чем реальные преимущества процессора «Эльбрус». Часть 2