Сравнение процессоров Байкал-М и Эльбрус-8СВ


Baikal VS Elbrus


Недавно у меня по работе появился компьютер на базе процессора Байкал-М (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 110 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 15 44.6
SPEC 2006 FP 9 27.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)


** — В 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 pipeline


Особенности ядер 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


TODO


Браузерный JavaScript


TODO


PHP, Python


TODO


Выводы


Процессоры Байкал-М и Эльбрус-8СВ показывают примерно одинаковую производительность в большинстве задачах. Эльбрус-8СВ сильно выигрывает в "числодробилках", но проигрывает в тестах JavaScript (да и где есть интерпретация или JIT-компиляция в реалтайме).


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


Преимущества Байкалов:


  • Лицензируемая ARM архитектура
  • Набирает популярность в десктопе и серверах, а не только в мобилках и одноплатниках
  • Не нужно переносить компиляторы, ядро Linux и портировать кучу софта

Преимущества Эльбрусов:


  • Своя архитектура E2K
  • Мощная "числодробилка" + работает обычный софт под Linux
  • Есть сообщество энтузиастов (переносят игры и софт)

Другие результаты:


Картинка


Ссылки