СХД AERODISK на отечественных процессорах Эльбрус 8С
Привет, читатели Хабра. Хотим поделиться крайне приятной новостью. Мы, наконец-то, дождались реального серийного выпуска нового поколения российских процессоров Эльбрус 8С. Официально серийный выпуск должен был стартовать аж в 2016 году, но, по факту, именно массовое производство началось только в 2019 году и на текущий момент выпущено уже около 4000 процессоров.
Практически сразу после старта серийного производства данные процессоры появились и у нас в Аэродиске, за что хотим отдельно поблагодарить компанию НОРСИ-ТРАНС, которая любезно предоставила нам свою аппаратную платформу Яхонт УВМ, поддерживающую процессоры Эльбрус 8С, для выполнения портирования программной части СХД. Это современная, отвечающая всем требованиям МЦСТ универсальная платформа. На данный момент платформа используется спец.потребителями и операторами связи для обеспечения выполнения установленных действий при проведении оперативно-розыскных мероприятий.
На текущий момент портирование успешно завершено, и уже сейчас СХД AERODISK доступна в варианте с отечественными процессорами Эльбрус.
В этой статье мы расскажем о самих процессорах, об их истории, архитектуре и, конечно же, о нашей реализации СХД на Эльбрусе.
История
История процессоров Эльбрус берет свое начало во времена Советского союза. В 1973 году в Институте точной механики и вычислительной техники им. С.А. Лебедева (имени того самого Сергея Лебедева, который ранее руководил разработкой первого советского компьютера МЭСМ, а позже БЭСМ) стартовала разработка многопроцессорных вычислительных комплексов под названием «Эльбрус». Руководил разработкой Всеволод Сергеевич Бурцев, также активное участие в разработке принимал Борис Арташесович Бабаян, который являлся одним из заместителей главного конструктора.
Всеволод Сергеевич Бурцев
Борис Арташесович Бабаян
Главным заказчиком проекта были, само собой, вооруженные силы СССР, и данная серия компьютеров в итоге успешно применялась при создании командных вычислительных центров и стрельбовых комплексов систем противоракетной обороны, а также других систем специального назначения.
Первый компьютер «Эльбрус» был завершен в 1978 году. Он обладал модульной архитектурой и мог включать в себя от 1 до 10 процессоров на базе схем средней интеграции. Быстродействие данной машины достигало 15 миллионов операций в секунду. Объем оперативной памяти, которая была общей для всех 10 процессоров, составлял до 2 в 20 степени машинных слов или 64 Мб.
Позже выяснилось, что многие используемые при разработке «Эльбруса» технологии в это же самое время исследовались в мире, и ими занималась компания International Business Machine (IBM), но работы по данным проектам, в отличие от работ по «Эльбрусу», так и не были завершены и не привели в итоге к созданию законченного продукта.
По словам Всеволода Бурцева, советские инженеры старались применять самый передовой опыт как отечественных, так и зарубежных разработчиков. На архитектуру компьютеров «Эльбрус» повлияли также компьютеры компании Burroughs, разработки Hewlett-Packard, а также опыт разработчиков БЭСМ-6.
Но при этом множество разработок были оригинальными. Самым интересным в «Эльбрусе-1» была именно его архитектура.
Созданный суперкомпьютер стал первой в СССР ЭВМ, которая применяла суперскалярную архитектуру. Массовое применение суперскалярных процессоров за рубежом началось только в 90-х годах прошлого века с появлением на рынке доступных процессоров Intel Pentium.
Кроме этого, для организации передачи потоков данных между периферийными устройствами и оперативной памятью в компьютере могли применяться специальные процессоры ввода-вывода. Таких процессоров в составе системы могло быть до четырех штук, они работали параллельно с центральным процессором и обладали своей собственной выделенной памятью.
Эльбрус-2
В 1985 году «Эльбрус» получил свое логическое продолжение, был создан и отправлен в серийное производство компьютер «Эльбрус-2». По архитектуре он мало чем отличался от своего предшественника, но применял новую элементную базу, что позволило почти в 10 раз увеличить общую производительность – с 15 млн. операций в секунду до 125 млн. Объем оперативной памяти компьютера увеличился до 16 млн. 72-разрядных слов или 144 МБ. Максимальная пропускная способность каналов ввода-вывода «Эльбруса-2» составляла 120 МБ/с.
«Эльбрус-2» активно применялся в ядерных исследовательских центрах в Челябинске-70 и в Арзамасе-16 в ЦУПе, в системе ПРО А-135, а также на других военных объектах.
Комплекс СПРУТ С1200 на базе процессоров Эльбрус
Создание «Эльбруса» было по достоинству оценено руководителями Советского Союза. Многие инженеры были награждены орденами и медалями. Генеральный конструктор Всеволод Бурцев и ряд других специалистов получили государственные премии. А Борис Бабаян был награжден Орденом Октябрьской революции.
Награды эти более чем заслуженные, Борис Бабаян позднее говорил:
"В 1978-ом году мы сделали первую суперскалярную машину, Эльбрус-1. Сейчас на Западе делают суперскаляры только такой архитектуры. Первый суперскаляр на Западе появился в 92-ом году, наш в 78-ом. Причем тот вариант суперскаляра, который сделали мы, аналогичен Pentium Pro, который Intel сделал в 95-ом году".
Эти слова об историческом первенстве подтверждают и в США, Кит Дифендорфф, разработчик Motorola 88110, одного из первых западных суперскалярных процессоров, писал:
"В 1978 году, почти на 15 лет раньше, чем появились первые западные суперскалярные процессоры, в Эльбрус-1 использовался процессор, с выдачей двух команд за один такт, изменением порядка исполнения команд, переименованием регистров и исполнением по предположению".
Эльбрус-3
Шёл 1986 год, и почти сразу после завершения работ над вторым «Эльбрусом» в ИТМиВТ начали разработку новой системы «Эльбрус-3», используя принципиально новую процессорную архитектуру. Этот подход Борис Бабаян назвал «постсуперскалярным». Именно эту архитектуру, названную потом VLIW/EPIC, в будущем (в середине 90-х годов) стали использовать процессоры Intel Itanium (а в СССР эти разработки стартовали в 1986, а завершились в 1991).
В этом вычислительном комплексе впервые были воплощены в жизнь идеи явного управления параллелизмом операций с помощью компилятора.
В 1991 году был выпущен первый и, к сожалению, единственный компьютер «Эльбрус-3», который не смогли наладить до конца, а после развала Советского Союза он стал никому не нужен, и разработки и планы так и остались на бумаге.
Предпосылки к новой архитектуре
Коллектив, работавший в ИТМиВТ над созданием советских суперкомпьютеров, не распался, а продолжил работу как отдельная компания под именем МЦСТ (Московский Центр СПАРК-Технологий). И в начале 90-х годов стартовало активное сотрудничество МЦСТ с Sun Microsystems, где коллектив МЦСТ принимал участие в разработке микропроцессора UltraSPARC.
Именно в этот период возник проект архитектуры E2K, который первоначально финансировался компанией Sun. Позднее проект стал полностью независим и вся интеллектуальная собственность на него осталась у коллектива МЦСТ.
"Если бы мы и дальше работали с Sun в этой области, то все принадлежало бы Sun. Хотя 90% работы было выполнено еще до появления Sun". (Борис Бабаян)
Архитектура E2K
Когда мы обсуждаем архитектуру процессоров «Эльбрус», очень часто от наших коллег по ИТ-индустрии мы слышим следующие заявления:
«Эльбрус – это же RISC-архитектура»
«Эльбрус – это же EPIC-архитектура»
«Эльбрус – это же SPARC-архитектура»
На самом деле ни одно из этих заявлений не является полностью верным, а если и является, то только лишь частично.
Архитектура E2K — это отдельная оригинальная процессорная архитектура, основные качества E2K — это энергоэффективность и прекрасная масштабируемость, достигаемые при помощи задания явного параллелизма операций. Архитектура E2K разработана коллективом МЦСТ и в её основе лежат постсуперскалярная архитектура (а-ля EPIC) с некоторым влиянием SPARC-архитектуры (c RISC-прошлым). При этом в создании трех из четырех базовых архитектур (Суперскаляры, постсуперскаляры и SPARC) МЦСТ принимал непосредственное участие. Мир, действительно, тесен.
Чтобы в дальнейшем избегать путаницы, мы нарисовали простую схему, которая хоть и упрощенно, но очень понятно показывает корни архитектуры E2K.
Теперь ещё немного о названии архитектуры, в отношении которого тоже есть непонимание.
В разных источниках можно встретить следующие названия данной архитектуры: «E2K», «Эльбрус», «Эльбрус 2000», ELBRUS ("ExpLicit Basic Resources Utilization Scheduling", т.е. явное планирование использования основных ресурсов). Все эти названия говорят об одном и том же – об архитектуре, но в официальной технической документации, а также на технических форумах для обозначения архитектуры используется название E2K, поэтому в дальнейшем если мы говорим о процессорной архитектуре, мы используем термин «E2K», а если про конкретный процессор, то используем название «Эльбрус».
Технические особенности архитектуры E2K
В традиционных архитектурах типа RISC или CISC (х86, PowerPC, SPARC, MIPS, ARM) на вход процессора поступает поток инструкций, которые рассчитаны на последовательное исполнение. Процессор может обнаруживать независимые операции и запускать их параллельно (суперскалярность) и даже менять их порядок (внеочередное исполнение). Однако динамический анализ зависимостей и поддержка внеочередного исполнения имеет свои ограничения в количестве запуска и анализа команд за один такт. Кроме того, соответствующие блоки внутри процессора потребляют заметное количество энергии, и сложнейшая их реализация порой приводит к проблемам стабильности или безопасности.
В архитектуре E2K основную работу по анализу зависимостей и оптимизации порядка операций берет на себя компилятор. Процессору на вход поступают т.н. широкие команды, в каждой из которых закодированы инструкции для всех исполнительных устройств процессора, которые должны быть запущены на данном такте. От процессора не требуется анализировать зависимости между операндами или переставлять операции между широкими командами: все это делает компилятор, исходя из анализа исходного кода и планирования ресурсов процессора. В результате аппаратная составляющая процессора может быть проще и экономичнее.
Компилятор способен анализировать исходный код гораздо тщательнее, чем аппаратура RISC/CISC процессора, и находить больше независимых операций. Поэтому в архитектуре E2K больше параллельно работающих исполнительных устройств, чем в традиционных архитектурах.
Текущие возможности архитектуры E2K:
- 6 каналов арифметико-логических устройств (АЛУ), работающих параллельно.
- Регистровый файл из 256 84-разрядных регистров.
- Аппаратная поддержка циклов, в том числе с конвейеризацией. Повышает эффективность использования ресурсов процессора.
- Программируемое асинхронное устройство предварительной подкачки данных с отдельными каналами считывания. Позволяет скрыть задержки от доступа к памяти и полнее использовать АЛУ.
- Поддержка спекулятивных вычислений и однобитовых предикатов. Позволяет уменьшить число переходов и параллельно исполнять несколько ветвей программы.
- Широкая команда, способная при максимальном заполнении задать в одном такте до 23 операций (более 33 операций при упаковке операндов в векторные команды).
Эмуляция х86
Еще на этапе проектирования архитектуры у разработчиков было понимание важности поддержки программного обеспечения, написанного для архитектуры Intel х86. Для этого была реализована система динамической (т.е. в процессе исполнения программы, или «на лету») трансляции двоичных кодов х86 в коды процессора архитектуры E2K. Эта система может работать как в режиме приложения (на манер WINE), так и в режиме, аналогичном гипервизору (тогда возможно запустить целиком гостевую ОС для архитектуры х86).
Благодаря нескольким уровням оптимизации удается достичь высокой скорости работы оттранслированного кода. Качество эмуляции архитектуры х86 подтверждается успешным запуском на вычислительных комплексах «Эльбрус» более 20 операционных систем (в том числе несколько версий Windows) и сотен приложений.
Защищенный режим исполнения программ
Одна из самых интересных идей, унаследованных от архитектур Эльбрус-1 и Эльбрус-2 – это так называемое защищенное исполнение программ. Его суть заключается в том, чтобы гарантировать работу программы только с инициализированными данными, проверять все обращения в память на принадлежность к допустимому диапазону адресов, обеспечивать межмодульную защиту (например, защищать вызывающую программу от ошибки в библиотеке). Все эти проверки осуществляются аппаратно. Для защищенного режима имеется полноценный компилятор и библиотека runtime-поддержки. При этом надо понимать, что налагаемые ограничения приводят к невозможности организации выполнения, например, написанного на C++ кода.
Даже в обычном, «незащищенном» режиме работы процессоров «Эльбрус» имеются особенности, повышающие надежность системы. Так, стек связующей информации (цепочка адресов возврата при процедурных вызовах) отделен от стека пользовательских данных и недоступен для таких применяемых в вирусах атак, как подмена адреса возврата.
Эти разработки позволяют не только догнать и в будущем превзойти конкурирующие архитектуры в плане производительности и масштабируемости, но и обеспечить защиту от ошибок, которыми страдают x86/amd64. Закладок типа Meltdown (CVE-2017-5754), Spectre (CVE-2017-5753, CVE-2017-5715), RIDL (CVE-2018-12126, CVE-2018-12130), Fallout (CVE-2018-12127), ZombieLoad (CVE-2019-11091) и им подобных.
Современная защита от найденных уязвимостей в архитектуре х86/amd64 базируется на заплатках на уровне операционных систем. Именно поэтому падение производительности на текущих и предыдущих поколениях процессоров данных архитектур настолько заметно и составляет от 30% до 80%. Мы как активные пользователи x86-процессоров об этом знаем, страдаем и продолжаем «есть кактус», а вот наличие решения этих проблем на корню для нас (и в итоге для наших заказчиков) несомненное благо, тем более если решение российское.
Технические характеристики
Ниже приведены официальные технические характеристики процессоров «Эльбрус» прошлого (4С), актуального (8С), нового (8СВ) и будущего (16С) поколений в сравнении с аналогичными процессорами Intel x86.
Даже беглый взгляд на данную таблицу показывает (и это очень радует), что технологическое отставание отечественных процессоров, которое 10 лет назад казалось непреодолимым, уже сейчас кажется совсем небольшим, а 2021 году с запуском «Эльбрус-16С» (который, ко всему прочему, будет поддерживать виртуализацию) сократится до минимальных дистанций.
СХД AERODISK на процессорах Эльбрус 8С
От теории переходим к практике. В рамках стратегического альянса компаний МЦСТ, Аэродиск, Базальт СПО (ранее Альт Линукс) и НОРСИ-ТРАНС была в разработана и подготовлена к эксплуатации система хранения данных, которая на текущий момент по параметрам безопасности, функциональности, стоимости и производительности является если не лучшим, то, на наш взгляд, бесспорно достойным решением, которое может обеспечить должный уровень технологической независимости нашей с вами Родины.
Теперь детали…
Аппаратная часть
Аппаратная часть СХД реализована на базе универсальной платформы Яхонт УВМ компании НОРСИ-ТРАНС. Платформа Яхонт УВМ получила статус телекоммуникационного оборудования российского происхождения и включена в единый реестр российской радиоэлектронной продукции. Система представляет из себя два отдельных контроллера СХД (по 2U каждый), которые соединены между собой интерконнектом 1G или 10G Ethernet, а также с общими дисковыми полками, используя SAS-подключение.
Конечно, это не так красиво, как формат «Cluster in a box» (когда контроллеры и диски с общим бэкплейном установлены в одном шасси 2U), который мы используем обычно, но уже в ближайшем будущем он также будет доступен. Тут главное, чтобы работало хорошо, а о «бантиках» подумаем позже.
Под капотом каждый контроллер имеет однопроцессорную материнскую плату c четырьмя гнёздами под оперативную память (DDR3 для процессора 8С). Также на борту каждого контроллера имеется по 4 порта 1G Ethernet (два из которых используются ПО AERODISK ENGINE как служебные) и по три PCIe-разъема для Back-end (SAS) и Front-end (Ethernet или FibreChannel) адаптеров.
В качестве загрузочных дисков используются российские SATA SSD диски компании GS Nanotech, которые мы неоднократно тестировали и использовали в проектах.
При первом знакомстве с платформой мы внимательно её обследовали. К качеству сборки и пайки вопросов у нас не возникло, все сделано аккуратно и надежно.
Операционная система
В качестве ОС используется версия ОС Альт 8СП для сертификации. В скором времени мы планируем создание подключаемого и постоянно обновляемого репозитория для ОС Альт c ПО СХД Аэродиск.
Данная версия дистрибутива построена на текущей стабильной версии ядра Linux 4.9 для Е2K (ветка с долговременной поддержкой портирована специалистами МЦСТ), дополненной патчами по функциональности и безопасности. Все пакеты в ОС Альт собраны непосредственно на «Эльбрусах» с использованием оригинальной транзакционной сборочной системы проекта ALT Linux Team, что позволило уменьшить трудозатраты на сам перенос и уделить больше внимания качеству продукта.
Любой выпуск ОС Альт для Эльбрус можно существенно расширить в плане функциональности, воспользовавшись доступным для него репозиторием (от примерно 6 тысяч исходных пакетов для восьмой версии до примерно 12 – для девятой).
Выбор был сделан также и потому, что компания Базальт СПО, разработчик ОС Альт — активно работает с другими разработчиками ПО и устройств на различных платформах, обеспечивая бесшовное взаимодействие в рамках аппаратно-программных комплексов.
ПО Системы хранения данных
При портировании мы сразу отказались от идеи использовать поддерживаемую в E2K эмуляцию x86, а стали работать с процессорами напрямую (благо Альт уже имеет необходимые для этого средства).
Среди прочего нативный режим выполнения дает лучшую безопасность (те самые три аппаратных стека вместо одного) и повышенную производительность (нет нужды выделять одно-два ядра из восьми для работы бинарного транслятора, а компилятор делает свою работу лучше, чем JIT).
По факту в реализации AERODISK ENGINE на E2K поддерживается большая часть существующего функционала СХД, который есть в x86. В качестве ПО системы хранения используется актуальная на текущий момент версия AERODISK ENGINE (A-CORE версия 2.30)
Без особых проблем на E2K были заведены и протестированы для использования в продуктиве следующие функции:
- Отказоустойчивость до двух контроллеров и многопутевой ввод-вывод (mpio)
- Блочный и файловый доступ с тонкими томами (пулы RDG, DDP; протоколы FC, iSCSI, NFS, SMB включая интеграцию с Active Directory)
- Различные уровни RAID до тройной чётности (включая возможность использования конструктора RAID)
- Гибридное хранение (совмещение SSD и HDD в рамках одного пула, т.е. кэш и тиринг)
- Варианты экономии пространства с помощью дедупликации и компрессии
- ROW-снэпшоты, клоны и разные варианты репликации
- И другие маленькие, но полезные функции, такие как QoS, global hotspare, VLAN, BOND и т.п.
По факту на E2K нам удалось завести весь наш функционал, кроме многоконтроллерности (больше двух) и планировщик многопоточного ввода-вывода, который позволяет увеличивать производительность all-flash пулов на 20-30%.
Но эти полезные функции мы, естественно, тоже добавим, вопрос времени.
Немного о производительности
После успешного прохождения тестов базового функционала СХД мы, разумеется, стали выполнять нагрузочные тесты.
К примеру, на двухконтроллерной СХД (2xCPU E8C 1.3 Ghz, 32 GB RAM + 4 SAS SSD 800GB 3DWD), в которой был отключен RAM-кэш, мы создали два пула DDP с основным уровнем RAID-10 и два LUN по 500G и подключили эти LUN-ы по iSCSI (10G Ethernet) к Linux-хосту. И выполнили один из базовых часовых тестов на небольшие блоки последовательной нагрузки с помощью программы FIO.
Первые результаты оказались вполне позитивными.
Нагрузка на процессоры в среднем была на уровне 60%, т.е. это базовый уровень, на котором СХД может спокойно работать.
Да, это далеко не highload и под высокопроизводительные СУБД какого-нибудь биллинга этого явно не хватит, но, как показывает наша практика, этих характеристик достаточно для 80% общих задач, под которые используются СХД.
Чуть позже мы планируем вернуться с детальным отчетом о нагрузочных тестах Эльбруса как платформы для СХД.
Светлое будущее
Как мы писали выше, массовое производство Эльбруса 8С по факту стартовало буквально недавно – в начале 2019 года и к декабрю уже было выпущено около 4000 процессоров. Для сравнения, процессоров предыдущего поколения Эльбрус 4С за весь период их производства было выпущено всего 5000, так что прогресс налицо.
Понятное дело, что это капля в море, даже для российского рынка, но дорогу осилит идущий.
На 2020 год запланирован выпуск нескольких десятков тысяч процессоров Эльбрус 8С, а это уже серьезная цифра. Кроме того, в течение 2020 года процессор Эльбрус-8СВ должен быть доведён командой МЦСТ до серийного производства.
Такие производственные планы — это заявка на очень значимую долю всего отечественного рынка серверных процессоров.
В итоге уже здесь и сейчас мы имеем хороший и современный российский процессор с понятной и на наш взгляд верной стратегией развития, на базе которого есть максимально защищенная и сертифицированная система хранения данных российского производства (а в будущем и система виртуализации на Эльбрус-16С). Система российская настолько, насколько сейчас это физически возможно в современных условиях.
Мы часто наблюдаем в новостях очередные эпические провалы компаний, которые гордо называют себя российскими производителями, а по факту занимаются переклеиванием этикеток, не добавляя к продукции зарубежного производителя никакой собственной ценности, кроме своей наценки. Такие компании, к сожалению, бросают тень на всех реальных российских разработчиков и производителей.
Этой статьей мы хотим наглядно показать, что в нашей стране были, есть и будут компании, которые реально и качественно делают современные сложные ИТ-системы и активно развиваются, а импортозамещение в ИТ – это не профанация, а реальность, в которой мы все живём. Эту реальность можно не любить, можно критиковать, а можно работать и делать её лучше.
Развал СССР в свое время помешал коллективу создателей Эльбруса стать заметным игроком в мире процессоров и вынудил коллектив искать финансирование своих разработок за рубежом. Оно было найдено, работа была выполнена, а интеллектуальная собственность сохранена, за что хочется сказать этим людям огромное спасибо!
На этом пока все, пишите, пожалуйста ваши комментарии, вопросы и, конечно, критику. Мы всегда рады.
Также от лица всей компании Аэродиск хочу поздравить всё российское ИТ-сообщество с наступающим Новым годом и Рождеством, пожелать 100% аптайма – и чтобы бэкапы в новом году никому не пригодились))).
Используемые материалы
Статья с общим описанием технологий, архитектур и персоналий:
https://www.ixbt.com/cpu/e2k-spec.html
Краткая история компьютеров под именем «Эльбрус»:
https://topwar.ru/34409-istoriya-kompyuterov-elbrus.html
Общая статья об архитектуре e2k:
https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81_2000
Статья именно о 4-м поколении (Эльбрус-8С) и 5-м поколении (Эльбрус-8СВ, 2020 год):
https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81-8%D0%A1
Спецификации следующего 6-го поколения процессоров (Эльбрус-16СВ, 2021 год):
https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81-16%D0%A1
Официальное описание архитектуры Эльбрус:
http://www.elbrus.ru/elbrus_arch
Планы разработчиков аппаратно-программной платформы «Эльбрус» по созданию суперкомпьютера экзафлопсной производительности:
http://www.mcst.ru/files/5a9eb2/a10cd8/501810/000003/kim_a._k._perekatov_v._i._feldman_v._m._na_puti_k_rossiyskoy_ekzasisteme_plany_razrabotchikov.pdf
Российские технологии «Эльбрус» для персональных компьютеров, серверов и суперкомпьютеров:
http://www.mcst.ru/files/5472ef/770cd8/50ea05/000001/rossiyskietehnologiielbrus-it-edu9-201410l.pdf
Старая статья Бориса Бабаяна, но до сих пор актуальная:
http://www.mcst.ru/e2k_arch.shtml
Старая статья Михаила Кузьминского:
https://www.osp.ru/os/1999/05-06/179819
Презентация МЦСТ, общая информация:
https://yadi.sk/i/HDj7d31jTDlDgA
Информация об ОС Альт для платформы Эльбрус:
https://altlinux.org/эльбрус