Особенности 4, 6 и 8 ядерных процессоров смартфонов
В последнее время у производителей процессоров смартфонов и планшетов существует тенденция к увеличению числа вычислительных ядер. Этот подход имеет ряд подводных камней:
- Графический интерфейс пользователя отрисовывается одним потоком
- Удваивание числа ядер дает прирост производительности в 1.6 раза (в среднем и зависит от архитектуры процессора), что приводит к падению производительности одного потока на 20%
- Различные архитектуры вычислительных ядер могут в разы (!) отличаться по количеству операций за такт
Графический интерфейс пользователя отрисовывается одним потоком
Отрисовка изображения приложениями осуществляется в одном потеке. Даже если приложение подготавливает данные в параллельных потоках, при отрисовки они синхронизируются и выводят изображение последовательно в порядке очереди. На мой взгляд на отзывчивость интерфейса в основном влияют 2 фактора:
- Производительность 1 (одного) потока
- Производительность видео подсистемы
В браузерах дела обстоят еще хуже. JavaScript является однопоточным, хотя и асинхронным. Таким образом браузеры еще более зависимы от однопоточной производительности процессора.
Например, возьмем 4-х ядерный процессор Samsung Exynos 7578 и 8-ми ядерный Samsung Exynos 7580 Octa. Данные процессоры имеют примерно одинаковую частоту 1500 MHz и 1600 MHz, одинаковую архитектуру Cortex-A53 и видео подсистему Mali-T720 MP2. Соответственно в браузерном JavaScript тесте Octane V2 они дают схожие результаты: Exynos 7578 - 3566 баллов и Exynos 7580 - 3627 баллов.
На мой взгляд, браузерные тесты (например Vellamo), более точно отражают производительность в повседневных задачах (веб, почта и т.п.). При этом они позволяют сразу протестировать связку процессор - видео подсистема — операционная система. Жаль что результаты тестов Vellamo относительно редко публикуются.
Удваивание числа ядер дает прирост производительности в 1.6 раза
Рост производительности при увеличении числа ядер сдерживают как минимум 2 фактора:
- Рост тепловыделения с увеличением числа задействованных ядер
- Увеличение задержек при обращении к общим ресурсам (RAM, IO)
С тепловыделение все достаточно просто: увеличение числа задействованных ядер -> нагрев процессора -> уменьшение общей частоты. Алгоритмы уменьшения частоты могут быть различны, но в любом случае пиковая производительность будет меньше.
Мобильные процессоры построены на принципах симметричной мультипроцессорности. Рост количества потоков приводит как к росту издержек на синхронизацию потоков приложения, так и на низкоуровневую синхронизацию между вычислительными ядрами (например, конкуренция за RAM, IO, поддержка когерентности кэша).
Все это приводит к тому, что удвоение вычислительных ядер дает в среднем прирост производительности в 1.6 раза. Негативным эффектом является то, что падает производительности одного ядра при пиковых нагрузках.
Рассмотрим Samsung Exynos 7578 и Samsung Exynos 7580 Octa. В однопоточных тестах Geekbench 3 32 Bit Single-Core Score Exynos 7578 и Octa имеют примерно одинаковую производительность: 703 у Exynos 7578 и 721 у Exynos 7580 Octa. Зато в многопоточном тесте Geekbench 3 - 32 Bit Multi-Core Score различия более существенны: 2201 у Exynos 7578 и 3607 у Exynos 7580 Octa. Таким образом удвоение числа ядер привело к увеличению пиковой производительности всего в 1.63 раза. При этом производительность одного потока 8 ядерного процессора упала с 721 балла до 450 баллов (3607 / 8 = 450, уменьшение в 1.6 раза).
Таким образом, большое количество задействованных ядер процессора может привести к заметному уменьшению отзывчивости пользовательского интерфейса.
Различные архитектуры вычислительных ядер
Мобильные процессоры могут быть построены на различных архитектурах вычислительных ядер. При этом производительность процессоров с одинаковой частотой и разными архитектурами может в разы отличаться. В этом случае в качестве метрики для сравнения удобно использовать DMIPS/MHz. Это позволяет сравнивать эффективность архитектуры процессора на МГц частоты процессора.
Сравнение современных архитектур мобильный процессоров можно посмотреть здесь Comparison of ARMv8-A cores
Возьмем процессор 6-ти ядерный процессор Qualcomm Snapdragon 650 MSM8956. В его составе 2 ядра на архитектуре Cortex-A72 и 4 ядра на архитектуре Cortex-A53. При этом Cortex-A72 в 2.1 раза производительнее Cortex-A53 (4.72 DMIPS/MHz у A72 против 2.24 DMIPS/MHz у A53).
Сравним Qualcomm Snapdragon 650 MSM8956 и Samsung Exynos 7580 Octa:
- В многопоточном тесте Geekbench 3 - 32 Bit Multi-Core Exynos 7580 Octa набирает 3607 баллов, в Geekbench 3 - 64 Bit Multi-Core Snapdragon 650 набирает 3853 баллов. В целом сопоставимые результаты.
- В однопоточном тесте Geekbench 3 - 32 Bit Single-Core Exynos 7580 Octa набирает 721 баллов, в Geekbench 3 - 64 Bit Single-Core Snapdragon 650 набирает уже 1514 баллов. Таким образом, отзывчивость интерфейса пользователя у устройств на остнове Snapdragon 650 будет более чем в 2 раза выше чем на Exynos 7580 Octa.
- В Octane V2 Exynos 7580 Octa набирает 3627 баллов, Snapdragon 650 набирает 8388 балла (более чем в 2.3 раза)
Таким образом, на данный момент производительность вычислительно ядра в большей степени зависит от архитектуры, чам от частоты процессора.
Стоит заметить, что в Apple iPad Pro используется всего лишь 2-х ядерный процессор A9X набирающий в тесте Geekbench 3 - 64 Bit Single-Core Score 3139.5 баллов, в Geekbench 3 - 64 Bit Multi-Core 5343.5 балла и в Octane V2 19736.5 баллов.
Выводы
- На отзывчивость интерфейса программы влияют 2 фактора
- Производительность 1 (одного) потока (ядра)
- Производительность видео подсистемы
- Производительность в браузере зависит от однопоточной производительности процессора и почти не зависит от количества ядер
- Производительность ядра процессора может в разы отличаться из-за различий в архитектуре
- Удваивание числа ядер дает прирост производительности в 1.6 раза и 20% падение производительности одного потока при пиковых нагрузках
- Большое количество задействованных вычислительных ядер может не явно вызвать “подтормаживание” интерфейса пользователя
- Браузерные тесты (например Vellamo) лучше отражают производительность в повседневных задачах (браузер, почта и т.п.)