Следующая новость
Предыдущая новость

Почему iPhone был и будет быстрее смартфонов на Android. Колонка Олега Афонина

24.01.2018 13:08
Почему iPhone был и будет быстрее смартфонов на Android. Колонка Олега Афонина

Содержание статьи

  • Фактор первый: так сложилось
  • Фактор второй: разница в циклах разработки
  • Фактор третий: вопрос размера
  • Фактор четвертый: вопрос цены
  • Фактор пятый: вопрос контроля
  • Фактор шестой: оптимизация и использование доступных ресурсов
  • Фактор седьмой: разрешение экрана
  • Вместо заключения: нужны ли нашему телефону 64 бита?

Почему iPhone 7 работает быстрее Samsung Galaxy S7, а iPhone 8 — быстрее Galaxy S8? Помимо различий в идеологии операционных систем, одним из основных преимуществ Apple были и остаются уникальные системы на кристалле. Процессоры A10 и A11 заметно обгоняют в бенчмарках аналогичные предложения от Qualcomm в лице Snapdragon 820/821 и Snapdragon 835 соответственно. Почему так происходит? В чем заключается «магия Apple»? Оставив за бортом аргументы в стиле «Андроид лудше!», попробуем разобраться в причинах, которые привели к превосходству мобильных процессоров Apple над предложениями Qualcomm.

Фактор первый: так сложилось

Вспомним 2013 год. В арсенале Qualcomm — весьма удачные чипы Snapdragon 800, основанные на 32-разрядных ядрах Krait 400 собственной разработки. На этом чипе (и его последователе, Snapdragon 801) были выпущены десятки, если не сотни самых разнообразных моделей. На момент анонса у топового чипсета Qualcomm просто не было альтернатив: основанные на ядрах ARM Cortex A15 решения были прожорливы до чрезвычайности и не могли составить конкуренцию четырем кастомным ядрам Krait. Вроде бы все хорошо, Qualcomm — царь горы, достаточно продолжать развивать удачную архитектуру. Казалось бы, что может пойти не так?

Но — по порядку. В 2011 году компания ARM Holdings анонсировала архитектуру ARMv8, использование которой открывало многочисленные возможности ускорения части специальных видов вычислений — например, потокового шифрования, которое (забегу вперед) сегодня используется практически во всех смартфонах. Первыми мобильными ядрами данной архитектуры стали Cortex A53 и A57, анонсированные холдингом ARM в 2012 году. В то же время в ARM прогнозировали выход готовых процессоров на новых ядрах лишь на 2014 год. Вот только Apple, обладатели архитектурной лицензии ARM, успели первыми — почти на год раньше конкурентов.

Итак, в ноябре 2013-го Apple выпускает iPhone 5s. Помимо датчика отпечатков пальцев и встроенной системы безопасности Secure Enclave, новый iPhone впервые на рынке оснащается 64-разрядным процессором Apple A7 ARMv8. Новый процессор показывает чудеса производительности в Geekbench: результат двухъядерного процессора в однопоточных вычислениях в полтора раза превосходит ядра Krait 400, в многопоточных наблюдается паритет.

Расширенный набор команд ARMv8 пришелся как нельзя более кстати: именно в iPhone 5s Apple встроила аппаратную систему безопасности Secure Enclave, которая отвечает в том числе и за шифрование данных. С точки зрения Apple выбор 64-разрядной архитектуры был вполне логичен: только в ядрах с поддержкой ARMv8 появились инструкции для ускорения потокового шифрования, которое на тот момент использовалось Apple уже довольно давно. В дальнейшем использование новых ядер позволило Apple добиться беспрецедентных скоростей доступа к зашифрованным данным — выпущенный на год позже Nexus 6, основанный на 32-разрядном Qualcomm Snapdragon 805 (ARMv7), показывал ужасающую производительность потокового крипто: доступ к зашифрованным данным осуществлялся в 3–5 раз медленнее, чем к незашифрованным.

Поначалу 64-разрядная архитектура в смартфонах воспринималась обывателями — да и многими экспертами — как чистейшей воды маркетинг. Так считали пользователи, и так говорили руководители Qualcomm — по крайней мере, в своих официальных выступлениях.

В 2014 году выходит iPhone 6, оснащенный процессором A8, также работающим с системой команд ARMv8. Чем отвечает Qualcomm? Небольшим обновлением: на рынке доминируют смартфоны, работающие на Snapdragon 801 (32 бита, ARMv7). Также выходит Snapdragon 805, использующий те же ядра Krait 400, но с более мощным GPU. Процессоры Apple оказываются быстрее аналогов от Qualcomm как в однопоточных, так и в многопоточных вычислениях, а в специфических применениях — например, в реализации поточного шифрования — обходят решения конкурентов просто в разы. Qualcomm усиленно делает вид, что ничего необычного не происходит, но производители, наступая на горло, требуют конкурентоспособную SoC. Qualcomm ничего не остается, как включиться в гонку.

В 2015 году Apple выпускает iPhone 6s и A8, Qualcomm — чип Snapdragon 810 и его урезанную версию Snapdragon 808. Эти процессоры явились ответом Qualcomm на требования партнеров. Однако отсутствие опыта разработки 64-разрядных чипов сыграло с компанией злую шутку: оба процессора оказались чрезвычайно неудачными. С первых же дней процессоры проявили склонность к чрезмерному энергопотреблению, перегреву и тротлингу, в результате которого их устоявшаяся производительность через несколько минут работы мало отличалась от производительности Snapdragon 801.

Какой же из всего этого можно сделать вывод? Вывод один: Apple застала индустрию врасплох, использовав ядра с новой архитектурой тогда и там, где, казалось бы, в этом нет никакой необходимости. В результате Qualcomm оказалась в роли догоняющей, а Apple получила фору в полтора года. Почему так произошло?

Здесь нужно рассмотреть особенности цикла разработки мобильных процессоров.

Сравнение производительности Apple A9 и других процессоров

Фактор второй: разница в циклах разработки

Итак, мы выяснили, что Apple удалось вырваться вперед, на полтора года опередив конкурентов. Как такое могло случиться? Причина в разнице в циклах разработки у Apple и производителей смартфонов под управлением Android.

Как известно, Apple полностью контролирует разработку и производство iPhone, начиная с самого низкого уровня — проектирования процессора. И если графические ядра до недавнего времени Apple лицензировала у Imagination Technologies, то процессорные ядра компания предпочитала разрабатывать самостоятельно.

Как выглядит цикл разработки у Apple? На основе архитектурной лицензии ARM проектируется процессор, совместимый с заданной системой команд (ARMv8). Одновременно разрабатывается смартфон, в котором будет использоваться данный процессор. Параллельно для него создаются все необходимые драйверы, ОС, производится оптимизация. Все происходит в рамках одной компании; у разработчиков ОС нет никаких проблем с получением доступа к исходным кодам драйверов, а разработчики драйверов, в свою очередь, имеют возможность общаться с людьми, проектировавшими процессор.

Почему iPhone был и будет быстрее смартфонов на Android. Колонка Олега Афонина
Apple A11

Производственный цикл устройств на Android выглядит совершенно иначе.

В первую очередь в игру вступает ARM, разработчик одноименных систем команд и процессорных архитектур. Именно ARM проектирует референсные процессорные ядра. Так, в далеком 2012 году были анонсированы ядра ARM Cortex A53, на которых основано подавляющее большинство смартфонов, выпущенных в 2015, 2016 и 2017 годах.

Минуточку! 2012? Именно так: 64-разрядные ядра A53 были анонсированы в октябре 2012 года. Но архитектура ядра — это одно, а реальные процессоры — совсем другое: ARM Holdings их просто не выпускает, предлагая партнерам референсные дизайны, но не поставляя на рынок сами SoC. Прежде чем на рынке появится смартфон, основанный на той или иной архитектуре, кто-то должен разработать и выпустить готовую систему на кристалле, SoC.

Несмотря на публичные выступления собственных представителей, в 2013 году в Qualcomm усиленно работали над выпуском 64-битного процессора. На разработку собственного ядра времени не оставалось; пришлось брать что дают. Давали — архитектуру big.LITTLE, куда на тот момент входили «малые» ядра Cortex A53 (удачные) и «большие» ядра A57 (довольно спорные с точки зрения энергоэффективности и тротлинга).

Первые процессоры Qualcomm, основанные на этих ядрах, были анонсированы в 2014 году. Но ведь процессор — это еще не все! Как минимум нужен еще корпус, экран… Все это выпускают OEM-производители, которые, собственно говоря, и занимаются разработкой и производством смартфонов. А это тоже время, и время немалое.

Наконец, операционная система. Для того чтобы «завести» Android на устройстве, необходим набор драйверов для нового чипсета. Драйверы разрабатывает разработчик чипсета (например, Qualcomm), предоставляя их производителям смартфонов для интеграции. На то, чтобы разобраться и интегрировать драйверы, у производителя также уходит определенное время.

Но и это еще не конец! Уже готовый смартфон с работающей версией Android необходимо еще и сертифицировать в одной из лабораторий Google на предмет совместимости и соответствия Android Compatibility Definition. Это — тоже время, которого и без того катастрофически мало.

Иными словами, в том, что смартфоны на Snapdragon 808/810 мы увидели лишь в 2015 году, нет совершенно ничего удивительного. Первые флагманские чипы Qualcomm, основанные на 64-разрядной архитектуре, отстали от SoC Apple на полтора года. Это исторический факт, и это — реальное преимущество Apple.

В 2015 году длительный цикл разработки и требования партнеров сыграли с Qualcomm злую шутку: первый блин оказался комом. Впрочем, компании удалось реабилитироваться с выходом Snapdragon 820. Но не было ли слишком поздно?

Почему iPhone был и будет быстрее смартфонов на Android. Колонка Олега Афонина
Qualcomm Snapdragon 820

Фактор третий: вопрос размера

Рассмотрим таблицу, в которой сравниваются два последних поколения процессоров Apple и Qualcomm.

Процессор A10 Fusion A11 Bionic Snapdragon 820 Snapdragon 835
Техпроцесс 16 нм 10 нм 14 нм 10 нм
CPU 64-bit Quad-core, 2 Hurricane 2,34 ГГц + 2 Zephyr 64-bit Hexa-core, 2 Monsoon + 4 Mistral 64-bit Quad-core, 2 Kryo 1,59 ГГц + 2 Kryo 2,15 ГГц 64-bit Octa-core, 4 Kryo 280 2,45 ГГц + 4 Kryo 2801,9 ГГц
Управление ядрами По кластерам По ядрам По ядрам По ядрам
GPU 6 core 3 core Adreno 530 Adreno 540
Geekbench однопоточный 3438 4216 1698 1868
Geekbench многопоточный 5769 10118 3996 6227

Данные с сайта Geekbench

Что мы видим из этой таблицы? Легко заметить, что производительность в расчете на одно ядро в процессорах Apple в два с лишним раза превосходит решения Qualcomm, да и многопоточная производительность актуальных поколений процессоров отличается практически в полтора раза. Почему так получается? Ответ можно попробовать найти в следующей табличке.

Процессор A10 Fusion A11 Bionic Snapdragon 820 Snapdragon 835
Техпроцесс 16 нм 10 нм 14 нм 10 нм
Площадь чипа 125 мм2 87,66 мм2 113,7 мм2 72,3 мм2

Если отбросить пару процессоров A10 Fusion / Snapdragon 820, в которых используются разные технологические процессы, можно сравнить площадь чипов A11 Bionic и Snapdragon 835. Площадь поверхности чипа от Apple в 1,2 раза превышает площадь решения Qualcomm. Что это означает на практике? Возможность использовать больше транзисторов, более продвинутую архитектуру ядер. В частности, исследователи обнаружили, что в A11 Bionic «слабые» процессорные ядра в несколько раз крупнее малых ядер A53 (простите — Kryo 280), использующихся в Snapdragon 835. Это означает, что даже «малые» ядра A11 Bionic поддерживают внеочередное исполнение команд, что позволяет получить большую производительность на такт в сравнении с прямолинейными ядрами А53.

Площадь процессора напрямую влияет на его цену. Чем больше площадь (при использовании одного техпроцесса), тем выше себестоимость. Что подводит нас к очередному фактору: стоимости процессора для производителя.

Фактор четвертый: вопрос цены

Согласно отчету Android Authority площадь процессорных ядер Apple A10 Fusion вдвое превышает площадь ядер ближайшего конкурента, Snapdragon 820.

«Преимущество Apple в том, что компания может себе позволить потратить деньги на увеличение площади процессора, построенного по последней 16-нанометровой технологии FinFET… Несколько лишних долларов не сыграют большой роли в конечной стоимости устройства — а ведь Apple сможет продать значительно больше 600-долларовых устройств благодаря настолько большой производительности», — пишет Линли Гвеннап, директор The Linley Group.

Действительно, лишние пять-шесть долларов не сыграют большой роли в конечной стоимости iPhone — это доли, в худшем случае единицы процентов его стоимости для потребителя. Но если эти пять-шесть долларов способны удвоить производительность устройства по сравнению с конкурентами на Android — это прекрасный аргумент в пользу Apple.

Почему так не выходит у Qualcomm? В цепочке разработки процессоров для устройств под Android слишком много заинтересованных лиц. Это и ARM, которая разрабатывает и лицензирует процессорные ядра, и Qualcomm, которая проектирует готовые процессоры по лицензии, и производители смартфонов с Android. У OEM-производителей, вынужденных конкурировать между собой ценами, на счету каждый доллар. Производители хотят как можно более дешевых SoC (поэтому, кстати, до сих пор так популярны решения, построенные на архаичных слабых ядрах A53), и Qualcomm приходится с этим считаться. Но и Qualcomm, и ARM хотят откусить кусок пирога, получив свою долю прибыли, — так что себестоимость решения, аналогичного процессорам Apple, вышла бы даже более высокой, чем у Apple. В результате OEM-производители не смогли бы себе позволить массовых закупок таких процессоров, что еще увеличило бы их стоимость. (Кстати, именно это случилось с процессором MTK Helio X30 — он не пользовался спросом, и на его основе выпустили лишь два смартфона.)

Конечно, здесь можно аргументировать, что у Samsung и Huawei есть собственные линейки процессоров — Exynos и Kirin соответственно. Но у Huawei нет своих разработок, в компании берут готовые ядра ARM Cortex и готовые же графические ускорители ARM Mali, собирая «собственные» процессоры на их основе. Понятно, что вычислительные ядра этих процессоров не могут быть мощнее тех, что предлагает ARM. В Samsung же пробуют идти путем Apple, выпуская собственные кастомизированные ядра — производительность которых, впрочем, недалеко уходит от обычных «стоковых» ядер ARM.

Фактор пятый: вопрос контроля

В прошлом году в Apple сделали интересную вещь: волевым решением убрали поддержку 32-разрядных приложений из iOS 11. Так уж совпало, что именно на этой версии ОС вышла новая линейка iPhone: 8, 8 Plus и X. Что это означает с точки зрения производительности?

Возможность взять и отказаться от поддержки 32-разрядных команд дает очень и очень многое. Упрощаются блоки декодирования и исполнения, уменьшается требуемое число транзисторов. Куда идет эта экономия? Ее можно потратить на уменьшение площади процессора (что напрямую транслируется в сниженную себестоимость и уменьшенное энергопотребление), а можно при неизменной площади и энергопотреблении добавить транзисторов в другие блоки, увеличив тем самым производительность. Скорее всего, именно по второму сценарию развивались события и процессор A11 Bionic получил дополнительные 10–15% производительности именно за счет отказа от поддержки 32-разрядного кода.

Возможно ли подобное в мире Android? Да, возможно, но не полностью и очень нескоро. Лишь с августа 2019 года вступают в силу требования к разработчикам, которые должны будут при добавлении или обновлении приложений в Google Play Store в обязательном порядке включать 64-битные версии двоичных библиотек. (Отметим здесь, что далеко не все — и даже не большинство! — приложения Android вообще используют какие-либо двоичные библиотеки, зачастую довольствуясь динамически транслируемым байт-кодом.) Напомним, Apple ввела аналогичное требование в феврале 2015 года — опять преимущество во времени, на сей раз в четыре с половиной года.

Фактор шестой: оптимизация и использование доступных ресурсов

Оптимизация — важнейшая составляющая производительности. Традиционно у Apple с оптимизацией все было или идеально, или образцово (пользователи, которые жалуются на упавшую производительность старых устройств, обновившихся до последней версии iOS, просто не понимают, какой ад был бы на таком слабом железе, если бы на нем запустили Android). А вот у Android с оптимизацией все… пестро. Разнообразно. Можно сказать — феерично.

Чаще всего достаточно быстро на свежем железе работают чистые сборки Android — такие, что используются в смартфонах Google Nexus и Pixel, устройствах Motorola и Nokia. Но даже и здесь не все хорошо: например, в смартфоне Google (Motorola) Nexus 6 были совершенно потрясающие воображение проблемы со скоростью доступа к накопителю, возникшие из-за безграмотной реализации шифрования (разработчики Google не справились с аппаратным ускорителем криптографических операций процессора Snapdragon 805, после чего заявили, что «программная реализация лучше»). Вот в этой статье мы подробно проанализировали скорость чтения и записи зашифрованных данных смартфоном Nexus 6, сравнив ее со скоростью аналогичных операций в iPhone 5s. Вот цифры:

  • Nexus 6, последовательное чтение, зашифрованные данные: 131,65 Мбайт/с;
  • Nexus 6, последовательное чтение, зашифрованные данные: 25,17 Мбайт/с (39 Мбайт/с в обновлении до Android 7);
  • iPhone 5s, последовательное чтение, зашифрованные данные: 183 Мбайт/с.

Впечатляет? При похожих аппаратных характеристиках разработчики Google (Google, а не криворуких OEM!) умудрились в референсном устройстве, которое должно было продвигать безопасное шифрование в массы, сделать такой вот ляп. Будешь ли ты удивлен, узнав, что и у других производителей с оптимизацией могут возникать проблемы? И они возникают. Так, оснащенный по максимуму HTC U Ultra (Snapdragon 821) умудряется подтормаживать и перегреваться при самых рутинных операциях; такое впечатление, что процессор выполняет как минимум вдвое больше вычислений, чем должен. Ну а о смартфонах Samsung, которые ухитряются подтормаживать по мелочам даже на самом мощном доступном железе, даже и говорить подробно не стоит.

Фактор седьмой: разрешение экрана

Есть и еще один момент, который стоит упомянуть. Это — разрешение дисплея. Как известно, стандартные модели iPhone оснащаются экранами с разрешением HD, модели Plus — Full HD. Производители же смартфонов под управлением Android, использующие флагманские чипсеты Qualcomm, стараются устанавливать экраны с разрешением QHD — 2560 × 1440. Ну, как самый минимум — Full HD, но такое во флагманских смартфонах встречается, увы, нечасто.

Почему «увы»? Потому что разрешения выше Full HD на экранах с IPS матрицей диагональю до 5,7″ включительно более чем достаточно. Для AMOLED-экранов, у которых, во-первых, структура субпикселей PenTile, а во-вторых, может быть поддержка очков виртуальной реальности Google VR (кстати, а какому проценту пользователей она реально пригодилась?), оправданность QHD-разрешения еще можно как-то аргументировать.

Несколько в стороне стоит iPhone X с разрешением 2436 × 1125 — впрочем, это, по сути, мало отличается от Full HD. Для сравнения: разрешение экрана Samsung Galaxy S8 — 2960 × 1440, то есть в полтора раза больше пикселей, чем в iPhone X.

А теперь представь, что мы сравниваем производительность iPhone 8 с его разрешением HD и какую-нибудь Nokia 8 с QHD. Представил? Nokia приходится обрабатывать почти в четыре раза больше пикселей, чем iPhone, что не может не сказаться на энергопотреблении и на производительности (как минимум в тех тестах, которые используют вывод на экран). Я сейчас ни в коей мере не оправдываю старенькие экраны, которые Apple с маниакальным упорством продолжает устанавливать в устройства стоимостью под тысячу долларов, а просто заостряю внимание на том, что производительность и энергоэффективность устройств с экранами низкого разрешения даже при прочих равных будет выше, чем у смартфонов с экранами QHD.

Что-то такое заподозрили и производители. Так, Sony Xperia Z5 Premium, экран которого (кстати, IPS, бесполезный для целей VR) имеет физическое разрешение 4K (на самом деле нет, даже здесь маркетологи обманули), но логическое — «всего лишь» Full HD, что позволило производителю и потребителя обмануть, и не слишком сильно убить производительность. Похожим образом поступили и в Samsung, разрешив использовать пониженное логическое разрешение на экранах с высокой плотностью точек. Очевидно, интересы маркетологов идут вразрез с интересами как пользователей этих устройств, так и собственных разработчиков компании.

Вместо заключения: нужны ли нашему телефону 64 бита?

Так ли нужны 64-разрядные процессоры в мобильных устройствах? Ведь у 32-разрядных вычислительных ядер есть свои преимущества. Такие процессоры могут работать быстрее 64-разрядных из-за меньшей длины инструкций вследствие меньшей длины адреса, и, как результат, они менее требовательны к объему оперативной памяти; в них можно реализовать более короткую очередь команд, что также может дать выигрыш в производительности в определенных сценариях.

Некоторые из этих преимуществ так и останутся теоретическими, но в ряде современных сценариев использования без поддержки команд ARMv8 уже не обойтись. Это и потоковое шифрование, и склейка HDR в режиме реального времени, и многие другие малозаметные вещи. Как бы там ни было, производители процессоров перешли на 64-разрядные ядра с поддержкой ARMv8, и это свершившийся факт.

Вот только производители смартфонов не спешат переходить на 64-битные сборки операционных систем.

Так, в природе не существует ни одного смартфона под управлением Windows 10 Mobile, в котором операционная система работала бы в 64-разрядном режиме. И Lumia 950 (Snapdragon 808), и Lumia 950 XL (Snapdragon 810), и даже относительно свежий Alcatel Idol 4 Pro (Snapdragon 820) работают под управлением 32-битной сборки Windows 10 Mobile.

Не отстают и производители телефонов с Android. К примеру, у Lenovo, выпускающей смартфоны под маркой Motorola, есть всего два устройства с «правильным» 64-разрядным Android: это флагманы линейки Moto Z (обычная версия и разновидность Force) и Moto Z2 Force. Все остальные устройства — и бюджетный Moto G5 на Snapdragon 430, и свежий субфлагман Moto Z2 Play на Snapdragon 626 — работают в 32-битном режиме.

Ряд устройств других производителей (например, BQ Aquaris X5 Plus использует мощный Snapdragon 652 в 32-разрядном режиме). Нужно ли говорить, что такие устройства не выжимают максимума из доступных аппаратных возможностей?

С другой стороны, не все идеально и у Apple. Даже 64-разрядные приложения, скомпилированные в нативный код, из-за требований обратной совместимости вынуждены ограничиваться набором команд, доступным в самых ранних процессорах компании — Apple A7 образца 2013 года. А вот у компилятора байт-кода ART, который используется в Android с 5-й версии, таких проблем нет: байт-код приложений компилируется в оптимизированный нативный код, использующий все доступные на текущем железе инструкции.

Впрочем, будем жить с тем, что есть. За максимальной производительностью процессорных ядер и гарантированной оптимизацией — к Apple. То же самое, только в полтора-два раза похуже и во столько же раз дешевле, — к сонму производителей трубок на Android.

Источник

Последние новости