Сравнение процессоров Байкал-М и Эльбрус-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 | 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:
- 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
- Есть сообщество энтузиастов (переносят игры и софт)
Другие результаты:
Oxyd
Сборку chromium ;-) И сразу будет понятно чего стоят камешки в совершенно практической задаче.
gshep
сразу отвечу, что сборка на Эльбрусе ооооооооочень долгая. Я при знакомстве с ним собирал разные либы на Эльбрус-8С — так вот, скорость сборки на нём по времени примерно равнялась оной на древнем кукурузном АМД А6.
Объясняется это тем, что компилятору для VLIW нужно на порядки больше оптимизаций делать. Ещё плюс то, что сам компилятор же на Эльбрусе работает.
Поэтому вангую, что результат будет не в пользу Эльбруса
Antervis
наверно если тестировать сборку, то с одинаковым таргетом.
0xd34df00d
Нет, зачем? Если я разработчик и использую машину для, собственно, разработки, то 99% времени я собираю код под эту же машину.
Другое дело, что я не всегда собираю код под нее с оптимизациями...
Antervis
смотря что за разработка. Я вот не собираю/запускаю код, который разрабатываю, на своей машине. То же самое будет верно для большинства микроконтрольщиков и разрабов под мобилки. Собственно, даже если у вас таргет — эльбрусы, вы совершенно не обязаны разрабатывать на эльбрусе.
EntityFX Автор
Да, на Хромиуме куча всего, ждем... Говорят, там немного сложно из-за зависимостей и JS движка. Вот для Firefox пришлось Rust запиливать.