История появления и тесты отечественной архитектуры процессоров "Эльбрус"
Отечественный процессор «Эльбрус» до недавнего времени был насмешкой в кругах пользователей. Однако новые виды процессоров удивляют своей производительностью всё сильнее и сильнее. Проблемы процесса глобализации, история появления архитектуры процессоров Эльбрус, обзор его характеристик и тесты — всё это мы обсудим в данной статье.
Проблемы процесса глобализации
Сейчас мир переживает глобализацию.
Глобализация касается следующих сфер:
- Финансовые;
- политические;
- культурная интеграция и стандартизация;
- сфера вычислительной техники и связи
Глобализация обладает плюсами:
- Компания ответственно управляет качеством и культурой производства с полным циклом замкнутого цикла.
- В некоторых компаниях есть возможность создавать ПО, которое будет полностью соответствовать стандартам производителя, что позволяет упростить вопросы совместимости и поддержки ПО.
- Большие объемы производства, в результате чего снижена стоимость и цена на продукцию потребителям.
Глобализация обладает недостатками:
- Угрозой национальной безопасности из-за отсутствия доступа к компонентам и технологиям, которые применялись в военных и государственных секторах;
- Применение санкций на крупные фирмы по политическим причинам;
- Задержки поставок и рост цен на продукцию;
- Недостаток высококвалифицированных и научных сотрудников.
Все эти проблемы решаются с помощью создания и реализации внутренних разработок, как это было с ЭВМ Эльбрус.
Какими были ЭВМ Эльбрус
Эльбрус называют архитектуру микропроцессоров и созданные на них ЭВМ.
В 1973 году на территории СССР началась разработка ЭВМ Эльбрус академиком В.С. Бурцевым.
В 1980 году была создана ЭВМ Эльбрус-1. В Эльбрус-1 было 10 ядер со скоростью 12 млн. IOPS, ОЗУ 64 Мбайт.
В 1985 году была создана ЭВМ Эльбрус-2. Эльбрус-2 имел также 10 ядер, но с производительностью 125 млн IOPS, ОЗУ 144 Мбайт.
Небольшое дополнение про процессоры в ЭВМ Эльбрус-1 и Эльбрус-2
У "старых" Эльбрус-1 и Эльбрус-2 были процессоры в виде шкафов.
ЭВМ "Эльбрус-1" и "Эльбрус-2" нашли свое применение в радиолокационных станциях, ядерными центрами, а также в центре управления космическими полетами.
В третьей ЭВМ Эльбрус-3, в которой планировалось увеличение ядер до 16 и улучшение других характеристик, из-за распада СССР, так и не увидел свет.
Вынужденное сотрудничество с Американским партнером
В 1992 году на основе прежнего высококвалифицированного персонала была создана ТОО "МЦСТ", которое в настоящее время называется АО "МЦСТ".
МЦСТ переводится так: Московский Центр Sparc Технологий.
До 2007 года они делали следующие ЭВМ на архитектуре Sparc:
- МЦСТ-R100;
- МЦСТ-R150;
- МЦСТ-R500;
- МЦСТ-R500S.
Благодаря сотрудничеству с 1992 - 2007 гг компания МЦСТ дожила до наших дней, научилась современному процессоростроению, дополнила свой и так огромный опыт в программной части.
При этом МЦСТ не забыли архитектуру Эльбрус и разработки на их основе.
Современное развитие архитектуры Эльбрус
В 2008 году у МЦСТ появляется процессор "Эльбрус", который является прямым наследником Эльбрус-1 и Эльбрус-2 со следующими характеристиками:
Технологический процесс | 130 НМ |
Тактовая частота | 300 МГц |
Количество ядер | 1 |
Пиковая производительность | 2,4 Gflops в режиме 64 бит |
Кэш-память первого уровня (L1) | 64Кб банные + 64 Кб команды |
Кэш-память второго уровня (L2) | 256 Кб |
Размеры кристалла | 189 мм2 |
Количество транзисторов | 75,8 млн |
Мощность | 6 Вт |
Многие могут задать следующие вопросы:
Что в этих процессорах "Эльбрус" специфичного?
Чем они отличаются от других процессоров представленных на рынке?
- Процессоры Эльбрус из своих архитектурных особенностей традиционно не имеет вирусов и уязвимостей, как например Intel с AMD со своими Meltdown и Spectre;
- Система команд процессора Эльбрус имеет много общего с системой команд ЭВМ Эльбрус. Такой тип команд называется "широким командным словом" или VLIW. Идея, которая стоит за микропроцессором Эльбрус с его широким командным словом – это по возможности упростить устройство аппаратуры и перенести большую часть сложности построения всего вычислительного процессора в компилятор. Поэтому в Эльбрусах нет предсказателя переходов, нет внеочередного исполнения команд, следовательно процессор исполняет код как есть.
- Если программа написана в родном для архитектуры Эльбрус режиме и использует ее преимущества, то процессоры Эльбрус могут показать отличную производительность
Характеристики процессоров архитектуры "Эльбрус" выглядят следующим образом:
Процессор | Эльбрус-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С:
- поддержка 8 каналов DDR4 3200 MHz;
- система на кристалле (не имеет КПИ);
- аппаратная поддержка полной виртуализации в нативе;
- полная поддержка виртуализации в кодах x86 (это должно помочь в бинарной трансляции);
- дополнительное улучшение работы с невыровненными данными;
- SIMD 128 (которые появились в Эльбрус 8СВ);
- поддержка инструментирования кода для динамической компиляции (это должно помочь как для нативного кода, для и для бинарной трансляции);
- поддержка PCI-Express 3.0 X16/32 (до 60 Гб/с). Можно делать SLI/ Crossfire;
- появился аналог турбо-буста. Минимальная тактовая частота 400 МГц, максимальная 2000 МГц.
Что разрабатывается в России?
- система команд;
- логика ядер без всяких там лицензий. То есть с ARM, MIPS, x86 и прочими другими архитектурами Эльбрус не имеет ничего общего;
- топология микросхем;
- кэш-память;
- контроллер памяти;
- периферийные контроллеры, которые обеспечивают работу каналов ввода-вывода;
- 2D видеоядро, которое служит, чтобы выводить картинку на монитор;
- бинарный транслятор Lintel (при этом без нарушений патентов Intel и AMD. На это спсобен не каждый. Это настоящий подвиг);
- операционные системы: Astra Linux, ALT Linux, Эльбрус-OS (возможно, есть еще какие нибудь).
Компания МЦСТ производит материнские платы на базе своих процессоров, так и готовые компьютеры и специальные вычислительные комплексы "под ключ".
Есть то, что покупается за рубежом
- USB 3.0;
- 3D видеоядро + декодирование видео.
Где применяются микропроцессоры Эльбрус?
Успешные проекты на базе СВТ Эльбрус
- ФГБУ НИИ Восход: ЦОД для ГИС "МИР" для обработки паспортно-визитовых документов нового поколения (ПВДНП) с программной инфраструктурой и сервисом, 24х7.
- Банк России: прототипы Резервного решения платежной системы, транспортного шлюза, прототип цетра обмена сообщениями, системы передачи финансовых сообщений
- МВД России: Серверы Эльбрус для ЦАФАП и для дактилоскопического анализа
- Россети: Применение для цифровой подстанции (РЗА) ("Борская" и "Семеновская")
- РЖД: Использование ВК Эльбрус для управления стрелочным хозяйством. Подготовка к использованию ВК Эльбрус как тонких клиентов
- ПФР России: Использование СУБД Postgre SQL в продукционном контуре.
- Применяются в моноблоках, ноутбуках, планшетах, системах хранения данных и так далее.
Часть 4. Тесты, тесты, тесты, а также проблемы и нюансы некоторых.
И на этой прекрасной ноте нужно переходить к тестам. Но не так быстро, потому что все не так просто. Обо всем по порядку.
Нюансы тестирования
Процессор Эльбрус 16С на данным является инженерным образцом (по простому – это черновой вариант Эльбрус-16С) с большим количеством ошибок в работе.
Ошибки следующие:
- кэш-память второго и третьего уровней в ошибках. Вместо заявленных 48 МБ у L2 и L3, там всего 32 Мб, остальное в ошибках;
- контроллер памяти работает некорректно. Вместо заявленных DDR4 3200, там всего DDR4 2400;
- проблемы c PCI-Express 3.0 при использовании внешних видеокарт;
- сама материнская плата имеет некоторые нюансы. Скорее всего МЦСТ придется менять схемотехнику материнской платы перед заменой процессора;
- Сам бинарный транслятор Lintel очень плохо работал с Эльбрус 16С. Причем непонятно - это баги самого бинарного транслятора Lintel, либо так влияют аппаратные проблемы в Эльбрус 16С. Проблемы проявляются следующим образом: либо постоянные вылеты при малейшей нагрузке, либо Lintel зависнет полностью. Если Lintel завис полностью, то спасает только перезагрузка через специальную кнопку. Баг-репорты со всеми симптомами были отправлены в компанию МЦСТ.
Небольшие дополнения про ошибки:
- проблемы с PCI Express 3.0 были исправлены в ядре 5.4-3х
- по поводу кэш-памяти: кэша заявлено 48M = 16M L2 + 32M L3. 60 битых линий у кэш-памяти 3 уровня (L3)
- Насчет контроллера памяти: нужно тщательно выбирать планки памяти. Вот таблица:
Это я назвал минимальный список проблем чернового инженерника. Возможно, там проблем еще больше.
Следующие программные нюансы характерные как для Эльбрус 8С, Эльбрус 8СВ, так и для Эльбрус 16С
- Также стоит отметить, что для тестов Эльбрус 16С использовались старые билды игр 2020 года, сделанные для Эльбрус 8С, в которых имеются определенные недочеты. Например, из-за ошибки в старой версии компилятора Эльбруса могут случаться вылеты и падение производительности.
- Помните я говорил, что у Эльбрусов нет предсказателя переходов и внеочередного исполнения команд. Так как использовались старые билды игр для Эльбрус 8С, следовательно на Эльбрус 16С нативный код игр исполняется как на Эльбрус 8С, только с частотой 2 GHz и 16 ядрами. То есть, новшества архитектуре Эльбрус 6 поколения не учитываются. Это к слову о том, что у Эльбрусов нету обратной совместимости. Как видно, она есть. Это относится к нестабильному в работе Lintel для 16С. Без должной оптимизации, Эльбрус 16С работает не в полную силу.
- Стоит отметить старый графический стек, старое ядро Linux 5.4, старый компилятор шейдеров LLVM. Если обновить графический стек, ядро Linux, LLVM заменить на быстрый ACO, обновить компилятор, билды программ и игр, то результат будет еще лучше. Это касается как синтетических (приближенных к реальности) тестов, так и игровых тестов. Прирост к скорости получит как Эльбрус 8С, 8СВ, так Эльбрус 16С.
Небольшие дополнения про драйвер Mesa и ACO:
В ALT Linux присутствует Mesa 20.3.5 с ACO
Кстати да, видеокарты от AMD запускаются в нативном режиме с Эльбрусами без "Б". Камень в огород NVIDIA.
Теперь к синтетическим тестам
Пришлось очень много порыться в интернетах, чтобы найти более менее адекватные тесты процессоров Эльбрус.
Выражается благодарность:
- EntityFX за сравнительные тесты Эльбрус 8С, 8СВ, инженерного 16С;
- тем, кто участвовал в конференции Elbrus Tech Day
- 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 года для Эльбрусов.
Нативных игр будет несколько:
- War Thunder
- Enlisted
- Half-Life 1 (Xash3D)
- CRSED F.O.A.D
- SuperTuxKart
- Return To Castle Wolfenstein
Настройки графики были везде Максимальные, а разрешение 1080 рублей (1920х1080)
P.S для некоторых комментаторов: у меня будет единственная статья про Эльбрусы и она будет дополняться новыми тестами. Лучше бы ответили на следующие вопросы:
- что за карта используется в тестах на Эльбрусах в демке War Thunder
- как снять лок с Return To Castle Wolfenstein, Quake 3
Я с радостью дополню тесты!
Нативные тесты показаны (хоть и не все)! Теперь на страже успеваемости будет эмулятор x86-64 приложений Lintel.
В сравнении производительности эмулятора Lintel будут принимать участие следующие процессоры:
- i5 2320 (Stock) (Native)
- Phenom II x3 720 (с CPU/NB 2350, HT 2350, DDR2 626 Dual Rank Dual Channel) (Native)
- Ryzen 7 4800H @ 1700 MHz (Native)
- Phenom II X4 955
- Эльбрус 8С (Эмулятор Lintel 4.2)
- Эльбрус 16С (Эмулятор Lintel 4.2). О проблемах чернового инженерника и линтела для 16С смотрите в нюансах тестирования.
Можно было бы приступить к видео-сравнению Эльбруса в эмуляции против нативных Intel, AMD, а потом в выводах сказать мол "Русские опять создали говнопроцессор" (как делают некоторые. Не буду тыкать пальцем), но я так делать не буду!
Нужно пояснить этим некоторым за работу Lintel.
Как работает бинарный компилятор?
В процессе своей работы бинарный компилятор транслирует коды x86/ x86-64 (исходные коды) в функционально эквивалентные им коды процессора семейства Эльбрус (целевые коды), в последствии исполняя их на вычислительной машине.
Существует четыре уровня трансляции:
- интерпретатор
- шаблонный транслятор
- быстрый регионный компилятор
- оптимизирующий регионный компилятор
Любой новый код x86/ x86-64 (исполняемый впервые) транслируется интерпретатором.
Код, исполнение которого время от времени повторяется, может быть оттранслирован на более высоком уровне - сначала шаблонным транслятором, затем быстрым регионным компилятором и, наконец, оптимизирующим регионным компилятором по мере увеличения количества исполнений этого кода.
Шаблонный транслятор и оба регионных компилятора создают коды для процессоров семейства Эльбрус, которые размещаются в специальном программном кэше и могут быть использованы неоднократно. То есть если для некоторого исходного кода трансляция однажды была произведена, то при необходимости его повторного исполнения будет использоваться результат ранее произведенной трансляции, хранимой в программном кэше.
Уровни трансляции различаются временем:
- шаблонный транслятор создает не очень качественный код, но делает это очень быстро;
- быстрый регионный компилятор по своим характеристикам находится между шаблонным транслятором и оптимизирующим регионным компилятором;
- оптимизирующий регионный компилятор хоть и требует значительного времени на проведение трансляции, но на выходе дает код, максимально использующий все преимущества архитектуры Эльбрус.
Для работы бинарного компилятора необходимо наличие минимум одного процессора исполнения, максимально допустимое их количество на единицу меньше общего количества процессорных ядер, которыми располагает вычислительная машина.
Механизм параллельной компиляции состоит в том, что создание целевых кодов быстрым и оптимизирующим регионными компиляторами производится на выделенных исключительно под эти цели процессорных ядрах. Благодаря параллельной компиляции исполнение кодов происходит плавно, не создавая эффект "замирания" на время трансляции.
Количество ядер для трансляции может быть равно одному или двум. Невозможно создать конфигурацию, при которой суммарное количество процессоров трансляции и процессоров исполнения было бы больше общего числа процессорных ядер, которыми располагает вычислительная машина. Так, при увеличении количества исполняющим процессоров до максимального значения, количество процессоров трансляции автоматически становится равным одному. Аналогично, при увеличении количества процессоров трансляции до двух, количество процессоров исполнения автоматически уменьшается на единицу, если оно имело максимальное значение.
Параметр "Установка типа процессора" определяет результат работы команды "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С
Эльбрус-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 все эти проблемы.
Да, Эльбрус в Эмуляции проиграл (и многие на этом бы остановились и сказали бы, что Русские создали Говнопроцессор), но не все так просто. Вспоминаем, как работает Lintel и тут нужно не смеяться, а руками разводить в изумлении. Еще раз скажу, что Lintel 4.2 для Эльбрус 16С не был оптимизирован и имеет сбои в работе, как и сам инженерник (какие проблемы, смотрите в нюансах тестирования).
Тем более Lintel эмулирует x86-64 инструкции без всяких там лицензий и без нарушения патентов Intel и AMD (Intel и AMD не продают права еще с 90х).
Какова разница между инженерником Эльбрус 16С и Эльбрусом 8С
Разница между Эльбрус 16С и Эльбрус 8С в 2 раза
Демонстрация проблем Эльбрус 16С и Lintel 4.2 на примере игры GTA V. Баг репорты отправлены в компанию МЦСТ. Поиграли в пре альфа версию, так сказать:
Список использованной литературы: