Небольшой обзор Эльбрус ОС. Операционная система Эльбрус и микропроцессоры серии Эльбрус в бортовых системах реального времени Евгений Кравцунов, Константин Трушкин

BOOT started. BOOT E2S VERSION: release-2.13.3.0-E2S::::::: (/tags/release-2.13.3.0-E2S at revision 3816) BUILT BY neo TARGET: mono ON Nov 2 2015 AT 18:05:37 COMPILER: lcc:1.17.12:Nov-27-2012:e2k-linux.cross:i386-linux Thread model: posix gcc version 3.4.6 compatible. FLAGS: -DDEBUG_TEST_BOOTBLOCK ........ -DRELEASE ........
Нажав клавишу «Пробел» при появлении соответствующего приглашения (спустя 45 секунд после подачи питания), можно прервать автоматическую загрузку ядра системы и попасть в меню основных команд, где показываются или меняются базовые параметры загрузчика. Нажав клавишу «Тильда», можно перейти из этого меню в интерфейс командной строки, где доступна тонкая настройка аппаратуры - от установки даты и времени суток до задания режимов работы периферийных контроллеров и системной шины. Хотя в меню есть пункт принудительного сохранения параметров, изменения из командной строки сохраняются автоматически; в крайнем случае, настройки можно сбросить с помощью джампера на материнской плате.

Журнал работы в системном меню (полностью на Pastebin)

BOOT SETUP Press command letter, or press "h" to get help:h HELP "p" or "s" - load and Start file "c" - Change boot parameters "u" - show cUrrent parameters "d" - show Disks and partitions "m" - save params to NVRAM "b" - start Boot.conf menu "`", "~" - enter enhanced cmd mode:` ENHANCED CMD MODE Enter command, "help" to get help, or Esc to exit # set vga primary 1 core: 0x0, link: 0x0, bus: 0x3, slot: 0x0, func: 0x0, ven: 0x1002, dev: 0x6779, rev: 0x0, classcode: 0x30000 is selected! # boot boot# auto CPU#00: Label "auto" found, loading parameters Trying to load and start image with following parameters: drive_number: "4" partition_number: "0" command_string: "console=tty0 root=/dev/sda3 ........" filename: "/boot/image-033.6.57" initrdfilename: "" CPU#00: Reading: File - "/boot/image-033.6.57", Drive - 4, Partition - 0 ........
Среди прочего, обращает на себя внимание возможность активации и деактивации аппаратно-программного модуля доверенной загрузки «Эшелон‑Э», хотя никакой платы, напоминающей традиционные АПМДЗ, в компьютере не установлено. Внятной информации о таком устройстве найти не удалось, за исключением одной заметки, где утверждалось, что это специализированная версия продукта «МДЗ-Эшелон», который является полностью программной разработкой и использует штатные аппаратные средства компьютера.

Прямо из командной строки, не загружая операционную систему, можно запускать тесты корректности функционирования аппаратуры (Система тестовых и диагностических программ) - то ли те, что хранятся на диске и доступны для запуска из операционной системы, то ли какие‑то другие: разобраться не удалось, так как требуется указать точное имя исполняемого файла, а документация отсутствует.

По той же причине, - из‑за отсутствия надлежащей документации, - не удалось вникнуть в тонкости управления загрузчиком операционной системы, точнее, как загрузить что-нибудь помимо штатной системы. Ведь здесь используется тот же загрузчик (SILO), что и на компьютерах архитектуры SPARC, - а там не предполагается работа с чужеродным набором инструкций. Сами‑то параметры загрузки интуитивно понятны: надо указать номер раздела и имя файла с ядром системы, а также аргументы запуска ядра, имя файла с архивом вспомогательных программ (initrd , если нужен), тайм-аут ожидания отмены пользователем. Эти параметры считываются из файла /boot/boot.conf в первом разделе диска, заданного из командной строки; в файле может быть определено несколько наборов параметров, - по умолчанию используется тот, что указан в директиве default , либо которому присвоено название «auto ». Но что нужно делать, чтобы запускать операционные системы для архитектуры x86 или x86‑64, прозрачная поддержка которых заявлена как одна из ключевых особенностей «Эльбруса»? Отсутствие файла boot.conf на установочном диске Windows или популярного дистрибутива Linux можно компенсировать ручным вводом через меню. А как передать управление новому загрузчику, не являющемуся ядром Linux? Как запустить хотя бы ядро Linux, если оно для x86? Разобраться в этом без документации не получилось: дело неизменно заканчивалось зависанием в момент перехода управления от загрузчика к ядру.

Штатная конфигурация загрузчика (boot.conf)

Default=auto timeout=3 label=auto partition=0 image=/boot/image-033.6.57 cmdline=console=tty0 console=ttyS0,115200 consoleblank=0 hardreset REBOOT root=/dev/sda3 video=DVI-D-1:1024x768-24@60 video=VGA-1:1024x768-24@60 fbcon=map:10
Что касается штатных ядер операционной системы «Эльбрус», то файл конфигурации загрузчика содержит только один набор параметров, и указывают они на ядро по умолчанию. Помимо него, имеются два ядра - с суффиксами «nn » и «rt »: судя по конфигурации сборки этих ядер, первое означает «no NUMA» (упрощённая версия для однопроцессорных систем; почему бы на персональном компьютере не использовать именно её?), а второе - «real time» (расширения ядра Linux для диспетчеризации задач с ограничением по времени выполнения). Не имея даже поверхностных знаний в этих областях, автор затрудняется дать какие-либо комментарии насчёт преимуществ или недостатков того или иного альтернативного ядра.

Касательно поддержки PPS и PTP

Единственный знакомый параметр конфигурации - это включение поддержки PPS API (pulse per second) в ядре «rt », которая позволяет корректировать ход системных часов компьютера согласно внешнему синхроимпульсу, например, от приёмника GPS/ГЛОНАСС или от цезиевых часов, если у вас вдруг такие случайно завалялись. Вот только непонятно, как именно настроить эту синхронизацию: в отличие от FreeBSD, например, где всё начинает работать как бы само собой после пересборки ядра с нужным параметром и перенастройки NTPd на использование системной дисциплины, в Linux обычно требуются пляски с бубном вокруг утилиты ldattach , создающей виртуальное PPS-устройство на основе порта COM или LPT, - для этого нужны соответствующие драйверы в ядре или в отдельных модулях, а их здесь не видно.

Встроенная сетевая карта тоже не проявила признаков аппаратной поддержки синхронизации времени: вывод утилиты ethtool касательно протокола PTP свидетельствовал об отсутствии подобных функций. В любом случае, - что при использовании ядра по умолчанию, что real time, единственным источником времени системы является устройство «lt » («Elbrus timer»?) с дискретностью 1 мкс. Не то чтобы это слишком грубо, но современным компьютерам вполне по силам обеспечить квантование на уровне 25–50 нс, причём независимо от текущей частоты процессора.


По умолчанию, операционная система запускается вместе с графическим окружением: 12 секунд уходит на загрузку ядра в память и ещё около 23 до появления приглашения ко входу в систему, - всего 80 секунд с момента включения. Как уже говорилось, подобрать аргументы ядра для запуска в однопользовательском режиме у нас не получилось: при указании «S » или «1 » система всё равно доходила до 5‑го уровня, а попытки понизить уровень после этого с помощью команды init приводили к краху системы.

Поскольку в компьютере имеется два видеоадаптера, виртуальные терминалы распределяются между ними по очереди: первый терминал открывается на дискретной карте, второй - на встроенном контроллере, третий - опять на дискретной, и так далее. Графический рабочий стол, находясь на седьмом терминале, таким образом попадает на дискретную видеокарту, быстродействие которой не вызывает вопросов. Очень хотелось проверить, насколько отзывчивым будет рабочий стол, если вывести его через встроенный контроллер, потому что у отечественных платформ с этим бывает туго: например, простая перерисовка экрана силами Модуля графических адаптеров (собственной разработки МЦСТ) может занимать несколько секунд, - не просто медленно, а почти как построчное появление заставки в играх для ZX Spectrum, загружаемых с магнитофонной кассеты. Увы, ни правка Xorg.conf по образу и подобию, ни подбор аргументов ядра, ни смена первичного видеоадаптера в настройках аппаратуры нужного эффекта не дали.

Любопытный нюанс

Тогда как первичный экран на дискретной видеокарте инициализируется в текстовом режиме, тот же экран на встроенном контроллере инициализируется в графическом режиме и показывает 4 эмблемы процессора (как это делают некоторые ядра Linux сразу после своего запуска), но всё равно использует только верхние 25 строк текста.


По умолчанию, ядро запускается с аргументом «hardreset », который инструктирует систему выполнить полный аппаратный сброс при перезапуске компьютера. В мире x86 к этому варианту все привыкли, но альтернативные платформы, где «холодная» инициализация после включения питания занимает несколько минут, могут предлагать быстрый перезапуск операционной системы, - и это действительно работает, в отличие от «лотереи» с kexec у Intel / AMD. Нам не удалось подобрать такой аргумент, который поддерживался бы ядром системы «Эльбрус» и при этом давал нужный результат.

Программное обеспечение

Операционная система «Эльбрус» (ОС Эль, OSL) является штатной для всех компьютеров МЦСТ, хотя на платформе SPARC также может функционировать порт системы МСВС 3.0 . Официальная система идентификации программных продуктов восходит к их децимальным номерам: например, «ОС 316‑10» расшифровывается как «операционная система ТВГИ.00316‑10 с ядром ТВГИ.00315‑03, входящая в состав общего программного обеспечения ТВГИ.00311‑05». С одной стороны, это похоже больше на буквенно-цифровые названия , чем на порядковые номера версий . С другой стороны, тот или иной программный продукт обычно тесно связан с конкретным аппаратным продуктом, и не претерпевает существенных изменений за время своей жизни. Тем не менее, в файле /etc/mcst_version можно увидеть бирку «release 2.2.1», а в псевдофайле /proc/bootdata - «release 2.13.3.0». Однако в интерфейсе пользователя не встречается ни одно из этих обозначений.

$ cat /etc/mcst_version release 2.2.1 $ cat /proc/bootdata boot_ver=" release-2.13.3.0-E2S::::::: (/tags/release-2.13.3.0-E2S at revision 3816) built on Nov 2 2015 at 18:05:58" mb_type="MONOCUB" chipset_type="IOHUB" cpu_type="E2S" cache_lines_damaged=0 $ cat /proc/version Linux version 2.6.33-elbrus.033.6.57 (gavrilova_tg@e2k13) (gcc version 4.4.0 compatible) #1 SMP Sun Oct 11 00:10:58 MSK 2015 $ uname -a Linux MONOCUB-10-XX 2.6.33-elbrus.033.6.57 #1 SMP Sun Oct 11 00:10:58 MSK 2015 e2k E2S MONOCUB GNU/Linux
Ядром системы служит Linux 2.6.33, портированное на архитектуру «Эльбрус-2000» (E2K), а в целом система базируется на дистрибутиве Debian с избирательным подходом к выбору пакетов: по большей части наблюдается соответствие выпуску 7.0 «Wheezy» или более новому, однако версии некоторых пакетов скорее ближе к 5.0 «Lenny». Если верить недавнему отчёту (PDF, 172 Кбайт), проводятся также изыскания по прямому портированию оригинального дистрибутива со всем его многообразием пакетов, однако за основу там выбран всё тот же «Дедушка Ленин». А всё потому, что необходимо обеспечивать обратную совместимость с прикладным и системным программным обеспечением, разрабатываемым под ещё более старые версии библиотек и компиляторов. Но почему бы тогда не выпустить несколько версий системы, - на более старой и на более новой пакетной базе, - чтобы потребитель мог сам выбирать? Наверное, потому что нет достаточного спроса со стороны целевой аудитории, да и проблемы сертификации наверняка играют не последнюю роль.

Единожды установленная система не подлежит регулярному обновлению из официального репозитория фирмы МЦСТ и сразу содержит в себе все имеющиеся пакеты. Вот версии некоторых наиболее значимых (за исключением средств разработки, рассматриваемых в следующей части статьи):

  • офисные инструменты: abiword 2.8.6, evince 2.32.0, geeqie 1.1, gimp 2.6.12, gnumeric 1.10.0, graphviz 2.32.0, mtpaint 3.40, xsane 0.998;
  • средства Интернета: dillo 3.0.3, firefox 3.6.28, links 2.2, linphone 3.5.2, lynx 3.81, thunderbird 3.1.20, sylpheed 2.7.0;
  • криптография: gnutls 3.1.22, openssl 0.9.8zc, openvpn 2.2.2;
  • мультимедиа: ffmpeg 1.0, mplayer 1.1.1;
  • текстовые редакторы: ed 1.7, leafpad 0.8.17, vim 7.3 + gvim 7.3;
  • файловые менеджеры: mc 4.7.0.8, thunar 1.4.0;
  • командные интерпретаторы: bash 4.2.53, pdksh 5.2.14, tcsh 6.18.01, zsh 5.0.2;
  • службы: openssh 6.1p1, httpd 2.4.3, postgresql 9.2.3 + slony1 2.2.0, zeromq 2.1.11;
  • менеджеры пакетов: apt 0.9.7.9, aptitude 0.6.8.2, dpkg 1.16.10, pkgtools 13.1.
Всего в менеджере пакетов насчитывается 679 записей , что в десятки раз меньше исходного пула Debian, однако следует учитывать, что не всё реально установленное программное обеспечение оформлено в виде пакетов: например, система в действительности располагает виртуальной машиной и набором разработчика Java, но менеджер пакетов об этом не в курсе.

Единственным окружением графического рабочего стола является Xfce 4.10. Удивительно, но в отечественной операционной системе вновь создаваемые профили пользователей по умолчанию настроены на английский язык интерфейса, а в меню программ нет ярлыков для настройки переключения раскладки клавиатуры, да и индикатора текущей раскладки тоже нигде не видно. Впрочем, опытные пользователи знают, что отечественные операционные системы на базе Linux обычно стараются копировать «лучшие» традиции Windows: работа из под root и переключение раскладки по Alt+Shift.

Рабочий стол Xfce (примерный вид)

Дополнение от 09.02.2016. В комментариях подсказывают, что функция снятия снимков экрана есть в графическом редакторе GIMP, - замечание справедливое, но для этого надо быть опытным пользователем данной программы; автор же, хоть и выполнил обработку всех иллюстраций для этой статьи именно в GIMP, к таким знатокам не относится. Что же до получения скриншотов с помощью утилит командной строки, - штатно имеющихся или собранных самостоятельно, - то такой способ не рассматривался по причине низкой дружелюбности к рядовому пользователю.

Как уже говорилось, запустить хоть какую-нибудь стороннюю операционную систему, скомпилированную для архитектуры x86 или x86‑64, мы не смогли из‑за отсутствия документации. Попытки напрямую из командной строки «Эльбрус» запустить пользовательское приложение, скомпилированное для Linux x86‑64, тоже успехом не увенчались. Слоя эмуляции WinAPI и средств запуска PE-бинарников в системе нет, а чтобы собрать WinE самостоятельно из исходных текстов, необходимо портировать архитектурно-зависимые участки кода. Эмулятора Qemu тоже нет в штатной поставке, но он более-менее успешно собирается (с параметрами ‑‑enable-tcg-interpreter ‑‑disable-werror ) и вроде даже работает в вариантах i386-softmmu , x86_64-softmmu , sparc-softmmu , sparc64-softmmu ; портирование однако требуется для «прикладных» вариантов *-linux-user . Очевидно, создатели технологии двоичной трансляции «Эльбруса» совсем не это имели в виду, когда говорили об аппаратной эмуляции x86, поэтому смысла тестировать производительность Qemu мы не видели, - и так ясно, что это было бы медленно и печально.

Возвращаясь к теме штатного программного обеспечения, рискнём высказать предположение, что типичный пользователь этой системы вряд ли будет чувствовать себя обделённым, так как ему придётся либо решать задачи в специализированных программах сторонней разработки, либо создавать несложные документы в офисных пакетах, сканировать и печатать, - а для этого мало кому нужны самые свежие версии. Единственным исключением здесь, пожалуй, является веб-браузер: простейший Dillo и текстовые Lynx / Links ни на что не претендуют, а вот Firefox 3.6 - это хоть и не 1.5 из состава МСВС 3.0, но всё равно безнадёжно стар для современных сайтов. Эту версию не поддерживают, например, карты Яндекса и Гугла (в отличие от OSM и Bing), Google Docs; вы увидите только шапку сайтов Intel, почты Mail.ru и Сбербанка. И, конечно, в отсутствие встроенной поддержки HTML Video и плагина Flash вы не сможете посмотреть видеоролики ни на одном сайте, - будь то зарубежный YouTube с отчётом о запуске Doom 3 на «Эльбрус 401‑PC» или идеологически верный Kremlin.ru с выступлениями верховного главнокомандующего. Видимо, это тоже не считается недостатком, так как типовой сценарий применения подобных компьютеров - доступ к внутренним, специально разработанным сайтам в закрытой сети предприятия или ведомства.

Попытки выхода в Интернет (слово «Namoroka» на скриншотах - это не очередной ребрендинг Firefox для Debian, а всего лишь кодовое имя версии 3.6)

Но ведь обновление программного обеспечения служит не только для расширения функциональности, а ещё и устраняет серьёзные ошибки и уязвимости, - как быть с этим? Видимо, идеологи информационной безопасности считают, что раз внешнего доступа в частную сеть нет, а внутренние пользователи, имеющие физический доступ к своим компьютерам, не станут сознательно предпринимать злонамеренных действий или подключать сомнительные носители данных по неосторожности, то беспокоиться не о чем. В крайнем случае, если какой‑то баг вас очень тревожит, и вы хотите поговорить об этом, у МЦСТ есть своя bugzilla с логином и тикетами, - в том смысле, что без выданного вам логина вы туда не попадёте, а тикеты будете видеть только свои собственные, даже если проблема уже обсуждалась тысячу раз с другими клиентами и решение было давно найдено.

Обзор и сравнительное тестирование ПЭВМ «Эльбрус 401‑PC». Дополнение - вопросы и ответы

Пожалуй, главным результатом публикации этого обзора , - помимо собственно ознакомления общественности с первыми независимыми впечатлениями от нового компьютера, - стало желание самой фирмы МЦСТ раскрыть побольше подробностей, устранить возникшие недоразумения и ответить на вопросы, поднимаемые в статье и в комментариях к ней. Некоторые из этих вопросов настолько фундаментальны, что заслуживают по отдельной статье каждый, и потому требуют серьёзной проработки. Сейчас же мы рассмотрим те из них, которые лучше всего укладываются в формат интервью.

Общие моменты

Чтобы правильно понимать позицию фирмы МЦСТ по нижеизложенным воспросам, необходимо представлять себе её прошлое, настоящее и планы на будущее, - в отрыве от этого контекста некоторые факты могут выглядеть странно.

Исторически, основными заказчиками и потребителями продукции МЦСТ были силовые структуры. Ассортимент и объёмы производства были ограниченными, каждый компьютер был на учёте, каждого покупателя знали в лицо, образно говоря. При такой модели сбыта было необходимым и достаточным выпускать в оборот только хорошо отлаженные и сертифицированные системы, под которые прицельно затачивалось прикладное программное обеспечение. Каждый клиент требовал персонального подхода - квалифицированных консультаций при выборе оборудования и его последующей эксплуатации, в том числе с выездом сервисного инженера на место установки (в любую точку необъятной части суши, а также на море). То есть «махровый энтерпрайз», разве что со своей спецификой.

Сейчас МЦСТ очень хочет выйти на гражданский рынок - сначала в корпоративный сектор, который всё-таки ближе к текущему опыту, а затем и в потребительский сегмент, то есть к самым широким массам. Понятное дело, что если бизнес-клиенты ещё хоть как-то готовы нести дополнительные траты (но не такие, конечно, какие готовы нести традиционные заказчики МЦСТ), особенно когда ясны преимущества выбора в пользу дорогого эксклюзива, то рядовой человек голосует кошельком за самые доступные товары, соглашаясь на менее высокое качество продукции и порой полное отсутствие поддержки со стороны производителя. А ещё простые люди жаждут всего нового - подавай им удвоение количества транзисторов каждые полтора года, самую свежую версию ядра, системных библиотек и прикладных программ; и не столь важно, сколько там было устранено старых ошибок и сколько появилось новых, как сильно потяжелел софт и как он теперь тормозит на машинах предыдущего поколения.

Очевидный разрыв между желаемым и действительным прекрасно понимают в МЦСТ на всех уровнях, - ни у кого нет радужных иллюзий, что можно в один момент сорваться с места в карьер, обгоняя маститых спринтеров и бывалых марафонцев, тем более что с такими соперниками необходимо, как в известной сказке, нестись со всех ног, просто чтобы остаться на месте. Сейчас на такой рывок нет ни денег, ни производственных мощностей, ни, элементарно, кадровых ресурсов, - штат сотрудников на три порядка меньше, чем у Intel или Microsoft, а заниматься приходится всем сразу. Даже чтобы охватить коммерческие или бюджетные структуры, необходимо сначала развернуть сеть дилерских центров и ремонтных мастерских, наладить систему обучения и технической поддержки, - сейчас МЦСТ только прощупывает почву в поисках партнёров. Ну и, конечно, необходимы финансовые инвестиции: чтобы иметь возможность продавать свои компьютеры недорого, требуется снизить себестоимость производства, а это достижимо только при значительном увеличении объёмов, - получается замкнутый круг, разорвать который очень непросто.

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

Поскольку отказаться от старых привычек сложно, особенно когда ещё нет практики ведения дел в совершенно иной среде, необходимо делать скидку на то, что, когда сотрудники компании отвечают на вопросы далее по тексту, то, говоря «пользователь», они зачастую всё ещё имеют в виду своего классического клиента, с которым имеется персональный контакт и прямой контракт, а зачастую ещё и дополнительное соглашение о неразглашении, - такой клиент сам не заинтересован в публичности и знает, что может рассчитывать на любой каприз за свои деньги. Но, как можно видеть по многим ответам, этот шаблон уже не рассматривается в качестве единственного. Тут тоже всё будет развиваться постепенно, шаг за шагом.

Производство и продвижение

На каком заводе производят ЦП и КПИ? В каких объёмах? Правда ли, что производство свёрнуто (приостановлено) на два года?

Секрета здесь нет: новые микросхемы сейчас производятся только в Азии. И если ставить целью всерьёз конкурировать на свободном рынке, никакой альтернативы этому пока нет. Другое дело, что тогда возникает естественный вопрос информационной безопасности в критических применениях, но для особой категории заказчиков возможно организовать производство на местных мощностях ограниченными партиями - с соответствующим уровнем цен. Первый (и успешный) проект такого рода - процессор «Эльбрус-2СМ»: его кристаллы производятся на зеленоградской фабрике «Микрон».

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

Много процессоров на данном этапе идёт на внутренние нужды, - как обыденные, так и экспериментальные. Например, недавно был собран вычислительный комплекс из 32 модулей 1U по четыре процессора «Эльбрус-4С» в каждом - итого 512 ядер. Каждый, у кого есть интересные задачи для такой системы, может обратиться с заявкой на машинное время. (Кратко о том, какие классы программ наиболее эффективно выполняются на архитектуре E2K, и как оптимизировать свой исходный код, будет рассказано ниже, а подробнее эту тему планируется осветить в отдельной публикации.)

При каких объёмах производства удастся снизить стоимость комплекта «материнская плата + процессор» до приемлемого для широкого круга покупателей уровня? Как скоро российская электронная промышленность будет способна обеспечить такие объёмы?

Чтобы выйти на уровень около 1000 долларов, необходимо выпускать как минимум 10 тысяч готовых изделий ежегодно, а двигаться ещё дальше навстречу покупателю можно только при потоке порядка 100 тысяч изделий в год. Разумеется, всё производство тогда должно быть сосредоточено в Китае, либо отечественные фабрики должны очень хорошо поработать над удешевлением логистики и снижением себестоимости производства. Сейчас все платы производства МЦСТ монтируются на российских заводах.
При каких объёмах производства будет оправдан выпуск упрощённой версии процессора для 1-сокетных систем - без блоков межпроцессорного взаимодействия и доступа к удалённой памяти?

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

Пока что такая схема продаж не обкатана, но скорее всего будет перенят опыт коллег из «Альт Линукс», - для персонального использования цена точно не станет обременительной.
Когда ожидать готовые системы на базе «Эльбрус-8С»? Определены ли характеристики будущих процессоров? Будет ли в следующей модели 16 ядер и тактовая частота 2 ГГц, к примеру?

Предсерийные образцы однопроцессорных машин на базе «восьмёрки» можно будет увидеть уже этим летом. Следующий шаг - небольшое увеличение частоты (до 1,5 Гц) и удвоение количества вычислительных блоков с плавающей запятой, которые являются основной движущей силой этой платформы - такой процессор уже разрабатыается с рабочим названием «Эльбрус-8СВ». Процессор с 16 ядрами планируется выпустить в 2020 году.
Почему система именования аппаратных и программных средств такая запутанная?

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

Важное уточнение. Упоминать обозначение «Эльбрус-2000», равно как и аббревиатуру «E2K», в контексте современных продуктов - неправильно: официальным названием этой микропроцессорной архитектуры является «Эльбрус», без всяких суффиксов. Название «Эльбрус-2000» было выбрано для архитектуры, которую собирались реализовывать совместно с западными компаниями в 2000 г. В самом начале 1999 г. в журнале Microprocessor Report была напечатана статья с описанием архитектуры микропроцессора «Эльбрус-2000», которая на английском языке выглядела как «Elbrus-2000», а в сокращенном виде - «E2k». Нынешняя архитектура «Эльбрус» существенно доработана по отношению к той архитектуре E2k, - это уже третья версия, - поэтому использование старого обозначения не вполне корректно. Кроме того, аббревиатура E2K (с заглавной буквой «K») может трактоваться ортодоксальными компьютерщиками как 2048, что совсем уж никуда не годится.

Поддержка пользователей

Имеется ли документация в электронном виде? Планируется ли выкладывать документацию в общий доступ для свободного скачивания любым желающим (безотносительно факта покупки оборудования)?

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

Нельзя просто взять и открыть багзиллу, где многие тикеты содержат «высоко чувствительные» сведения. Скорее всего, для широких масс будет создана отдельная багзилла, доступная для просмотра и пополнения всеми желающими. А ранее накопленный опыт по наиболее часто задаваемым вопросам будет переработан в FAQ, который также будет выложен на новом сайте поддержки. Там же будет и форум, скорее всего.
Что насчёт публикации исходных кодов адаптированного программного обеспечения и отправки патчей в апстрим того или иного проекта? Планируется ли принимать патчи от пользователей? Как насчёт поощрений за найденные уязвимости?

Исходные коды не выкладывались в публичный доступ просто потому, что сами клиенты были не публичными, и спрос среди них на исходные коды был небольшим, а кому было действительно нужно не из праздного любопытства - обращался с запросом и получал всё что надо в частном порядке. Планируется, что для массового потребителя в обозримом будущем будет создан публичный репозиторий, куда попадёт весь заимствованный код. Открывать свои собственные разработки, такие как компилятор LCC, фирма не планирует, - в конце концов, Intel C++ Compiler (а именно его МЦСТ считает своим главным соперником с точки зрения оптимизаций) тоже закрытый, и хорошо при этом себя чувствует.

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

Отправка своих изменений авторам оригинальных проектов - несомненно полезное дело, но этим кто-то должен заниматься, к каждому проекту нужно знать подход, разбираться в особенностях культуры сообщества. Более посильной задачей представляется просто выкладывать весь код в общий доступ: если найдётся «посол доброй воли», готовый взаимодействовать с тем или иным апстримом, - что ж, замечательно. Пока что у МЦСТ такого опыта нет.

Аппаратное обеспечение

Как встроенный видеоадаптер задействовать в графическом окружении? Насколько комфортным для 2D-работы предполагается его быстродействие?

Инициировать перенастройку графического стола проще всего было бы, запустив утилиту xorg-server.postinst . Функции аппаратного 3D-ускорения у встроенного адаптера отсутствуют напрочь, а вот обычное использование приложений рабочего стола не должно вызывать никаких неудобств, - уж точно не так, как было на старых компьютерах. Наверное, надо будет записать это на видео и выложить небольшой ролик - вместо тысячи слов.
Какие дискретные видеокарты, помимо Radeon HD 6450 / R5 230, поддерживаются операционной системой? Какие функции аппаратного ускорения доступны прикладным программам через имеющийся в системе драйвер?

Поддерживается вся современная линейка Radeon, совместимая с открытым драйвером для Linux. Поскольку у nVidia в этом плане всё очень печально, их продукция не имеет поддержки в операционной системе «Эльбрус» на данный момент.
Чем можно объяснить аномально низкие показатели скорости чтения и записи твердотельного накопителя, не дотягивающие даже до номинальной полосы пропускания интерфейса SATA-2, через который он подключён?

Это известное ограничение микросхемы 1991ВГ1Я, реализующей контроллер периферийных интерфейсов (КПИ). Оптимизированный вариант контроллера (КПИ-2), в котором эта проблема решена, будет устанавливаться в системы с новыми процессорами «Эльбрус-8С» и «Эльбрус-1С+».
Зачем в составе компьютера «Эльбрус 401‑PC» имеется жёсткий диск объёмом 1 Тбайт, если он даже не настроен в операционной системе, а основной накопитель и так предоставляет немало свободного пространства?

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

Действительно, краска является в первую очередь стопором. Накопитель откручивать можно - гарантии это не лишает, но если что-то сломается, то у сервисных инженеров возникнут естественные вопросы к пользователю касательно произведённых действий.
Откуда берутся идентификаторы PCI-устройств, - почему код разработчика (Vendor ID) у многих набортных устройств такой же, как у Intel?

Причина совершенно прозаическая - так операционной системе Windows в режиме двоичной трансляции проще почувствовать себя как дома. Правда, из-за своей параноидальной привязки кодов активации к используемой аппаратуре, эта «самая дружелюбная» система всё равно иногда начинает капризничать.
Где можно ознакомиться с описанием аппаратно-программного модуля доверенной загрузки «Эшелон‑Э»?

Тут имеет место недоразумение: этот продукт - чисто программный, и является лишь частным случаем обычного МДЗ «Эшелон», разработанного одноимённым научно-производственным объединением. Это средство обеспечивает доверенную загрузку компьютера, контроль целостности, идентификацию и аутентификацию пользователя до передачи управления операционной системе.
Является ли модуль удалённого управления по IPMI, предлагаемый как опция для серверов «Эльбрус-4.4», самостоятельной разработкой, или это готовый продукт иностранного производства?

Разумеется, это самостоятельная разработка, но пока ещё не готовый продукт, - модуль находится на этапе отладки.

Операционная система

Какая система обозначения версий используется для ОС «Эльбрус»?

Правильный ответ уже приводился в статье: номер версии записан в файле /etc/mcst_version . Та версия 2.2, которой комплектовались компьютеры из первой партии, на самом деле уже не актуальна - стабильной сейчас является 2.3, а на стадии релиз-кандидата находится 3.0 (с ядром 3.14).
Планируется ли выпускать регулярные обновления, которые бы устанавливались автоматически из публичного репозитория? Почему не всё программное обеспечение, установленное в системе, оформлено в виде пакетов?

Да, автоматическое обновление планируется, хотя сейчас этот процесс происходит ещё вручную по запросу. Разумеется, для этого всё программное обеспечение должно находиться под управлением менеджера пакетов, - если сейчас где-то не так, то только вследствие неотлаженности процесса сборки.
Не проще ли напрямую портировать однин из популярных Linux-дистрибутивов - например, тот же Debian?

Именно этим в данный момент и занимается одна из команд. Действительно, Debian предлагает, пожалуй, наиболее удобную инфраструктуру для создания производных дистрибутивов. Более того, у Debian сейчас самый широкий набор поддерживаемых архитектур, во всяком случае среди семейства Linux, так что создавать новые порты логичнее всего на этой базе. Однако именно процедура портирования у данного дистрибутива - не самая гладкая и систематизированная, поэтому приходится изрядно потрудиться. Зато, когда процесс будет отлажен и автоматизирован, синхронизация с мейнлайном станет [почти] незамедлительной. А вот удастся ли придать этому порту статус официального - большой вопрос.

Но перечень поддерживаемых операционных систем не планируется ограничить лишь каким-то одним вариантом. Первым делом ожидается порт ALT Linux, который в представлении не нуждается. Также ведутся работы по адаптации QNX: защищённая операционная система реального времени «Нейтрино-Эльбрус» в каком-то виде уже работает; подробности уточняйте у разработчиков в центре компетенции «СВД Встраиваемые Системы».

Насколько трудоёмко портирование ядра Linux? Почему сейчас используется ядро версии 2.6.33 - не самое новое, но и в то же время не поддерживаемое как LTS?

Процесс портирования ядра Linux на ту или иную аппаратную платформу в самом деле довольно трудозатраный, но проблема не в однократных усилиях, а в том, что каждый раз очень многое приходится начинать почти с начала, так как всё течёт, меняется и перетасовывается. Например, только-только перебрались на ядро 3.14 и начали экспериментировать с веткой 4.x - а там опять всё поменялось.

Вряд ли в обозримом будущем получится добиться принятия своего порта в мейнлайн kernel.org, когда там всё очень строго с одной стороны и довольно хаотично с другой. Поэтому наиболее вероятной перспективой видится предоставление своего ядра всем желающим для самостоятельной сборки такого дистрибутива, какой они сами захотят смастерить.

Какие версии ядра (default , nn , rt ) для каких целей лучше использовать?

Для повседневных задач, очевидно, лучше всего подходит ядро по умолчанию. Ядро «nn» предназначено для сетевых маршрутизаторов - там удешевлена обработка прерываний. Ядро «rt» умеет планировать работу процессов, соблюдая ограничения по выделенным квантам времени в установленных пределах, что позволяет говорить о вычислениях в реальном времени, - не значит «быстро», но значит «предсказуемо», пусть и ценой потери производительности; при этом в системе обычно остаётся работать только ядро и целевое приложение, а также минимально необходимый набор фоновых служб.
Возможен ли быстрый перезапуск [ядра] операционной системы без повторной инициализации оборудования? Как ускорить запуск операционной системы в частности и компьютера вообще?

Быстрый перезапуск операционной системы без инициализации оборудования не предусмотрен. Ускорить инициализацию оборудования можно, во-первых, очевидными способами: например, отключив или уменьшив тайм-аут поиска серверов ATA over Ethernet, - они нужны только для загрузки по сети. Во-вторых, есть и неочевидные на первый взгляд способы: например, можно отключить очистку оперативной памяти, которая обычно выполняется в целях информационной безопасности. Ну, а ускорение запуска операционной системы путём отключения всех ненужных служб - в комментариях не нуждается.

Прикладное программное обеспечение

Для каких целей позиционируется имеющаяся сейчас версия Firefox 3.6, если с ней не совместимы многие сайты, использующие современные веб-технологии?

Актуальной версией браузера в текущем релизе операционной системы «Эльбрус» является 23.0, которая гораздо совершеннее в функциональном плане и в плане производительности. Например, тест JetStream теперь уже успешно завершается, причём со счётом 7,8 балла - не намного ниже отметки 8,2 балла, достигаемой той же версией Firefox в режиме двоичной трансляции x86, где задействован полноценный JIT-компилятор для JavaScript.

Также обкатывалась версия 31.0, но она проявила себя хуже, медленнее, и её решили не выпускать на публику. Следующей перенесённой версией будет 44.0.

Имеется ли в системе реализация отечественных криптографических алгоритмов (в том числе актуальных версий), доступная для программ на языках C/C++?

Сейчас на смену OpenSSL пришло его ответвление - LibreSSL, куда российская криптография интегрирована официально.
Чем можно объяснить низкую производительность виртуальной машины Java, продемонстрированную в различных тестах?

Пакет OpenJDK 1.6.0 был в каком-то смысле «пробой пера» - сейчас уже кипит работа над 1.7.0 и 1.8.0, где производительность удалось поднять в 3–4 раза, если судить по таким тестам, как SPECjvm2008. Но в общем случае, конечно, придётся ещё много чего оптимизировать.
Планируется ли портирование Mono или.NET в рамках ОС «Эльбрус» или иного дистрибутива?

Учитывая популярность данной технологии, это практически неизбежно. Но, принимая во внимание происходящие в данный момент перемены в отношениях Microsoft с сообществом и неопределённое будущее проекта Mono, естественным образом возникает желание чуть-чуть подождать, когда перспективы станут более чёткими, чтобы не тратить время на тупиковые ветви развития.

Пока же, если кому-то необходимо запускать дотнетовские приложения, он может воспользоваться режимом x86-трансляции. Собственно, это одно из основных назначений технологии трансляции - обеспечить совместимость на переходный период, пока программная база ещё не стала нативной. Кстати, сейчас команда МЦСТ активно работает над повышением эффективности трансляции приложений, использующих подобные just-in-time компиляторы.

Каковы перспективы у «Эльбруса» в качестве игровой платформы, учитывая, что в современных играх почти вся нагрузка ложится на видеокарту, и мощный процессор зачастую не нужен?

Этим вопросом всерьёз ещё никто не задавался. Пока что, если только игра не доступна в исходных кодах и не является по-настоящему переносимой, то единственным выходом будет запуск Windows или Steam OS в режиме двоичной трансляции, но возможны проблемы с активацией лицензий из-за особенностей привязки к оборудованию.

Архитектура и средства разработки

Где и как можно получить подробное справочное руководство по архитектуре и набору машинных инструкций?

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

Впрочем, серьёзной практической проблемы это не представляет, так как, по мнению МЦСТ, информации в имеющейся документации достаточно даже для низкоуровневого программирования через «интринсики», а генерировать машинный код своими силами или даже писать на E2K-ассемблере - занятие бесполезное почти во всех случаях, кроме очень-очень узкого круга низкоуровневых системных процедур. Только компилятор способен учитывать тайминги выполнения инструкций и проводить столь сложную оптимизацию, какая требуется для эффективного задействования ресурсов подобной архитектуры.

Какие виды программ (алгоритмов) можно реализовать на E2K эффективнее всего, в том числе по сравнению с другими архитектурами, обеспечивающими неявный параллелизм?

Изначально «Эльбрус-2000» проектировался как высокопроизводительная платформа для вычислений с плавающей запятой, и отходить от этой концепции не планируется - скорее, наоборот: как уже говорилось, следующим шагом после «8С» будет удвоение количества вычислительных блоков вещественного типа. Соответственно, основная стезя - это математические программы, научные и производственные расчёты. Специально для таких задач разрабатывается и оптимизируется библиотека алгоритмов EML (Elbrus math library), а у компилятора LCC есть особые навыки по трансформации некоторых шаблонов исходного кода в вызовы этой библиотеки.

Другой сильной стороной является наличие большого регистрового файла, - программе в каждый момент времени доступно до 256 регистров, в том числе возможно их автоматическое переименование. Это открывает путь для очень масштабных оптимизаций. Например, в известном обзоре на CNews фигурировал тест gostcrypt (это частная реализация от одного из клиентов МЦСТ), в котором «Эльбрус-4С» на пониженной частоте обогнал Core i7-2600 почти в два раза, - тут нет никаких подтасовок, но был сделан неправильный вывод, будто причиной тому стало отечественное происхождение алгоритма ГОСТ 28147-89. На самом деле секрет успеха - в удачном сочетании структуры этого алгоритма с количественными характеристиками архитектуры E2K и качественными способностями компилятора LCC по проведению глубокой оптимизации. Компилятору удалось развернуть весь цикл преобразования одиночного блока и утрамбовать его в минимально возможный набор командных слов, обеспечив работой все имеющиеся целочисленные блоки, - вот и получился такой впечатляющий результат.

Как писать эффективные программы для E2K на языках C/C++ и Fortran? Есть ли учебное пособие на эту тему?

Попытка создать руководство по архитектуре уже предпринималась, однако авторы тогда сильно углубились в описание аппаратной части, полагая, что из этого материала любой читатель сможет сделать очевидные выводы, - получилось примерно то же, что опубликовано в известной книге «Микропроцессоры и вычислительные комплексы семейства Эльбрус». Что же касается наставления для прикладных программистов, то, увы, пока что все сакральные знания хранятся только в головах сотрудников, занимающихся разработкой компилятора; иногда они делятся своими откровениями на лекциях в МФТИ, но для оформления конспектов в виде книги ещё не созрели. Тем временем в качестве отправной точки советуют почитать рекомендации для Itanium, - концептуально эта архитектура очень похожа на E2K.

Вкратце основные приёмы можно сформулировать так.

  • Не мешать компилятору: уж если объявили функцию как встраиваемую (inline ), то не забывайте включать её определение в каждый вызывающий модуль, - потому что вызов подпрограмм и возврат управления обратно являются весьма дорогими операциями на «Эльбрусе». Вообще, переход управления только тогда осуществляется почти безболезненно, когда подготовка к нему началась минимум за 4 такта заранее, поэтому, например, условные ветвления в простейших случаях автоматически заменяются на спекулятивные вычисления.
  • Помогать компилятору подсказками: помечать вероятные и редко используемые условные блоки макросами likely и unlikely , указывать ориентировочное количество итераций цикла в директиве pragma loop count , применять двухпроходную компиляцию с профилированием, когда характер нагрузки всегда однотипный.
  • Использовать семантически подходящие конструкции: компилятор скорее попытается оптимизировать цикл for , чем while , особенно если в нём замечен досрочный выход через break .
  • Избавляться от лишних зависимостей между итерациями цикла и между отдельными шагами одной итерации, - тогда у компилятора появляется шанс ещё и утрамбовать широкие команды, а также заменить скалярные вычисления на векторные. (Этот совет справедлив в любой ситуации, но в случае с циклами зачастую вмешивается ограничение на количество анализируемых итераций.)
  • Избегать заведомо неблагоприятных техник: например, не использовать невыровненный доступ к памяти, - хоть такое поведение и поддерживается, расплата за него гораздо суровее, чем на x86. Более того, если вы гарантируете отсутствие такого поведения в программе, то можно включить дополнительные режимы оптимизации.
  • Применять оптимизированные функции, когда это возможно, - например, вышеупомянутую библиотеку EML. Как уже говорилось, компилятор сам умеет заменять вызовы обычных функций на оптимизированные, но он не всесилен, и лучше всё делать явно.
Более подробно и с примерами эти методы и прочие тонкости планируется осветить в отдельной статье. МЦСТ прекрасно понимает важность распространения среди программистов «тайных техник» извлечения из «Эльбрусов» максимальной производительности, и планирует начать нести свет знаний, как только будет сформировано сообщество и его инфраструктура.
Существует ли готовый набор примеров исходного кода на языках C/C++ с ошибками обращения к памяти, чтобы продемонстрировать, как технология защищённого исполнения программ позволяет отлавливать такие ошибки на этапе компиляции и на этапе выполнения?

Разумеется, такой набор программ есть - в составе средств регрессионного тестирования, которое проводится еженощно. Также можно использовать примеры из коллекции SAMATE американского института NIST. Однако для наглядности (по этой теме планируется написать отдельную статью), наверное, проще будет написать «однострочники», которые прицельно иллюстрируют каждую ошибку в отдельности.
Рассматривается ли возможность написания E2K-бэкэнда для компилятора LLVM в качестве альтернативы LCC, стремящегося походить на GCC?

Изыскания в этом направлении проводились, естественно, однако вердикт пока был скорее отрицательным: архитектуру «Эльбрус-2000» сложно описать средствами LLVM оптимальным образом. То есть альтернативный компилятор можно было бы выпустить, но генерируемый им машинный код проигрывал бы LCC по скорости работы. Но направление не считают тупиковым, - возможно, что со временем бэкэнд к LLVM всё же будет реализован.
Может ли LCC выводить ошибки и предупреждения по форме, принятой у GCC, чтобы эти сообщения распознавались в среде разработки (например, Qt Creator) соответствующим образом?

На данный момент это не предусмотрено, но уже заведён тикет в багзилле.
Где можно получить набор средств кросс-компиляции программ для E2K из рабочей среды x86? Предусмотрен ли обратный процесс - генерирование x86-кода из среды «Эльбрус», и если да, то с помощью особой версии LCC, либо обычного GCC?

Средства кросс-компиляции для E2K (то есть компилятор LCC, работающий на x86 Linux) предоставляются по запросу. Обратный процесс в явном виде не предусмотрен: если такое необходимо, можно запустить какую-нибудь x86-систему на «Эльбрусе» в режиме двоичной трансляции и использовать имеющийся там компилятор.
Какие технологии виртуализации поддерживаются на платформе «Эльбрус»?

Прямо сейчас поддержки нет вообще. Однако в скором времени появится возможность использования контейнеров.

Кроме того, в этом году должны завершиться работы по созданию паравиртуализованного ядра операционной системы и механизма поддержки гипервизора KVM, а это - основной задел в архитектурно-зависимой части для развёртывания полноценной облачной инфраструктуры типа OpenStack. Тогда как прочие архитектуры при работе в среде Qemu/KVM опираются на полную виртуализацию аппаратуры, факультативно используя паравиртуальные драйверы virtio для ввода-вывода и перехват привилегированных инструкций при поддержке самого процессора, для «Эльбруса» дорабатывается архитектурно-зависимая часть KVM, чтобы обеспечить именно паравиртуальный режим работы, когда гостевая система тесно сотрудничает с гипервизором и вместо выполнения привилегированных инструкций вызывает функции hypercall API.

Хорошо известно, что Intel постоянно совершенствует свою архитектуру и улучшает микроархитектуру, повышая при этом производительность. Как развивается в этой части архитектура «Эльбрус»?

Развитие движется в нескольких направлениях.
  • Основное внимание уделяется повышению производительности процессорного ядра для ускорения работы однопоточных приложений. Это достигается за счет увеличения числа одновременно исполняемых операций (реализовано в следующей, 4-й версии системы команд), использования более широких регистров для операций над векторными данными (реализуется в 5-й версии), совершенствования иерархии подсистемы памяти. При этом сохраняется совместимость с предыдущими версиями архитектуры.
  • Второе направление - это совершенствование микропроцессора как системы на кристалле. По мере освоения более тонких нанометровых технологий в микропроцессорах возрастает число процессорных ядер, увеличивается число каналов доступа в память для сохранения сбалансированности микропроцессора, в отдельных случаях добавляются специализированные графические ядра и дополнительные контроллеры взаимодействия с периферийными устройствами.
Наконец, значительную роль играет совершенствование оптимизирующего компилятора, с помощью которого удаётся извлекать параллелизм программ и трансформировать код в параллельные возможности архитектуры, - как уже неоднократно подчёркивалось, компилятор фактически является частью архитектуры. Резерв способностей компилятора ещё далеко не исчерпан, МЦСТ здесь видит очень широкое поле для приложения усилий.

Двоичная трансляция x86-кода

Какие возможности и ограничения имеет двоичная трансляция?

Эта тема заслуживает рассмотрения в отдельной статье, но вкратце картина складывается следующая. Трансляция бывает двух видов - на уровне системы и на уровне приложения. В первом случае для гостевой операционной системы обеспечивается доступ ко всему аппаратному окружению компьютера, а во втором, соответственно, только выполняется передача системных вызовов из гостевой программы в ядро хозяйской системы Linux. Это можно сравнить с эмуляторами qemu-system-x86_64 и qemu-i386 соответственно, однако транслятор не занимается эмуляцией гостевого процессора, а сразу перекомпилирует гостевой машинный код в нативные инструкции своей архитектуры. Причём преобразование выполняется многократно, постепенно увеличивая степень оптимизации для наиболее часто встречающихся участков кода, а результаты сохраняются в долговременный кэш.

Транслятор уровня системы (неофициально он называется «lintel» - «эль-интел») поддерживает наборы команд x86 и x86-64, а транслятор уровня приложений («rtc», то есть run time compiler) пока совместим только с 32-битным программами, - 64-битная версия находится в стадии тестирования. Однако совместимость с архитектурой AMD64 / EM64T не означает автоматической поддержки всех новых наборов инструкций, которые можно встретить в тех или иных процессорах Intel / AMD, как то последние версии SSE, AVX, AES-NI, - соответствующие флаги в информации CPUID будут отсутствовать.

Как воспользоваться транслятором уровня системы?

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

Транслятор уровня системы имеет BIOS оригинальной разработки, и после запуска на экране возникает привычная всем POST-последовательность, в ходе которой можно зайти в меню настроек. Большинство этих настроек - самые обыкновенные, но есть и специфические. Например, можно очень гибко управлять идентификацией процессора по CPUID, меняя не только номер семейства и модели или отдельные флаги способностей, но и текстовое название, - это необходимо для противодействия анти-конкурентному поведению программ, собранных при помощи Intel C++ Compiler. Другая специфическая опция - прозрачное превращение SATA-контроллера в PATA, чтобы обеспечить совместимость с более широким кругом операционных систем. Но, несмотря на наличие таких «волшебных палочек», работа операционных систем, установка которых производилась на настоящей x86-машине, не гарантируется, - особенно это касается Windows с её привязкой лицензии к оборудованию и трепетным отношением к драйверу системного диска.

Как воспользоваться транслятором уровня приложений?

Ещё проще: запустив программу трансляции, передав ей путь к гостевому приложению и путь к корневому каталогу воссоздаваемого окружения. Весь вопрос в том, как сперва получить образ этого окружения. Пока что штатно поставляется только окружение x86-версии системы «Эльбрус», однако допускается использование и других. Если клиент затрудняется сформировать образ нужной системы самостоятельно, специалисты МЦСТ могут оказать необходимую помощь.

Из-под запущенного гостевого приложения (например, коммандного интерпретатора) пользователь может осуществлять запуск прочих гостевых программ - совершенно прозрачно. В один момент времени может быть запущено сразу несколько экземпляров транслятора, и каждый экземпляр может работать в своём собственном окружении; поэтому, например, можно опробовать одну и ту же версию браузера в разных дистрибутивах, или, наоборот, разные версии браузера в одной системе (пример надуманный, конечно, но суть раскрывает).

Можно встретить утверждение, что в режиме двоичной трансляции некоторые бенчмарки начинают работать даже быстрее, чем изначально собранные для E2K. Для каких классов программ и при каких условиях такое возможно?

Такое действительно возможно, например, когда нативная версия JVM или JS-движка умеет только интерпретировать пользовательский код, а сравниваемая с ней x86-версия располагает полноценным JIT-компилятором. При этом, даже не смотря на то, что имеет место многократная трансляция, - сначала выбранный для оптимизации байт-код компилируется в машинный язык x86, затем ещё через какое-то время он перекомпилируется в E2K (причём трижды, по одному разу на каждый уровень оптимизации), - всё равно итоговый выигрыш от компиляции перевешивает.

Что касается нативных программ на языках C/C++, то здесь тоже существует логическое объяснение, даже целых два. Во-первых, хоть компилятор LCC и проделывает титаническую работу по оптимизации генерируемого кода, никто не гарантирует, что какой-нибудь компилятор для x86, особенно коммерческий, не справится лучше в том или ином частном случае. Во-вторых, более вероятно, что хорошо оптимизированная программа для x86 попросту была собрана с учётом предварительного профилирования, тогда как компилятору LCC скормили голые исходники без подсказок. Но при прочих равных, конечно, нативные программы должны работать как минимум не медленнее транслируемых, - если это не так, надо отправлять баг-репорт разработчикам LCC.

Измерение производительности

По мнению специалистов МЦСТ, некоторые популярные ранее бенчмарки не могут по-настоящему раскрыть потенциал ни одной из существующих ныне платформ. Взять тот же UnixBench - при всём уважении к его почтенному возрасту, он давно устарел и одинаково не годится для любых современных процессоров и операционных систем. Оба его процессоро-зависимых теста, Whetstone и Dhrystone, практически не распараллеливаются и не подлежат хоть сколь-нибудь существенному внеочередному выполнению - хоть на архитектурах с явным параллелизмом, хоть с неявным. А остальные тесты вообще «ни о чём», вместо них лучше использовать что-то более специфическое. Единственное достоинство UnixBench - кросс-платформенность, потому его и используют до сих пор.

Не стоит также упускать из виду могучую силу профилирования. Например, показавшиеся многим подозрительно высокими результаты теста 7-Zip в обзоре CNews - это не обман, а следствие двухпроходной компиляции. Другой вопрос, насколько такая оптимизация полезна в общем случае, то есть на произвольных входных данных. По этой причине вряд ли имеет смысл профилировать все компоненты теста Pgbench, - ведь на реальных данных производительность Postgresql может оказаться совсем иной. Но в случае конкретно с 7-Zip перепроверить довольно легко: надо провести ещё один тест, подав на вход коллекцию разнообразных файлов. Проблема только в том, что если файлы не стандартизированы, то повторить тест идентичным образом у любого желающего не получится, и доверия к опубликованным результатам будет ещё меньше.

Следует отдавать себе отчёт, что синтетические бенчмарки нередко пишутся с прицелом на определённую архитектуру (в том числе потому что их авторы привыкли так мыслить), либо подгоняются под определённое сочетание аппаратуры и компилятора. Например, известный тест SPECcpu декларирует объективность и непредвзятость, однако в исходных кодах версии 2006 можно встретить комментарии, что тот или иной костыль добавлен специально для Intel C++ Compiler. Да и как тут не заподозрить влияние крупного вендора, когда из 36,6 тысяч опубликованных результатов на долю его продукции приходится 90 % записей?

Реальные прикладные программы - тоже не всегда показатель, потому что наиболее критичные участки могут быть либо полностью написаны на ассемблере x86, либо содержать много ассемблерных вставок и обращений к особым функциям (интринсикам), чему OpenSSL наглядный пример. Получается, что вылизанный до блеска машинный код сравнивается с реализацией на языке высокого уровня, основное предназначение которой - быть эталонной, а не оптимальной.

Поэтому предложение к читателям: давайте вместе подумаем, какие тесты - искусственные или приближенные к жизни - можно провести, чтобы увидеть, насколько «Эльбрус» силён в релевантных для него задачах. Не обязательно, чтобы это были готовые программы, особенно что касается математических вычислений, ведь, скажем, умножение матриц - оно и в Африке умножение матриц: сложность задачи одинакова, выполняется ли она оптимизированными библиотеками EML, BLAS / LAPACK или самописной функцией. Свои идеи оставляйте в комментариях.

Теги:

  • ELBRUS
Добавить метки

Компания ЗАО "МЦСТ" запустила в производство опытную партию универсальных микропроцессоров Эльбрус-8С . Расчётная рабочая частота чипа - 1.3 ГГц, технология производства – 28 нм, вычислительная мощность составляет 250 гигафлопс. Получение готовых образцов микросхем ожидается в октябре 2014 года.

Микропроцессор Эльбрус-8С - полностью российская разработка. Кристалл микропроцессора спроектирован по технологии 28 нм, имеет 8 процессорных ядер с улучшенной 64-разрядной архитектурой Эльбрус 3-го поколения, кэш-память 2-го уровня общим объёмом 4 мегабайта и 3-го уровня объёмом 16 мегабайт.

На базе микропроцессора Эльбрус-8С планируется организовать массовое производство серверов, рабочих станций и других средств вычислительной техники, предназначенных для применения в государственных учреждениях и бизнес-структурах, предъявляющих повышенные требования к информационной безопасности, а также для применения в области высокопроизводительных вычислений, обработки сигналов, телекоммуникации. Инженерные образцы 4-процессорного сервера на базе процессоров Эльбрус-8С с производительностью 1 терафлопс будут изготовлены в конце 2014 года.

Отечественная архитектура Эльбрус разработана в России и имеет ряд уникальных особенностей. К ним относятся:

возможность выполнять на каждом ядре до 25 операций за один машинный такт, что обеспечивает высокую производительность при умеренной тактовой частоте;

технология динамической двоичной трансляции, позволяющая обеспечивать эффективное исполнение приложений и операционных систем, распространяемых в двоичных кодах x86, в том числе в многопоточном режиме;

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

Базовой операционной системой для платформы Эльбрус является ОС "Эльбрус", построенная на базе ядра Linux. Система программирования платформы поддерживает языки С, С++, Java, Фортран-77, Фортран-90.

Источник: sdelanounas.ru

Операционная система Эльбрус

Операционная система (ОС) – самая важная часть программного обеспечения любого вычислительного комплекса (ВК). ОС – комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительного комплекса и прикладными программами, а с другой стороны – предназначены для управления устройствами ВК, вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений.

Компанией МЦСТ для ВК с архитектурой SPARC и «Эльбрус» создана, сопровождается и постоянно развивается операционная система ОС «Эльбрус» . Она основана на базе ядра Linux 2.6.33 . ОС «Эльбрус» обеспечивает многозадачный и многопользовательский режимы работы. Для неё разработаны особые механизмы управления процессами, виртуальной памятью, прерываниями, сигналами, синхронизацией, поддержка тегированными вычислениями.

Для использования ВК серии «Эльбрус» в ряде ответственных систем проделана фундаментальная работа по преобразованию ОС Linux в операционную систему, поддерживающую режим работы в жёстком реальном времени , для чего на базе стандартной библиотеки управления потоками вычислений и синхронизацией libpthread была создана собственная оптимизированная библиотека elpthread . В ходе работы в реальном времени можно устанавливать различные режимы обработки внешних прерываний, планирования вычислений, обменов с дисковыми накопителями и некоторые другие.

В состав ОС «Эльбрус» входят базовые средства поддержки интерфейса пользователей:

  • Средства поддержки интерфейса командной строки (та самая «консоль»). Обеспечивают оператору возможность работы с ВК в текстовом режиме с помощью набора команд и получения текстовых сообщений от операционной системы и запускаемых приложений;
  • Средства архивации для объединения ряда файлов в единый архив или серию архивов (в том числе со сжатием данных), что обеспечивает удобство передачи через каналы связи или хранения;
  • Средства разработки программного обеспечения. Обеспечивают процесс разработки и поддержки программного обеспечения. Это – ассемблеры, трансляторы, компиляторы, компоновщики (редакторы связей), сборщики, препроцессоры, отладчики, текстовые редакторы, библиотеки подпрограмм, средства управления версиями, средства документирования;
  • Средства планирования заданий - позволяют указать операционной системе, какие действия, в какое время и с какой периодичностью необходимо выполнить.

Помимо базовых в интерфейс пользователя введён ряд средств, поддерживающих создание функционального программного обеспечения.

Средства поддержки графического пользовательского интерфейса содержат базовые компоненты графической системы Xorg , а также набор различных вспомогательных библиотек, в том числе GTK + и Qt .

Основой ОС является библиотека. Glibc – (GNU C Library ) – свободно распространяемая библиотека С . Обеспечивает системные вызовы и основные функции, такие как open , malloc ,printf и т.д. Библиотека C используется для всех динамически скомпонованных программ. Glibc используется в системах, на которых работает много разных ОС, и на разных архитектурах. Наиболее часто Glibc используется на x86-машинах с ОС Linux . Также официально поддерживаются архитектуры SPARC и «Эльбрус».

Библиотека glibc , поставляемая в составе ОС Эльбрус, сформирована на основе GNU glibc версии 2.7 . Она состоит из двух частей:

  • заголовочные файлы, которые определяют типы и макрокоманды и объявляют переменные и функции;
  • фактическая библиотека или архив, который содержит определения переменных и функций. Состоит из нескольких файлов, функции в которых объединены по какому то признаку (например, libm.a – архив математических функций).

Для поддержки программ, работающих в защищённом режиме, поставляется компактная библиотека libmcst , обеспечивающая функции работы с памятью и поддержку ввода-вывода на уровне базовой библиотеки libc.

В ядро операционной системы «Эльбрус» встроен комплекс средств защиты информации (КСЗИ) от несанкционированного доступа (НСД) . Полное функционирование КСЗИ ОС «Эльбрус» должно обеспечивать требуемый уровень защиты информации от НСД при работе ВК в составе специализированных автоматизированных систем. КСЗИ реализуется использованием системных вызовов, библиотек подпрограмм, конфигурированием системы.

КСЗИ от НСД ОС «Эльбрус» предоставляет возможность применять средства вычислительной техники (СВТ) серии «Эльбрус» в составе ВК для построения автоматизированных систем с классами защищённости от НСД 3А, 2А, 1Б, 1А и ниже , согласно руководящим документам Гостехкомиссии при президенте РФ. В этом случае СВТ:

а) отвечают требованиям 2-го класса защищённости от НСД РД Гостехкомиссии при президенте РФ;

б) позволяют проводить сертификацию ОПО СВТ по 2-му уровню контроля недекларированных возможностей, в соответствии с РД Гостехкомиссии при президенте РФ

Для поддержки существующих пользователей продолжается сопровождение дистрибутивов ОС «Эльбрус» с ядром Linux 2.6.14 . Помимо ОС «Эльбрус», компанией МЦСТ поставляются и поддерживаются ОС МСВС с ядром Linux 2.4.25 для ВК «Эльбрус-90микро» и ОС МСВС с ядром Linux 2.6.14 для ВК «Эльбрус-3М1». В составе серии ВК «Эльбрус-90микро» поддерживается также операционная система OS_E90 на базе Solaris 2.5.1 .

Работы над архитектурой «Эльбрус» начались в 1986 г. в коллективе Института точной механики и вычислительной техники (ИТМ и ВТ) им. С.А. Лебедева, в котором до этого были созданы советские высокопроизводительные комплексы «Эльбрус-1» и «Эльбрус-2». Разработка вычислительного комплекса «Эльбрус-3», которая велась под руководством Б.А. Бабаяна, была завершена в 1991 г. В этом вычислительном комплексе впервые были воплощены в жизнь идеи явного управления параллелизмом операций с помощью компилятора.

Начавшиеся с 1992 г. экономические изменения в России не позволили разработчикам «Эльбруса-3» завершить наладку комплекса. В том же 1992 г. коллектив разработчиков машин семейства «Эльбрус» выделился в компанию ЗАО «МЦСТ» и начал вести работы над микропроцессорной реализацией архитектуры «Эльбрус».

Архитектура «Эльбрус» - оригинальная российская разработка. Ключевые черты архитектуры «Эльбрус» - энергоэффективность и высокая производительность, достигаемые при помощи задания явного параллелизма операций.

Ключевые особенности архитектуры Эльбрус

В традиционных архитектурах типа RISC или CISC (х86, PowerPC, SPARC, MIPS, ARM), на вход процессора поступает поток инструкций, которые рассчитаны на последовательное исполнение. Процессор может детектировать независимые операции и запускать их параллельно (суперскалярность) и даже менять их порядок (внеочередное исполнение). Однако динамический анализ зависимостей и поддержка внеочередного исполнения имеет свои ограничения: лучшие современные процессоры способны анализировать и запускать до 4-х команд за такт. Кроме того, соответствующие блоки внутри процессора потребляют заметное количество энергии.

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

Компилятор способен анализировать исходный код гораздо тщательнее, чем аппаратура RISC/CISC процессора, и находить больше независимых операций. Поэтому в архитектуре Эльбрус больше параллельно работающих исполнительных устройств, чем в традиционных архитектурах, и на многих алгоритмах она демонстрирует непревзойденную архитектурную скорость.

Возможности архитектуры Эльбрус:

  • 6 каналов арифметико-логических устройств (АЛУ), работающих параллельно.
  • Регистровый файл из 256 84-разрядных регистров.
  • Аппаратная поддержка циклов, в том числе с конвейеризацией. Повышает эффективность использования ресурсов процессора.
  • Программируемое асинхронное устройство предварительной подкачки данных с отдельными каналами считывания. Позволяет скрыть задержки от доступа к памяти и полнее использовать АЛУ.
  • Поддержка спекулятивных вычислений и однобитовых предикатов. Позволяет уменьшить число переходов и параллельно исполнять несколько ветвей программы.
  • Широкая команда, способная при максимальном заполнении задать в одном такте до 23 операций (более 33 операций при упаковке операндов в векторные команды).

Производительность на реальных задачах:

Ниже приведена производительность процессора Эльбрус-2С+ на задачах из пакета SPEC2000 по сравнению с процессорами Intel Pentium-M ULV (1ГГц, кэш-память 1М, 2хDDR-266) и Intel Atom D510 (1,66 ГГц, кэш-память 1М, DDR2-800).

Данные для Intel Pentium-M ULV получены с сайта spec.org, компилятор ICC 9.1. Для замера производительности процессора Intel Atom D510 использовалась собственная сборка тестов SPEC силами сотрудников МЦСТ.

Важно отметить, что правила комитета SPEC запрещают осуществлять модификацию исходных кодов тестов. Практика показала, что архитектура Эльбрус обладает значительным резервом производительности, который можно задействовать путём модификаций исходного кода в критических участках.

Эмуляция архитектуры х86

Еще на этапе проектирования МП Эльбрус у разработчиков было понимание важности поддержки программного обеспечения, написанного для архитектуры Intel х86. Для этого была реализована система динамической (т.е. в процессе исполнения программы, или «на лету») трансляции двоичных кодов х86 в коды процессора Эльбрус. Фактически, система двоичной трансляции создает виртуальную машину, в которой работает гостевая ОС для архитектуры х86. Благодаря нескольким уровням оптимизации удается достичь высокой скорости работы оттранслированного кода (см. диаграммы выше). Качество эмуляции архитектуры х86 подтверждается успешным запуском на платформе Эльбрус более 20 операционных систем (в том числе несколько версий Windows) и сотен приложений.

Защищенный режим исполнения программ

Одна из самых интересных идей, унаследованных от архитектур Эльбрус-1 и Эльбрус-2 - это так называемое защищенное исполнение программ. Его суть заключается в том, чтобы гарантировать работу программы только с инициализированными данными, проверять все обращения в память на принадлежность к допустимому диапазону адресов, обеспечивать межмодульную защиту (например, защищать вызывающую программу от ошибки в библиотеке). Все эти проверки осуществляются аппаратно. Для защищенного режима имеется полноценный компилятор С/С++ и библиотека run-time поддержки.

Даже в обычном, «незащищенном» режиме работы МП Эльбрус имеются особенности, повышающие надежность системы. Так, стек связующей информации (цепочка адресов возврата при процедурных вызовах) отделен от стека пользовательских данных и недоступен для таких вирусных атак, как подмена адреса возврата. Стоит отдельно отметить, что в настоящее время вирусов для платформы «Эльбрус» просто не существует.

Сфера применения микропроцессоров архитектуры Эльбрус
Расширенный температурный диапазон, возможность локализации производства Государственный заказ, промышленные компьютеры, автомобильная электроника

Повышенная защищенность от вирусных атак

Платежные терминалы, сетевые экраны, взломоустойчивые серверы
Высокая производительность на криптографических алгоритмах Модули шифрования, защищенные тонкие клиенты, прочие системы безопасности
Высокая производительность на вычислениях с действительными числами (float, double) Робототехника, авионика, промышленные контроллеры, системы обработки изображений, суперкомпьютеры
Работа под управлением бинарного компилятора в режиме совместимости с архитектурой х86 Интернет-терминалы, маломощные рабочие станции, малогабаритные настольные и встраиваемые компьютеры
Защищенный режим Особо ответственные системы, отладочные стенды

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

Под гордым названием «Эльбрус» вышла серия суперкомпьютеров, которая была разработана советским ученым Всеволодом Сергеевичем Бурцевым (70-80-е ).

Эти компьютеры внесли ряд новшеств в теорию вычислительных машин, такие как суперскалярность (обработку более одной инструкции за один такт), реализацию защищенного программирования с аппаратными типами данных, параллельную обработку нескольких инструкций. Но главной особенностью советских суперкомпьютеров была их ориентация на языки высокого уровня. Советско-американский ученый Владимир Мстиславович Пентковский, участвовавший в разработке «Эльбрус», создал высокоуровневый язык программирования Эль-76.

Кроме усовершенствования сферы советских вычислительных машин, компьютер стал базой для создания 64-разрядных универсальных микропроцессоров «Эльбрус 4-С» и следующего поколения «Эльбрус 8-С». Они разбавили рынок американских производителей Intel, AMD и IBM. Локальная разработка и производство процессоров было обусловлено потребностью найти собственные решения для оборонной отрасли, где применение отечественных устройств более желательно.

История развития

Разработка архитектуры компьютера «Эльбрус» началась в 70-х в ИТМиВТ им. Лебедева. Перед разработчиками стояла задача создать вычислительную систему имеющую производительность 100 млн оп/с. Бурцев занимался системой управления и конструирования ЭВМ и стал главным конструктором проекта.

В 1980 г. «Эльбрус-1» с общей производительностью 15 млн оп/с успешно прошел государственные испытания. Это была первая ЭВМ в Советском Союзе, построенная на базе ТТЛ-микросхем. Особенностью машины стала масштабируемая архитектура, которая поддерживала одновременную работу до 10 процессоров. Оперативная память достигала 64 МБ (220 машинных слова). Организация передачи потоков данных между переферийными устройствами и оперативной памятью осуществлялась с помощью специальных процессоров ввода-вывода. Подобных процессоров в системе могло быть около 4-х и они обладали собственной памятью, работая параллельно с центральным процессором.

«Эльбрус-1» использовался во многих системах военного назначения - ПРО, Центре контроля космического пространства и т.д.

Следующим этапом в разработке компьютера «Эльбрус» стал перенос архитектуры первой модели на новую элементную базу. Таким образом возник «Эльбрус-2», который основывался на базе ЭЛС интегральных схем. Его производительность достигала 125 млн оп/с. Увеличился и объем оперативной памяти - до 144 МБ. Тактовая частота достигала 20 МГц.

В 1985 г. «Эльбрус-2» был запущен в серийное производство. Он применялся в областях, где требовались большие вычисления. Также компьютер активно использовали в оборонной отрасли, в Центре управления космическими полетами и в ядерных исследовательских центрах (в Арзамасе-16, в Челябинске-70). С 1991 г. компьютер работал в системе противоракетной обороны А-135 и на других военных объектах.

Вместе с суперкомпьютерами выпускалась и ЭВМ общего назначения «Эльбрус 1-КБ» (1988 г.). Эти машины пришли на замену БЭСМ-6 с которыми у них существовала полная обратная программная совместимость. Ее дополнили новым режимом работы с увеличенной разрядностью чисел и адресов.

Сравнительная характеристика БЭСМ-6 и «Эльбрус 1-КБ»

Следующим был выпущен «Эльбрус-3», в котором разработчики впервые реализовали «постсуперскалярный» подход. Этот компьютер разрабатывался с 1986 по 1994 гг. сотрудниками ИТМиВТ под руководством советского ученого Бориса Арташесовича Бабаяна.

«Эльбрус-3» не был выпущен в серийное производство, но его архитектура вошла в основу развития микропроцессоров Эльбрус 2000 и Эльбрус-3М1.

Серия Эльбрус было по достоинству оценена советским руководством. Разработчики Бабаян, Бурцев, Бардиж получили премии и ордена. Остальные участники работы также были награждены государственными премиями.

Эра процессоров МЦСТ

Российская компания МЦСТ была основана в 1992 г. на базе коллектива разработчиков «Эльбрус-3». Она стала правопреемником ТОО «Московский центр SPARC-технологий» (отсюда и название МЦСТ). Аббревиатура SPARC пришла от основного партнера МЦСТ американской корпорации Sun Microsystems, продвигающей вычислительные машины с архитектурой SPARC.

МЦСТ производила микропроцессоры с архитектурой SPARC (МЦСТ-R100, МЦСТ-R150, МЦСТ-R500 и МЦСТ-R500S) и на их базе создавали вычислительные системы. Но в 2007 г. вышел одноименный процессор «Эльбрус». Пиковая производительность устройства в 64-разрядном режиме достигала 2,4 GFLOPS. Рабочая тактовая частота была 300 МГц. В процессоре было 75,8 млн транзисторов. Рассеиваемая мощность 6 Вт.

На основе процессора был разработан вычислительный комплекс «Эльбрус-3М1», применявшийся для оборонной отрасли. Этот комплекс предоставлялся с защищенной операционной системой МСВС-Э (Мобильная система Вооруженных Сил), базирующейся на Linux версии 2.6.14. «Эльбрус-3М1» был обратно совместим с первым и вторым «Эльбрусами».

Вычислительный комплекс имел два варианта конструктивного исполнения - серверный, который можно было использовать как настольный и в исполнении CompactPCI (системной шины). В основе серверного варианта лежало устройство вычислителя УВ 3М1. В случае CompactPCI «Эльбрус-3М1» занимал два модуля формата «Евромеханика» 6U. Аппаратура исполнения обоих вариантов оснащалась сетевым оборудованием для сверхскоростных обменов с аналогичными вычислительными комплексами.

В 2010 г. на выставках «ChipEXPO-2010» и Softool общественности была представлена система на кристалле «Эльбрус-S». В данном процессоре увеличилось количество транзисторов - до 218 млн. Также до 500 МГц поднялась тактовая частота и выросла пиковая производительность: до 4 GFLOPS в 64-разрядном и до 8 GFLOPS в 32-разрядном режимах.

Вместе с «Эльбрус-S» был представлен контроллер периферийных интерфейсов (КПИ).

В 2011 г. МЦСТ презентовала двухъядерный процессор следующего поколения «Эльбрус-2С+». Помимо 2 основных ядер (архитектура Эльбрус), работающих на тактовой частоте 500 МГц, в модели присутствовало еще дополнительных 4 ядра встроенного цифрового сигнального процессора (архитектура Мультикор). В процессор был добавлен канал ввода/вывода, с помощью которого возможно подключить еще один КПИ. Также «Эльбрус-2С+» дополнила поддержка памяти DDR2 с эффективной частотой 800 МГц. Выросла производительность процессора - до 28 GFLOPS в 32-разрядном режиме. Количество транзисторов достигло 368 млн.

Разработчики реализовали версию компилятора языка C, чтобы воспроизводить код для ядер DSP и наладить эффективное взаимодействие основной программы на ядрах CPU и действий на DSP.

По расчетам создателей, «Эльбрус-2С+» должен был использоваться в системах цифровой интеллектуальной обработки сигнала (радары, анализаторы изображений и т.д.). Но процессоры оказались лучше адаптированными под гражданские задачи. К примеру, компанией Kraftway была запущена тестовая серия моноблочных компьютеров на базе кристаллов «Эльбрус-2С+».

Процессор «Эльбрус-4С»

В апреле 2014 г. компания представила усовершенствованные четырехъядерные процессоры «Эльбрус-4С».

Технические характеристики «Эльбрус-4С»

В первую очередь стоит обратить внимание на переход производства процессора на 65 нм технологический процесс. Также возросла и тактовая частота, пропускная способность каналов оперативной памяти. Эти и другие улучшения существенно повлияли на рост производительности новых процессоров. Каждое ядро за один такт способно исполнить до 23 операций. В операциях с плавающей запятой пиковая теоретическая производительность четырёх ядер составляет около 50 GFLOPS одинарной точности и 25 GFLOPS двойной точности. Если сравнивать с предыдущей моделью «Эльбрус-2С+», то в 64-разрядном режиме - это более чем в три раза выше. В новом процессоре более сложный кристалл, который содержит 986 млн транзисторов, имеет полезную площадь в 380 мм2.

Специалисты МЦСТ создали собственную операционную систему «Эльбрус» специально под выпущенный процессор. ОС основывается на базе ядра Linux версии 2.6.33. В ее составе насчитывается свыше 3000 программных пакетов (из дистрибутива Debian 5.0) и есть менеджер пакетов. Включен полный набор инструментов разработчика, в том числе и компиляторы оптимизации для языков программирования высокого уровня С, С++, Фортран-77 и Фортран-9.

ОС «Эльбрус» была сертифицирована по второму классу защиты от несанкционированного доступа и второму уровню контроля за недекларированными возможностями. Но компьютеры на базе процессоров «Эльбрус-4С» работают и с версиями ОС Windows.

Тандем процессора и настольного компьютера

Одним из проектов компании стала разработка первого российского настольного компьютера на базе процессора «Эльбрус-4С». Он получил название «АРМ Эльбрус-401» (где АРМ расшифровывается, как автоматизированное рабочее место). Модель разработана под офис в корпусе стандарта MiniTower. Но может применяться в разных сферах с повышенными требованиями к информационной безопасности.

У компьютера есть технологический процесс 65 нм с тактовой частотой 800 Гц, порты SATA-2 и USB 2.0, предустановленный SSD 120 ГБ с интерфейсом mSATA и поддержкой DDR3-1600 с ECC. Базовая конфигурация предлагается 24 ГБ оперативной памяти (с возможностью расширения до 96 ГБ). Среди особенностей архитектуры «АРМ Эльбрус-401» можно выделить следующие: наличие 6 параллельно работающих каналов арифметико-логических устройств; регистровый файл из 256 84-разрядных регистров; аппаратную поддержку циклов; поддержку спекулятивных вычислений и однобитовых предикатов; команду, которая может задать в одном такте до 23 операций при максимальном заполнении. Также в компьютер установлена видеокарта AMD Radeon серии 6000.

Процессор нового поколения - «Эльбрус-8С»

Разрабатывает процессор «Эльбрус-8С» компания МЦСТ при участии Институт электронных управляющих машин (ИНЭУМ) им. И.С. Брука. Архитектура, схемотехника и топология микропроцессора были созданы российскими специалистами. У процессора восемь ядер с улучшенной 64-разрядной архитектурой «Эльбрус». Тактовая частота достигает 1,3 ГГц, объем кеш-памяти второго и третьего уровня - 4 и 16 МБ. Предполагаемая производительность достигает 250 GFLOPS.

Технические характеристики «Эльбрус-8С»

У компьютера присутствует своя архитектура «Эльбрус», которая разработана в ЗАО «МЦСТ». Векторные ускорители систем команд помогают сделать шифрование и обработку сигналов более быстрым.

Взаимодействие аппаратной части с ОС происходит через собственный микрокод BIOS. Процессор совместим с дистрибутивами Linux, FreeBSD, QNX, Windows XP, но рекомендованная операционная система «Эльбрус» на базе ядра Linux 2.6.33. Применение специализированных средств разработки (оптимизирующие компиляторы с языков C и C++, Фортран, Java и т.д.) дает возможность оптимизировать код программы с учетом архитектуры «Эльбрус».

омпанией уже разрабатываются служебные программы и вспомогательные компоненты, оптимизированные для работы на процессорах. Это все - средства для работы с сетью и периферийными устройствами (утилиты, библиотеки общего назначения, сервисы, поддержка баз данных, графическая подсистема).

«Эльбрус-8С» должен работать в паре с КПИ 2 - контроллером периферийных интерфейсов российского производства.