История появления и тесты отечественной архитектуры процессоров "Эльбрус"

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com

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


Проблемы процесса глобализации

Сейчас мир переживает глобализацию.

Глобализация касается следующих сфер:

  1. Финансовые;
  2. политические;
  3. культурная интеграция и стандартизация;
  4. сфера вычислительной техники и связи

Глобализация обладает плюсами:

  1. Компания ответственно управляет качеством и культурой производства с полным циклом замкнутого цикла.
  2. В некоторых компаниях есть возможность создавать ПО, которое будет полностью соответствовать стандартам производителя, что позволяет упростить вопросы совместимости и поддержки ПО.
  3. Большие объемы производства, в результате чего снижена стоимость и цена на продукцию потребителям.

Глобализация обладает недостатками:

  1. Угрозой национальной безопасности из-за отсутствия доступа к компонентам и технологиям, которые применялись в военных и государственных секторах;
  2. Применение санкций на крупные фирмы по политическим причинам;
  3. Задержки поставок и рост цен на продукцию;
  4. Недостаток высококвалифицированных и научных сотрудников. 

Все эти проблемы решаются с помощью создания и реализации внутренних разработок, как это было с ЭВМ Эльбрус.

Какими были ЭВМ Эльбрус

Эльбрус называют архитектуру микропроцессоров и созданные на них ЭВМ.

В 1973 году на территории СССР началась разработка ЭВМ Эльбрус академиком В.С. Бурцевым.

Всеволод Сергеевич Бурцев

В 1980 году была создана ЭВМ Эльбрус-1. В Эльбрус-1 было 10 ядер со скоростью 12 млн. IOPS, ОЗУ 64 Мбайт.

Суперкомпьютер Эльбрус-1

В 1985 году была создана ЭВМ Эльбрус-2. Эльбрус-2 имел также 10 ядер, но с производительностью 125 млн IOPS, ОЗУ 144 Мбайт.


Суперкомпьютер Эльбрус-2

Небольшое дополнение про процессоры в ЭВМ Эльбрус-1 и Эльбрус-2

У "старых" Эльбрус-1 и Эльбрус-2 были процессоры в виде шкафов. 

ЭВМ "Эльбрус-1" и "Эльбрус-2" нашли свое применение в радиолокационных станциях, ядерными центрами, а также в центре управления космическими полетами.

В третьей ЭВМ Эльбрус-3, в которой планировалось увеличение ядер до 16 и улучшение других характеристик, из-за распада СССР, так и не увидел свет.

Вынужденное сотрудничество с Американским партнером

В 1992 году на основе прежнего высококвалифицированного персонала была создана ТОО "МЦСТ", которое в настоящее время называется АО "МЦСТ".

МЦСТ переводится так: Московский Центр Sparc Технологий.

До 2007 года они делали следующие ЭВМ на архитектуре Sparc:

  1. МЦСТ-R100;
  2. МЦСТ-R150;
  3. МЦСТ-R500;
  4. МЦСТ-R500S.

Благодаря сотрудничеству с 1992 - 2007 гг компания МЦСТ дожила до наших дней, научилась современному процессоростроению, дополнила свой и так огромный опыт в программной части.

При этом МЦСТ не забыли архитектуру Эльбрус и разработки на их основе.

Современное развитие архитектуры Эльбрус

В 2008 году у МЦСТ  появляется процессор "Эльбрус", который является прямым наследником Эльбрус-1 и Эльбрус-2 со следующими характеристиками: 

Технологический процесс 130 НМ
Тактовая частота 300 МГц
Количество ядер 1
Пиковая производительность 2,4 Gflops в режиме 64 бит
Кэш-память первого уровня (L1) 64Кб банные + 64 Кб команды
Кэш-память второго уровня (L2) 256 Кб
Размеры кристалла 189 мм2
Количество транзисторов 75,8 млн
Мощность 6 Вт

Многие могут задать следующие вопросы:


Что в этих процессорах "Эльбрус" специфичного?

Чем они отличаются от других процессоров представленных на рынке? 

  1. Процессоры Эльбрус из своих архитектурных особенностей традиционно не имеет вирусов и уязвимостей, как например Intel с AMD со своими Meltdown и Spectre;
  2. Система команд процессора Эльбрус имеет много общего с системой команд ЭВМ Эльбрус. Такой тип команд называется "широким командным словом" или VLIW. Идея, которая стоит за микропроцессором Эльбрус с его широким командным словом – это по возможности упростить устройство аппаратуры и перенести большую часть сложности построения всего вычислительного процессора в компилятор. Поэтому в Эльбрусах нет предсказателя переходов, нет внеочередного исполнения команд, следовательно процессор исполняет код как есть.
  3. Если программа написана в родном для архитектуры Эльбрус режиме и использует ее преимущества, то процессоры Эльбрус могут показать отличную производительность

  Характеристики процессоров архитектуры "Эльбрус" выглядят следующим образом:

Процессор Эльбрус-4С Эльбрус-8С (Архитектура Эльбрус 4 поколения или e2k-V4) Эльбрус-8СВ (актуальный процессор на сегодня, архитектура Эльбрус 5 поколения или e2k-V5) Эльбрус-16С (черновой вариант с ошибками в работе, архитектура Эльбрус 6 поколения или e2k-V6)
Технологический процесс 65 нм 28 нм 28 нм 16 нм
Год выпуска 2014 2016 2020 Неизвестно, но говорят в конце 2022 года
Тактовая частота 800 МГц 1000 - 1300 МГц 1500 МГц Присутствует аналог турбо-буста от Intel и AMD. Частота изменяется от 400 МГц до 2000 МГц. Для управления частотой было встроено RISC-V ядро
Количество ядер 4 8 8 16
Количество операций за один такт на одном ядре (IPC) 23 25 50 50
Пиковая производительность в режиме 64 бит 25 Gflops 125 Gflops 288 Gflops 768 Gflops
Кэш-память первого уровня (L1) 64 Кб данные + 128 Кб команды 64 Кб данные + 128 Кб команды 64 Кб данные + 128 Кб команды 64 Кб данные + 128 Кб команды
Кэш-память второго уровня (L2) 8 Мб 4Мб 4Мб 16Мб
Кэш-память третьего уровня (L3) - 16 Мб 16 Мб 32 Мб с 60 битыми линиями кэша
Контроллер памяти 3 канала DDR3 1600 MHz 4 канала DDR3 1600 MHz 4 канала DDR4 2400 MHz 8 каналов DDR4 3200 MHz
Площадь кристалла 380 мм2 321 мм2 350 мм2
Потребляемая мощность 45 Вт 80 Вт 90 Вт 110 Вт
Количество транзисторов 986 млн 2,73 млрд 3,5 млрд 12 млрд

Вычислительная производительность процессора Эльбрус 8СВ превосходит производительность первого микропроцессора Эльбрус более чем в 300 раз.

Что нового привнесла архитектура e2K V6 (архитектура эльбрус 6 поколения) по сравнению с архитектурой e2k V4 (архитектура Эльбрус 4 поколения). Эльбрус 16С против Эльбрус 8С:

  1. поддержка 8 каналов DDR4 3200 MHz;
  2. система на кристалле (не имеет КПИ);
  3. аппаратная поддержка полной виртуализации в нативе;
  4. полная поддержка виртуализации в кодах x86 (это должно помочь в бинарной трансляции);
  5. дополнительное улучшение работы с невыровненными данными;
  6. SIMD 128 (которые появились в Эльбрус 8СВ);
  7. поддержка инструментирования кода для динамической компиляции (это должно помочь как для нативного кода, для и для бинарной трансляции);
  8. поддержка PCI-Express 3.0 X16/32 (до 60 Гб/с). Можно делать SLI/ Crossfire;
  9. появился аналог турбо-буста. Минимальная тактовая частота 400 МГц, максимальная 2000 МГц.

Что разрабатывается в России?

  1. система команд;
  2. логика ядер без всяких там лицензий. То есть с ARM, MIPS, x86 и прочими другими архитектурами Эльбрус не имеет ничего общего;
  3. топология микросхем;
  4. кэш-память;
  5. контроллер памяти;
  6. периферийные контроллеры, которые обеспечивают работу каналов ввода-вывода;
  7. 2D видеоядро, которое служит, чтобы выводить картинку на монитор;
  8. бинарный транслятор Lintel (при этом без нарушений патентов Intel и AMD. На это спсобен не каждый. Это настоящий подвиг);
  9. операционные системы: Astra Linux, ALT Linux, Эльбрус-OS (возможно, есть еще какие нибудь).

Компания МЦСТ производит материнские платы на базе своих процессоров, так и готовые компьютеры и специальные вычислительные комплексы "под ключ".

Есть то, что покупается за рубежом

  1. USB 3.0;
  2. 3D видеоядро + декодирование видео.

Где применяются микропроцессоры Эльбрус?

Успешные проекты на базе СВТ Эльбрус

  1. ФГБУ НИИ Восход: ЦОД для ГИС "МИР" для обработки паспортно-визитовых документов нового поколения (ПВДНП) с программной инфраструктурой и сервисом, 24х7.
  2. Банк России: прототипы Резервного решения платежной системы, транспортного шлюза, прототип цетра обмена сообщениями, системы передачи финансовых сообщений
  3. МВД России: Серверы Эльбрус для ЦАФАП и для дактилоскопического анализа
  4. Россети: Применение для цифровой подстанции (РЗА) ("Борская" и "Семеновская")
  5. РЖД: Использование ВК Эльбрус для управления стрелочным хозяйством. Подготовка к использованию ВК Эльбрус как тонких клиентов
  6. ПФР России: Использование СУБД Postgre SQL в продукционном контуре.
  7. Применяются в моноблоках, ноутбуках, планшетах, системах хранения данных и так далее.

Часть 4. Тесты, тесты, тесты, а также проблемы и нюансы некоторых.

И на этой прекрасной ноте нужно переходить к тестам. Но не так быстро, потому что все не так просто. Обо всем по порядку.

Нюансы тестирования

Процессор Эльбрус 16С на данным является инженерным образцом (по простому – это черновой вариант Эльбрус-16С) с большим количеством ошибок в работе.

Ошибки следующие:

  1. кэш-память второго и третьего уровней в ошибках. Вместо заявленных 48 МБ у L2 и L3, там всего 32 Мб, остальное в ошибках;
  2. контроллер памяти работает некорректно. Вместо заявленных DDR4 3200, там всего DDR4 2400;
  3. проблемы c PCI-Express 3.0 при использовании внешних видеокарт;
  4. сама материнская плата имеет некоторые нюансы. Скорее всего МЦСТ придется менять схемотехнику материнской платы перед заменой процессора;
  5. Сам бинарный транслятор Lintel очень плохо работал с Эльбрус 16С. Причем непонятно - это баги самого бинарного транслятора Lintel, либо так влияют аппаратные проблемы в Эльбрус 16С. Проблемы проявляются следующим образом: либо постоянные вылеты при малейшей нагрузке, либо Lintel зависнет полностью. Если Lintel завис полностью, то спасает только перезагрузка через специальную кнопку. Баг-репорты со всеми симптомами были отправлены в компанию МЦСТ.

Небольшие дополнения про ошибки:

  1. проблемы с PCI Express 3.0 были исправлены в ядре 5.4-3х
  2. по поводу кэш-памяти: кэша заявлено 48M = 16M L2 + 32M L3. 60 битых линий у кэш-памяти 3 уровня (L3)
  3. Насчет контроллера памяти: нужно тщательно выбирать планки памяти. Вот таблица:
Список проверенных модулей ОЗУ DDR4

Это я назвал минимальный список проблем чернового инженерника. Возможно, там проблем еще больше.

Следующие программные нюансы характерные как для Эльбрус 8С, Эльбрус 8СВ, так и для Эльбрус 16С

  1. Также стоит отметить, что для тестов Эльбрус 16С использовались старые билды игр 2020 года, сделанные для Эльбрус 8С, в которых имеются определенные недочеты. Например, из-за ошибки в старой версии компилятора Эльбруса могут случаться вылеты и падение производительности.
  2. Помните я говорил, что у Эльбрусов нет предсказателя переходов и внеочередного исполнения команд. Так как использовались старые билды игр для Эльбрус 8С, следовательно на Эльбрус 16С нативный код игр исполняется как на Эльбрус 8С, только с частотой 2 GHz и 16 ядрами. То есть, новшества архитектуре Эльбрус 6 поколения не учитываются. Это к слову о том, что у Эльбрусов нету обратной совместимости. Как видно, она есть. Это относится к нестабильному в работе Lintel для 16С. Без должной оптимизации, Эльбрус 16С работает не в полную силу.
  3. Стоит отметить старый графический стек, старое ядро Linux 5.4, старый компилятор шейдеров LLVM. Если обновить графический стек, ядро Linux, LLVM заменить на быстрый ACO, обновить компилятор, билды программ и игр, то результат будет еще лучше. Это касается как синтетических (приближенных к реальности) тестов, так и игровых тестов. Прирост к скорости получит как Эльбрус 8С, 8СВ, так Эльбрус 16С.

Небольшие дополнения про драйвер Mesa и ACO:

В ALT Linux присутствует Mesa 20.3.5 с ACO 

 Кстати да, видеокарты от AMD запускаются в нативном режиме с Эльбрусами без "Б". Камень в огород NVIDIA.

Теперь к синтетическим тестам

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

Выражается благодарность: 

  1. EntityFX за сравнительные тесты Эльбрус 8С, 8СВ, инженерного 16С;
  2. тем, кто участвовал в конференции Elbrus Tech Day
  3. Elbrus PC Play за игровые тесты как в бинарной трансляции, так и в нативном исполнении

Сравнение буду проводить с Ryzen 7 4800H @ 1700 Мгц (как в играх, так и в некоторой синтетике). Когда выйдет Эльбрус 32С и выше, то такую поблажку делать не буду.

  • GeekBench 5 (RTC – Эмуляция X86)
Эльбрус 8С (Эмулятор) Эльбрус 8СВ (эмулятор) Эльбрус 16С (инженерник с ошибками в работе) (эмулятор) I7 2600 (Native) Ryzen 7 4800H @ 1700 MHz (мой рабочий ноутбук) (Native) I5 2320 (NATIVE) Phenom II X3 720 (NATIVE) Phenom II X4 960T (NATIVE) Phenom II X6 1100T (NATIVE) FX 8150 (NATIVE) FX 8350 (NATIVE) Xeon X3440 (NATIVE) Xeon E5645 (NATIVE) Xeon X5650 (NATIVE) Ryzen 3 1300X (NATIVE) I5 4590 (NATIVE) I5 4400 (NATIVE) I3 6100 (NATIVE) I3 7350K @ 4200 MHz (NATIVE)
Single: 140 Single: 159 Single: 209 Single:  720 Single: 509 Single: 632 Single: 377 Single: 396 Single: 517 Single: 511 Single: 566 Single: 452 Single: 463 Single: 503 Single: 886 Single: 867 Single: 777  Single: 888 Single: 1202
Multi: 937 Multi: 1100 Multi: 2821 Multi: 2845 Multi: 3922 Multi: 2041 Multi: 981 Multi: 1270 Multi: 2510 Multi: 2391 Multi: 2777 Multi: 1795 Multi: 2924 Multi: 3062 Multi: 2869 Multi: 2800 Multi: 2485 Multi: 1949 Multi: 2670
  • Пакет Blender (Native, не до конца оптимизирован под Эльбрусы). В качестве сцены была выбрана сцена с процессором Ryzen
Эльбрус 8С 2 мин 52 с
Эльбрус 8СВ 2 мин 32с
I7 2600 1 мин 20с
Эльбрус 16С 1 мин 08 с
Ryzen 7 4800H @ 1700 MHz (на всех потоках) 1 мин 02 с
  • Результаты замера производительности нейросетевой архитектуры Unet для решения задач сегментации на Эльбрус 4С, Эльбрус 8С, Эльбрус 8СВ, AMD Ryzen Threadripper 3970X

Unet (вход 256 на 256). Замеры для одного ядра. (NATIVE)

Эльбрус 4С 4,45 с
Эльбрус 8С 2,45 с
Эльбрус 8СВ 0,81 с
Ryzen Threadripper (до 4500 МГц) 0,61 с
  • Производительность SoQoL (Native)

Дальнейший рост показателей блокируется пропускной способностью HDD

Сценарий:

TPC-C от HammerDB

200000 транзакций в минуту

Тест системы хранения в памяти:

- Эльбрус 8С: 2120000 операций в секунду

- Intel Xeon E5-2630 V4: 2757000 операций в секунду

В пересчете операций за один такт – Эльбрус эффективнее интела в 1,5 раза

Скорее всего, очень сильно влияет память DDR3 1600 (4 канала) одноранк у Эльбруса, а у Intel DDR4 2400.

Многие  скажут: "так разгони". Только контроллер памяти Эльбруса 8С по другому жить не умеет. DDR3 1600 4 канала и точка. 

  • Производительность в сверточных сетях на процессоре Эльбрус 8С. Внимательными будьте на дорогах. Через камеры следит Эльбрус! (NATIVE)

Пример умножения матриц на 8 ядрах процессора Эльбрус 8С

Платформа ГосНИИАС Библиотека EML (МЦСТ)
1024x1024x1024 67,5% 53,9%
2048x2048x2048 80,25% 68,25%
4016x4016x4016 82,25% 61,37%

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

          Такой уровень результатов позволяет ГосНИИАС гарантировать большую скорость работы сверточных нейронных сетей на "Эльбрусах"

  • Результаты тестов системы хранения данных (СХД) Аэродиск Восток 2 Э12 (Эльбрус 8С, ядро 5.4). (NATIVE)
100_read_4k_sequential (Эльбрус 8С) 100_write_4k_sequential (Эльбрус 8С) 100_read_4k_sequential (Intel Xeon E5-2603 V4) 100_write_4k_sequential (Intel Xeon E5-2603 V4)
IOPS: 1416034 IOPS: 703596 IOPS: 761000 IOPS: 443000
Latency (msec): 11,5 ms Latency (msec): 23,2 ms Latency: 4,6 ms Latency: 5,2 ms
Утилизация CPU: 69% Утилизация CPU: 71% Утилизация CPU: 68% Утилизация CPU: 74%
100_read_4k_random (Эльбрус 8С) 100_write_4k_random (Эльбрус 8С) 100_read_4k_random (Intel Xeon E5-2603 V4) 100_write_4k_random (Intel Xeon E5-2603 V4)
IOPS: 118302 IOPS: 84154 IOPS: 201000 IOPS: 87000
Latency (msec): 8,5 ms Latency (msec): 3 ms Latency: 1,2 ms Latency: 3 ms 
Утилизация CPU: 88% Утилизация CPU: 93% Утилизация CPU: 65% Утилизация CPU: 72%
100_read_128k_sequential (Эльбрус 8С) 100_write_128k_sequential (Эльбрус 8С) 100_read_128k_sequential (Intel Xeon E5-2603 V4) 100_write_128k_sequential (Intel Xeon E5-2603 V4)
BW/MB/s: 5764 BW/MB/s: 2713 BW/MB/s: 2913 BW/MB/s: 1930
Latency: 0,3 ms Latency: 11,3 ms Latency: 5,1 ms Latency: 6,5 ms
Утилизация CPU: 54% Утилизация CPU: 74% Утилизация CPU:79% Утилизация CPU: 88%

В тестирование последовательной нагрузки с большими блоками обе СХД показали сравнимые результаты, однако задержки системы на «Эльбрусах» оказались в десять (на порядок) раз меньше, чем у аналога на процессорах Intel (0,4/0,5 мс против 5,1/6,5 мс, соответственно), а есть сценарии, где Intel быстрее.

Скорее всего, очень сильно влияет память DDR3 1600 (4 канала) одноранк у Эльбруса, а у Intel DDR4 2400. 

Многие скажут: "так разгони". Только контроллер памяти Эльбруса 8С по другому жить не умеет. DDR3 1600 4 канала и точка. 

  • CPU MinerD (NATIVE, но не до конца оптимизировано под Эльбрус)

Первый сценарий: ./minerd --benchmark -a sha256d

Эльбрус 8СВ Эльбрус 16С Core i5-2500K
thread 7: 34198012 hashes, 6840 khash/s thread 7: 44098544 hashes, 8820 khash/s thread 0: 26798032 hashes, 5307 khash/s
Total: 54714 khash/s Total: 141104 khash/s Total: 21226 khash/s

Второй сценарий: ./minerd --benchmark -a scrypt

Эльбрус 8СВ  Core i5-6500 3.20GHz: Эльбрус 16C (оптимизирован под e2k-v5) Core i7-9700K
thread 0: 4096 hashes, 8.50 khash/s thread: 19.54 khash/s thread 0: 4096 hashes, 11.52 khash/s thread 7: 131280 hashes, 26.26 khash/s
Total: 68.24 khash/s total 78.26 khash/s Total: 183.01 khash/s Total: 211.68 khash/s
  • SuperPI (один поток)
Эльбрус 4С Эльбрус 8С Эльбрус 8СВ Эльбрус 16С Ryzen 7 4800H @ 1700 MHz Core i7 2600
10,18 с 5,20 с 3,76 с 2, 77 с 2,50 с 1,81 с
  • 7-zip benchmark (NATIVE)
Эльбрус 16С Ryzen 7 4800H @ 1700 MHz Эльбрус 8СВ Эльбрус 8С
Compress: 26039 Compress: 32591 Compress: 9975 Compress: 8736
Decompress: 44040 Decompress: 40056 Decompress: 14353 Decompress: 12994

Нативные игровые тесты. Эльбрус 8С, инженерник с ошибками в работе Эльбрус 16С против Ryzen 7 4800H @ 1700 MHz. Билды 2020 года для Эльбрусов.

Нативных игр будет несколько:

  1. War Thunder
  2. Enlisted
  3. Half-Life 1 (Xash3D)
  4. CRSED F.O.A.D
  5. SuperTuxKart
  6. Return To Castle Wolfenstein

Настройки графики были везде Максимальные, а разрешение 1080 рублей (1920х1080)

Видео-тест. Эльбрус 8С, Эльбрус 16С vs Ryzen 7 4800H @ 1700 MHz. Эльбрус 16С работает не в полную силу. Смотри нюансы тестирования!

P.S для некоторых комментаторов: у меня будет единственная статья про Эльбрусы и она будет дополняться новыми тестами. Лучше бы ответили на следующие вопросы:

  1. что за карта используется в тестах на Эльбрусах в демке War Thunder
  2. как снять лок с Return To Castle Wolfenstein, Quake 3 

Я с радостью дополню тесты!

Нативные тесты показаны (хоть и не все)! Теперь на страже успеваемости будет эмулятор x86-64 приложений Lintel. 

В сравнении производительности эмулятора Lintel будут принимать участие следующие процессоры:

  1.  i5 2320 (Stock) (Native)
  2. Phenom II x3 720 (с CPU/NB 2350, HT 2350, DDR2 626 Dual Rank Dual Channel) (Native)
  3. Ryzen 7 4800H @ 1700 MHz (Native)
  4. Phenom II X4 955
  5. Эльбрус 8С (Эмулятор Lintel 4.2)
  6. Эльбрус 16С (Эмулятор Lintel 4.2). О проблемах чернового инженерника и линтела для 16С смотрите в нюансах тестирования.

Можно было бы приступить к видео-сравнению Эльбруса в эмуляции против нативных Intel, AMD, а потом в выводах сказать мол "Русские опять создали говнопроцессор" (как делают некоторые. Не буду тыкать пальцем), но я так делать не буду!

Нужно пояснить этим некоторым за работу Lintel.

Как работает бинарный компилятор?

В процессе своей работы бинарный компилятор транслирует коды x86/ x86-64 (исходные коды) в функционально эквивалентные им коды процессора семейства Эльбрус (целевые коды), в последствии исполняя их на вычислительной машине.

Существует четыре уровня трансляции:

  1. интерпретатор
  2. шаблонный транслятор
  3. быстрый регионный компилятор
  4. оптимизирующий регионный компилятор

Любой новый код x86/ x86-64 (исполняемый впервые) транслируется интерпретатором.

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

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

Уровни трансляции различаются временем: 

  1. шаблонный транслятор создает не очень качественный код, но делает это очень быстро;
  2. быстрый регионный компилятор по своим характеристикам находится между шаблонным транслятором и оптимизирующим регионным компилятором;
  3. оптимизирующий регионный компилятор хоть и требует значительного времени на проведение трансляции, но на выходе дает код, максимально использующий все преимущества архитектуры Эльбрус.

Для работы бинарного компилятора необходимо наличие минимум одного процессора исполнения, максимально допустимое их количество на единицу меньше общего количества процессорных ядер, которыми располагает вычислительная машина.

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

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

Параметр "Установка типа процессора" определяет результат работы команды "cpuid" - при ее исполнении будет "показан" либо процессор Intel, например Core 2 Duo E7400; Intel Xeon, либо процессор семества Эльбрус. Изменение типа процессора может привести к неработоспособности некоторых операционных систем и программ.

После такого разъяснения становится ясно, почему процессоры Эльбрус в эмуляции x86/ x86-64 приложениях имеют ниже производительность, чем у нативных Intel и AMD. Это совсем не удивительно! Кстати да, от Proton и DXVK толку не будет, потому что Эльбрусу нужно и так проходить четыре круга производственного ада, а тут еще пятый круг в лице Proton, DXVK некоторые пытаются добавлять. Ситуация будет еще хуже!

Помимо бинарного транслятора Lintel, двоичный транслятор приложений RTC.

В чем разница между Lintel и RTC?

Бинарный транслятор Lintel похож на запуск виртуальной машины (с той лишь разницей, что транслятор с гостевой системой занимают весь компьютер монопольно), а RTC — на запуск контейнера в изолированном окружении chroot. Если проводить параллели с популярным эмулятором Qemu, то Lintel — это аналог qemu-system-x86_64, а RTC — это qemu-x86_64. Есть еще один аналог от Apple - Rosetta.

RTC, позволяет запускать на компьютере архитектуры Эльбрус под управлением операционной системы «Эльбрус Линукс» (или иной ОС семейства Linux) прикладные программы для Linux в машинных кодах x86 или x86-64 — например, 1С:Предприятие или Oracle Database — без перекомпиляции из исходных текстов.

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

Так как все игровые тесты были проведены именно в Lintel, следовательно его и будем использовать.

Начнем с бенчмарков:

  • Crystal Mark 2004 (В режиме RTC: x86 -> e2k трансляция)
CPU Threads Frequency ALU FPU MEM R (Mb/s) MEM W (Mb/s) Anounced
AMD Phenom II X4 965 (Agena) (NATIVE) 4 3400 MHz 59098 56272 11162 5973 2009
Core i3-4130 (NATIVE) 4 3400 MHz 54296 39163 19450 9269 2013
Elbrus-8C RTC-x86 (эмулятор) 8 1300 MHz 65817 29977 49800 7945 2016
Elbrus-8CB RTC-x86 (эмулятор) 8 1500 MHz 77481 37972 62100 13940 2018
Elbrus-16C RTC-x86 (эмулятор) 16 2000 MHz 207936 68149 118931 12969 2021
Elbrus-12C RTC-x86 (эмулятор) 12 2000 MHz 157496 59063 89785 32781 2022
I7 2600 (NATIVE) 8 3400 MHz 95369 71648 19547 9600 2011
Core i9 9900K (NATIVE) 16 3600 MHz 270445 238256  44618 17900  2018
I5 2320 (NATIVE) 4 3100 MHz 61444 38429 38807 12700 2011
Ryzen 7 4800H @ 1700 MHz 16 1700 MHz 117367 70545 25357 10758 2018
  • CPU-Z - инженерник Эльбрус-16С и бинарный транслятор Lintel 4.2 для Эльбрус 16С
Результаты CPU-Z. Инженерник Эльбрус-16С (эмулятор)
Эльбрус-16С (эмулятор) Core i5 2400 (NATIVE) Ryzen 7 4800H @ 1700 MHz (NATIVE) FX 8350 (NATIVE) Ryzen 5 1500X (NATIVE) I5 3470 (NATIVE) I5 4470 (NATIVE) I5 4690 (NATIVE) I5 4590 (NATIVE) AMD A9 9820 (PlayStation 4 Chip) NATIVE AMD RX-8120 (Xbox One CPU) NATIVE Ryzen 3 1200 (NATIVE) Xeon X5650 (NATIVE) Core i7 870 (NATIVE) Core i7 860 (NATIVE) FX 8150 (NATIVE) Phenom II X6 1100T (NATIVE) Xeon E5 2620 V1 (NATIVE) Xeon E5 2620 V3 (NATIVE) Phenom II X3 720 (NATIVE)
Single: 101 Single: 317 Single: 204 Single: 241 Single: 473 Single: 347 Single: 358 Single: 413 Single: 358 Single: 146 Single: 111 Single: 444 Single: 389 Single: 334 Single: 238 Single: 258 Single: 143  Single:  216 Single: 280    Single: 178
Multi: 1463 Multi: 1263 Multi: 2278 Multi: 1543 Multi: 2526 Multi: 1194 Multi: 1361 Multi: 1622 Multi: 1407 Multi: 1113 Multi: 881 Multi: 1758 Multi: 3038 Multi: 1791 Multi: 1282 Multi: 1672 Multi: 923 Multi: 1674 Multi: 2007 Multi: 352 

Инженерник Эльбрус 16С в бинарном трансляторе Lintel 4.2 (не до конца оптимизированном) превосходит AMD A9 9820 (чип Playstation 4/ Playstation 4 Pro), Phenom II X6 1100T, RX-8120 (Xbox One CPU) и приближается к результатам FX 8350.

Вывод таков: релизный Эльбрус 16С в оптимизированном Lintel должен справляться с графикой, аналогичной в Playstation 4. Производительность должна быть выше! 

На примере DOOM 2016 года покажем производительность инженерного образца Эльбрус 16С в эмуляторе Lintel 4.2 (какие проблемы, смотрите в нюансах тестирования).

Поэтому я покажу на примере GTA V и Cyberpunk 2077 все эти проблемы.

Тестирование инженерника Эльбрус 16С (бинарный транслятор Lintel 4.2 против нативных Phenom II X3 720, Phenom II X4 955, Ryzen 7 4800H)

Да, Эльбрус в Эмуляции проиграл (и многие на этом бы остановились и сказали бы, что Русские создали Говнопроцессор), но не все так просто. Вспоминаем, как работает Lintel и тут нужно не смеяться, а руками разводить в изумлении. Еще раз скажу, что Lintel 4.2 для Эльбрус 16С не был оптимизирован и имеет сбои в работе, как и сам инженерник (какие проблемы, смотрите в нюансах тестирования).

Тем более Lintel эмулирует x86-64 инструкции без всяких там лицензий и без нарушения патентов Intel и AMD (Intel и AMD не продают права еще с 90х).

Какова разница между инженерником Эльбрус 16С и Эльбрусом 8С 

Разница между Эльбрус 16С и Эльбрус 8С в 2 раза

Разница между Эльбрус 16С и Эльбрус 8С в 2 раза

Демонстрация проблем Эльбрус 16С и Lintel 4.2 на примере игры GTA V. Баг репорты отправлены в компанию МЦСТ. Поиграли в пре альфа версию, так сказать:

Список использованной литературы:

  1. Elbrus Tech Day
  2. Elbrus PC Play
  3. Статья про инженерник Эльбрус 16С
  4. Документация Lintel 4.2
  5. История микропроцессоров Эльбрус
  6. Про память на Эльбрусах