Сравнение процессоров Байкал-М и Эльбрус-8СВ
Недавно у меня по работе появился компьютер на базе процессора Байкал-М (BE-M1000), а также у меня есть удалённый доступ к компьютерам на процессорах Эльбрус, поэтому я решил сравнить их производительность в различных тестах.
Эта статья является продолжением моих предыдущих статей по бенчмаркам Эльбрусов:
К результатам процессоров Байкал-М и Эльбрус-8СВ я добавил процессор Intel Core i7-2600 для относительного сравнения.
Характеристики сравниваемых процессоров:
Байкал-М | Эльбрус-8СВ | Core i7-2600 | |
---|---|---|---|
Семейство ISA | RISC | VLIW | CISC |
Архитектура | armv8 | e2k | x86-64 |
Микроархитектура | Cortex-A57 | elbrus-v5 | Sandy Bridge |
Частота (МГц) | 1500 | 1500 | 3400* |
Ядра; Потоки | 8 | 8 | 4; 8 |
Техпроцесс (нм) | 28 | 28 | 32 |
TDP (Вт) | 30-35 | 80-90 | 95 |
Тип ОЗУ | DDR4-2400 | DDR4-2400 | DDR3-1333 |
Год | 2018 | 2018 | 2011 |
* — У Intel Core i7-2600 часота бустится, да и ядер всего 4 с 8 потоками.
Кроме стандартных тестов Dhrystone и Whetstone, я решил включить следующие тесты:
- HPL (High Performance Linpack)
- 7zip встроенный бенчмарк
- StockFish (встроенный тест шахматного движка)
- Рендеринг в Blender (Файл для теста)
- Готовые результаты в SPEC 2006 (однопоток)
- JavaScript
Кроме того, я запускал тесты на языках программирования Java, C#, Python, PHP, Lua, но решил не включать результаты в эту статью, но вы их можете посмотреть отдельно: https://github.com/EntityFX/EntityFX-Bench/tree/master/results
Теперь сразу перейдём к сводной таблице с результатами.
Результаты
Тест | Байкал-М | Эльбрус-8СВ | Core i7-2600 |
---|---|---|---|
Dhrystone [DMIPS] | 8438 | 9077 | 22076 |
Whetstone [MWIPS] | 1608 | 2269 | 5729 |
Whetstone MP [MWIPS] | 12097 | 16495 | 31319 |
Linpack 100 [MFLOPS] | 1012 | 1723 | 4302 |
Scimark 2 [Composite score] | 473 | 908 | 2427 |
Coremark (1T;MT) | 7422; 58047 | 5500; 43008. 61871* (rtc x86-64) | 22692; 119670 |
MP MFLOPS | 49788 | 381326 | 81745 |
HPL [GFLOPS] | 38 | 244 | 93.9 |
7zip (Comp; Decomp; Tot) (MT) | 8483; 11252; 9868 | 8461; 13638; 11049 | 18024; 13363; 18664 |
STREAM (Copy; Scale; Add; Triad) [MB/s] | 12315; 12061; 11064; 11529 | 23097; 23137; 25578; 25643 | 20860; 21838; 18512; 20452 |
SPEC 2006 INT | 9.2 | 18 | 44.6 |
SPEC 2006 FP | 9 | 22.5 | |
Blender (RyzenGraphic_27) [min:sec] | 2:47 | 2:32 | 1:18 |
StockFish [nodes/sec] | 2750526 | 3123190 | 10860720 |
Octane 2 | 5266 | 2815*** | 24875 |
Sunspider 1.0.2 [ms] | 849.5 | 2394*** | 232.3 |
Kraken 1.1 [ms] | 4669.3 | 8714.2*** | 1287.8 |
* — В нативном режиме Эльбрус в тесте Coremark показывает в 1,5 раза хуже результаты чем в режиме бинарной трансляции x86-64 кода (этот бинарный транслятор называется RTC)
** — Результаты для процессора Эльбрус 8СВ уточняются у компании МЦСТ
*** — В JavaScript тестах Эльбрус достаточно отстаёт. Причина в том, что JIT-компиляция для JavaScript'а Эльбруса не достаточно глубоко реализована и есть куда улучшать. Во всех JS тестах использовался браузер Firefox. (На Эльбрусе только Firefox 52).
Результаты всех тестов здесь: https://github.com/EntityFX/anybench/tree/master/results
Снял видео с некоторыми тестами:
Немного об архитектурах процессоров Байкал-М и Эльбрус
Байкал-М
Байкал-М — процессор на основе 64 разрядной RISC архитектуре ARM (armv8, aarch64), имеет 8 ядер, которые реализуют микроархитектуру ядер Cortex-A57.
Схема микроархитектуры Cortex-A57:
Устройство конвейера Cortex-A57:
Особенности ядер Cortex-A57:
- 64 битная архитектура armv8.0a
- FP/SIMD расширения VFPv4 и NEON
- Внеочередное исполнение
- Предсказание ветвлений
- Поддержка виртуализации
- 8 портов на исполнение микроопераций:
- 2 Загрузки/Сохранения
- 2 простых АЛУ (сложение, сдвиг)
- 1 блок ветвлений
- 1 АЛУ для умножения, деления
- 2 блока SIMD/FPU
- 3 уровневый декодер команд
- Кеши
- 48 КБ L1 кэш команд (3 канальный, ассоциативный, размер линии 64 байта)
- 32 КБ L1 кэш данных (2 канальный, ассоциативный, размер линии 64 байта)
- 32 КБ L1 кэш данных (2 канальный, ассоциативный, размер линии 64 байта)
- В Байкал-М 1 МБ L2 на 1 кластер (2 ядра в кластере), в сумме 4 МБ
- Кэш L3: 8 МБ
Моё видео о сравнении Байкала и Эльбруса:
Эльбрус-8СВ
Эльбрус-8СВ — процессор на основе 64 разрядной VLIW архитектуры E2K 5го поколения (e2k, elbrus-v5), имеет 8 ядер.
Схема микроархитектуры E2K:
Подробные детали микроархитектуры E2K:
Особенности ядер elbrus-v5:
- 64 битная VLIW архитектура elbrus-v5
- 128 (+ 8 бит на тег) разрядные регистры (были 80 бит + 4 бита на тег) и SIMD расширения
- 256 регистров (поддержка регистровых окон), 32 регистра из 256 — глобальные
- Предикатный файл на 64 бита (32 2 битовых флажков)
- 6 АЛУ блоков (с разными возможностями):
- 4 могут в Load
- 2 могут в Store
- 6 целых/сдвиговых АЛУ
- 6 вещественных АЛУ
- 4 сравнивающих блоков
- 4 целочисленных умножений
- 6 вещественных умножений
- 4 целочисленных векторных блоков
- 2 вещественных векторных блоков
- 1 деление и квадратный корень
- Блок предпоткачки массивов
- Блок аппаратной поддержки циклов (можно зациклить одну Широкую Команду без прыжков)
- Явный спекулятивный режим
- Кеши
- 128 КБ L1 кэш команд (4 канальный, ассоциативный, размер линии 256 байт)
- 64 КБ L1 кэш данных (4 канальный, ассоциативный, размер линии 32 байта)
- L2: 512 Кбайт в каждом ядре, 4 Мбайт суммарно (Размер линии: 64 байт, Ассоциативность: 4)
- L3: 16 Мбайт в процессоре (Размер линии: 64 байт, Ассоциативность: 16)
- Нет предсказателя ветвлений (будет в поколении 7)
- Нет переупорядочивания инструкций (Ложится на плечи компилятора)
Разбираем результаты
Dhrystone
Dhrystone достаточно древний тест 80х годов, написан на C. Тестирует целочисленную арифметику и работу со строками. Результаты измеряются в Dhrystone/s и DMIPS. (DMIPS = Dhrystone/s делить на 1757).
Байкал-М и Эльбрус показывают примерно одинаковые результаты. Тест особо не параллелится, поэтому на Эльбрусах все 6 АЛУ не загружаются. Это означает что в большинстве программ (а они не особо параллелятся на АЛУ), которые написаны на языках C, C++ и других компилируемых языках оба процессора будут показывать примерно равную производительность (оба имеют частоту в 1500 МГц).
Whetstone
Тестирует арифметику с плавающей/фиксированной запятой, математические функции, ветвления, вызовов функций, присваиваний, работы с числами с фиксированной запятой, ветвлений. Результаты измеряются в MMIPS.
Эльбрус оказывается чуть быстрее в этом тесте чем Байкал-М. Ядра Эльбруса больше приспособлены для выполнения вещественной арифметики, но так как в наборе тестов есть и другие тесты, которые не поддаются распараллеливанию, то результаты выравниваются. Следовательно, в простых непараллельных математических и других программах эти процессоры будут показывать одинаковые результаты.
Coremark
Современный тест, который должен заменить Dhrystone и Whetstone. Написан на C. Считает различные массивы, матрицы, сортировка и т. д. Предназначался для запуска на всём: от микроконтроллеров до мощных процессоров.
В данном тесте Байкал-М оказывается в 1,5 раза быстрее Эльбруса. Но очень удивило то, что Эльбрус в режиме x86-64 трансляции показывает в 1,5 раза лучше результаты своего нативного варианта. (Следовательно, есть какие-то недоработки в компиляторе LCC).
MP MFLOPS и HPL
В данных тестах Эльбрус значительно вырывается вперёд, так как данные тесты максимально параллелятся на Эльбрусах. Это и понятно: Эльбрус заточен под числодробильные задачи, поэтому научные расчёты будут максимально быстрыми на Эльбрусах. Он в этом тесте даже обогнал Core i7-2600 в 4 раза.
7zip
Встроенный тест архиватора. Тест особо не параллелится, результаты примерно равные на этих процессорах (частота одинаковая).
Blender
Эльбрус рендерит немного быстрее Байкала-М. Кстати, результат Эльбрус-8СВ не сильно отличается от Эльбрус-8С (разница с ростом частоты с 1300 до 1500 МГц), следовательно, требуются кое-какие оптимизации и использование SIMD, чтобы повысить результаты на Эльбрус-8СВ.
SPEC 2006 INT/FP
SPEC CPU2006 инструмент исследования производительности систем, который основан на коде реальных приложений, поставляются в виде исходного кода. Тест оценивает не только производительность процессора и памяти, но и показывает то, насколько компиляторы могут оптимизировать код.
Имеется 2 группы тестов:
- SPEC INT 2006, измеряющий производительность целочисленных вычислительных задач (integer);
- SPEC FP 2006, измеряющий производительность вычислительных задач с вещественными числами (числами с плавающей точкой, floating point).
Браузерный JavaScript
Во всех JavaScript тестах использовался браузер Firefox, для Эльбрус 8СВ используется версия 52 (единственная доступная на данный момент версия браузера), на остальных — последняя. JavaScript на процессорах Эльбрус имеет достаточно низкую производительность (отставание в 2 раза относительно Байкал-М), детали о том как выполняли портирование можете посмотреть в статье Портирование JS на Эльбрус.
PHP, Python
TODO
Выводы
Процессоры Байкал-М и Эльбрус-8СВ показывают примерно одинаковую производительность в большинстве задачах. Эльбрус-8СВ сильно выигрывает в "числодробилках", но проигрывает в тестах JavaScript (да и где есть интерпретация или JIT-компиляция в реалтайме).
Жду ваши предложения, какие ещё бенчмарки можно прогнать на этих компьютерах (желательно с простой сборкой).
Преимущества Байкалов:
- Лицензируемая ARM архитектура
- Набирает популярность в десктопе и серверах, а не только в мобилках и одноплатниках
- Не нужно переносить компиляторы, ядро Linux и портировать кучу софта
Преимущества Эльбрусов:
- Своя архитектура E2K
- Мощная "числодробилка" + работает обычный софт под Linux
- Есть сообщество энтузиастов (переносят игры и софт)
Другие результаты: