Tweak.su

Типичный сайт типичного программиста

Follow me on GitHub

Особенности 4, 6 и 8 ядерных процессоров смартфонов

03 Nov 2016

В последнее время у производителей процессоров смартфонов и планшетов существует тенденция к увеличению числа вычислительных ядер. Этот подход имеет ряд подводных камней:

  1. Графический интерфейс пользователя отрисовывается одним потоком
  2. Удваивание числа ядер дает прирост производительности в 1.6 раза (в среднем и зависит от архитектуры процессора), что приводит к падению производительности одного потока на 20%
  3. Различные архитектуры вычислительных ядер могут в разы (!) отличаться по количеству операций за такт

Графический интерфейс пользователя отрисовывается одним потоком

Отрисовка изображения приложениями осуществляется в одном потеке. Даже если приложение подготавливает данные в параллельных потоках, при отрисовки они синхронизируются и выводят изображение последовательно в порядке очереди. На мой взгляд на отзывчивость интерфейса в основном влияют 2 фактора:

  1. Производительность 1 (одного) потока
  2. Производительность видео подсистемы

В браузерах дела обстоят еще хуже. 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 фактора:

  1. Рост тепловыделения с увеличением числа задействованных ядер
  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:

  1. В многопоточном тесте Geekbench 3 - 32 Bit Multi-Core Exynos 7580 Octa набирает 3607 баллов, в Geekbench 3 - 64 Bit Multi-Core Snapdragon 650 набирает 3853 баллов. В целом сопоставимые результаты.
  2. В однопоточном тесте 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.
  3. В 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 баллов.

Выводы

  1. На отзывчивость интерфейса программы влияют 2 фактора
    • Производительность 1 (одного) потока (ядра)
    • Производительность видео подсистемы
  2. Производительность в браузере зависит от однопоточной производительности процессора и почти не зависит от количества ядер
  3. Производительность ядра процессора может в разы отличаться из-за различий в архитектуре
  4. Удваивание числа ядер дает прирост производительности в 1.6 раза и 20% падение производительности одного потока при пиковых нагрузках
  5. Большое количество задействованных вычислительных ядер может не явно вызвать “подтормаживание” интерфейса пользователя
  6. Браузерные тесты (например Vellamo) лучше отражают производительность в повседневных задачах (браузер, почта и т.п.)