Наблюдения в процессе тестирования смартфонов на Android и iOS в 2015 году (страница 3)

Пару слов о многоядерных SoC

Все мы привыкли, что сегодня в смартфоны устанавливают многоядерные однокристальные системы. Но что же скрывается под этими многообещающими определениями? Нужно ли это пользователям и что самое интересное – как именно оно работает?

С процессорами для настольных ПК все было традиционно просто: вот у нас модель с четырьмя ядрами, и она дает прирост производительности по сравнению с одноядерной моделью чуть менее, чем это теоретически возможно. У нас не было ни big, ни LITTLE, а модульная система путала только в моделях AMD. Впрочем, еще остались на свете люди, которые не видят разницы между физическими ядрами и Hyper-Threading, но эта тема уже не раз была разжевана и неактуальна для наших читателей.

реклама

Традиционная схема (all-BIG)

На рынке присутствует множество вариантов, созданных по этой схеме. Ранее это была самая распространённая вариация SoC, которая не нуждается в особом представлении. Все честно, прозрачно и предсказуемо. К таким SoC относится, например, вся серия Intel Atom Z, Qualcomm Snapdragon 200, 400, 410, 600, 800, 801, 805, а также ранние версии. Или другой пример – простенький MediaTek MT6735:

450x111  19 KB

Теоретически при однопоточной нагрузке данная SoC должна работать как-то так (прошу прощения, иллюстратор из меня не очень):

450x139  26 KB

Это, конечно, если не учитывать нагрузку, которая дает операционная система. В данном случае она частично заняла процессорное время другого ядра или других ядер. Но мы ее условно не будем учитывать.

А вот так в теории должна будет выглядеть нагрузка в четыре потока на ту же SoC:

450x139  29 KB

Опять же, если не брать во внимание такие «тонкие» факторы как кэш ядер, специфику задачи и затраты на ОС. И раз уж мы затронули тему масштабирования, посмотрим, как это выглядит на деле в синтетических тестах.

MT6735M@GeekBench 3
pts., больше – лучше


Включите JavaScript, чтобы видеть графики

Прекрасно видно, насколько «страдает» реальная производительность и какой она должна быть при идеальной масштабируемости (mean).

Но это всего лишь GeekBench, лучше мы обратимся к столь любимому нами Linpack.

MT6735M@Linpack
Размер задачи=500, 3 прохода
average Mflop/sec., больше – лучше


Включите JavaScript, чтобы видеть графики

Второе значение на графике – теоретически максимальное возможное число при идеальной масштабируемости. Как и в GeekBench 3, мы попросту недосчитываемся одного ядра. Именно это и есть те самые «сопутствующие расходы» на архитектуру, кривость ПО, нагрузку операционной системой и прочее.

В рамках «старого-доброго» подхода рассмотрим другой вариант:

450x117  18 KB

Qualcomm Snapdragon 800 является «честной» SoC, хоть и получила дурную славу за свою любовь к троттлингу. Что неудивительно – достаточно посмотреть на частоту.

реклама



Это тестирование будет интересно в том плане, что «накладных расходов» на нужды ОС относительно общей производительности чипа будет намного меньше. Мы даже поставим задачу потруднее, увеличив тем самым нагрев и спровоцировав троттлинг.

Snapdragon 800@Linpack
Размер задачи=1500, 3 прохода
average Mflop/sec., больше – лучше


Включите JavaScript, чтобы видеть графики

реклама

Итак, за счет большей общей производительности «накладные расходы» меньше мешают нашему подопытному стремиться к теоретическому максимуму. В итоге картина получается примерно такой:

450x117  22 KB

Расходы ресурсов на ОС и ограничения TDP делают свое дело. Разумеется, есть и другие факторы и архитектурные особенности, которые могут повлиять на худшую масштабируемость.

Кстати, можно вычислить, сколько производительности примерно теряется из-за троттлинга. Для демонстрации этого охладим нашего подопечного (благо на дворе декабрь) и повторим тест:

Cooled Snapdragon 800@Linpack
Размер задачи=1500, 3 прохода
average Mflop/sec., больше – лучше


Включите JavaScript, чтобы видеть графики

реклама

Первое, что бросается в глаза – существенное повышение производительности. Почти в два раза. Но на то это и 800-ый, чтобы троттлить.

Обработаем полученные данные, дабы разобраться, что к чему. Приведем абсолютные числа к относительным, где за 100% возьмем производительность на один поток.

450x262  45 KB. Big one: 1322x769  103 KB
По клику можно рассмотреть крупный вариант.

Весьма интересная ситуация. Насколько позволяет точность измерений, можно предположить, что в случае со Snapdragon 800 при нагрузке в четыре потока масштабируемость возрастает, пусть и незначительно, а вот МТ6753М слишком слаб, чтобы продемонстрировать такие же показатели масштабируемости.

реклама

Но мы немного отвлеклись. Вернемся к нашей тематике.

Модульные SoC (big.LITTLE)

Это хорошо знакомая нам и, пожалуй, самая эффективная схема компоновки. Вот пример:

450x114  19 KB

Я специально выбрал для примера Snapdragon 808, ведь он очень интересен за счет своей нестандартной шестиядерной компоновки. Если мы, например, возьмем Exynos 7420,…

реклама

450x112  24 KB

… то его работа не вызывает вопросов: в случае с требовательными приложениями используется один четырехъядерный модуль, в случае с работой системы в фоне используется другой четырехъядерный модуль с ядрами Cortex-A53. А вот в случае со Snapdragon 808 возникают вопросы. Например, если подать на него нагрузку в четыре потока, будет ли он использовать четыре ядра Cortex-A53 или два ядра Cortex-A57?

Для этого нам достаточно нагрузить его при помощи того же Linpack и посмотреть масштабируемость между нагрузкой в два и три потока. Так как очевидно, что два ядра Cortex-A57 на большей частоте быстрее даже трех ядер Cortex-A53 на меньшей частоте, то все встанет на свои места.

Дабы не провоцировать сброс нагрузки на ядра А53 вследствие перегрева, проверим его в охлажденном состоянии. А также посмотрим, может ли он работать с шестью потоками одновременно, ведь этот процессор позиционируется как шестиядерный, а не «2+4». Благо у меня под рукой как раз есть LG G4.

Cooled Snapdragon 808@Linpack
Размер задачи=1500, 3 прохода
average Mflop/sec., больше – лучше


Включите JavaScript, чтобы видеть графики

реклама

Получается очень интересная картина.

При простое чип ведет себя следующим образом:

450x119  21 KB. Big one: 1000x265  57 KB

Производительности одного ядра Cortex-A53 вполне хватит для того, чтобы обеспечить работу ОС и приложений в фоне. В целях энергосбережения могут использоваться два-четыре ядра на пониженной частоте, вместо одного на максимальной, как это условно показано на рисунке. Тут все понятно.

450x119  23 KB. Big one: 1000x265  61 KB

реклама

Так поведет себя CPU при высокой нагрузке в один поток. Опять же – все предельно ясно и неинтересно. Тут мы абстрагируемся от нужд ОС, приложений, TDP и других «накладных расходов», дабы не создавать «шум» на схеме.

450x119  24 KB. Big one: 1000x265  65 KB

С двумя потоками тоже ничего интересного – нагрузка переляжет на второе ядро Cortex-A57. А далее начинается интересное.

450x119  25 KB. Big one: 1000x265  67 KB

Если мы подаем от трех до пяти потоков, то используется модуль с ядрами Cortex-A53. Во всяком случае, такой вывод можно сделать из данных, которые явно показывают на снижение производительности при переходе с двух потоков на три. А если бы три потока отрабатывались на двух ядрах Cortex-A57, то результаты были бы аналогичны.

Возникает вопрос: почему не повышается производительность при переходе с трех потоков на четыре? Ведь было бы логично, что тогда использовались бы четыре ядра вместо трех, как указано на схеме? Сложно ответить на этот вопрос, не углубляясь в дебри планировщика, но я осмелюсь предположить, что ситуация аналогична MediaTek MT6735M, где мы не увидели дальнейшей масштабируемости.

Но как только речь заходит о шести потоках,…

450x119  26 KB. Big one: 1000x265  69 KB

… SoC снова переносит нагрузку на «толстые» ядра. Зачем? Предположу, что это сделано для бенчмарков, которые точно знают, сколькими ядрами располагает CPU и именно они дадут эти самые шесть потоков, а при использовании двух ядер Cortex-A53 результаты будут выше, как мы видели на графике результатов.

Но в чем тут подвох? А вот в чем:

450x259  28 KB. Big one: 1322x756  58 KB
По клику можно рассмотреть крупный вариант.

Какой бенчмарк расскажет об этом? Да, производительность Snapdragon 808 на одно ядро выше, нежели у своего коллеги, на минуточку, из 2013(!) года, но он абсолютно не способен эффективно обрабатывать более двух потоков. Хотя если вы скажете об этом неискушенному человеку, то можно будет услышать тезисы вроде «шесть ядер против четырех» и «808 больше чем 800». Ах, если бы вся серия на ядрах Krait 400/450 не страдала от троттлинга…

Посему в случае со Snapdragon 808 можно сказать, что это скорее двухъядерная SoC, нежели шестиядерная. Увы, но производители никогда об этом не напишут и даже не расщедрятся на формулировку «2+4», а будет что-то типа «Шестиядерный процессор Qualcomm Snapdragon 1.8 ГГц», то есть вроде как шесть ядер работают на частоте 1.8 ГГц и, естественно, все они одинаковые. Ага.

На этом моменте читатель может подумать, что я ругаю Snapdragon 808, но это относится и ко многим другим «системам-на-чипе», например, Snapdragon 810, 650, 652, MediaTek Helio X20, а также Exynos 7420, 5433.

Стоит отметить, что мы более-менее подробно рассмотрели лишь одну SoC, так что делать окончательные выводы рано, но в рамках одной статьи этого достаточно. Для тех, кто хочет познакомиться с этим типом однокристальных систем, советую почитать вот этот материал, а также эту статью, если вы знаете английский.

Подпишитесь на наш канал в Яндекс.Дзен или telegram-канал @overclockers_news - это удобные способы следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал
рейтинг: 4.9 из 5
голосов: 48

Комментарии Правила



Возможно вас заинтересует

Популярные новости

Сейчас обсуждают