Блог Элкомсофт

«…Восстановление паролей, расшифровка данных,
мобильная и облачная криминалистика… »


Почему Apple лучше: iPhone vs. Android

Июль 13th, 2018 by Oleg Afonin
  • 9
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    9
    Shares

Почему iPhone 7 работает быстрее Samsung Galaxy S7, а iPhone 8 – быстрее Galaxy S8? Если оставить в стороне оптимизацию (с которой у Samsung, честно говоря, просто беда), есть и различия в идеологии операционных систем, и байт-код JVM в Android. Действительно ли в конечном счете всё сводится к тому, что в Apple поддерживают ограниченный диапазон аппаратного обеспечения собственной разработки, что позволяет оптимизировать операционную систему до совершенства? Мы готовы поспорить с этим утверждением, приведя аргументы в пользу аппаратной начинки iPhone, одним из основных преимуществ которого были и остаются уникальные системы на чипе. Процессоры 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 бита, ARMv8). Также выходит Snapdragon 805, основанный на той же архитектуре Krait 400, но оснащённый более мощным GPU. Процессоры Apple оказываются быстрее аналогов от Qualcomm как в однопоточных, так и в многопоточных вычислениях, а в специфических применениях – например, в реализации поточного шифрования – обходят решения конкурентов просто в разы. Qualcomm усиленно делает вид, что ничего необычного не происходит, но производители с ножом к горлу требуют конкурентоспособную SoC. Qualcomm ничего не остаётся, как включиться в гонку.

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

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

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

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

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

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

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

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

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

Минуточку! 2012 год? Именно так: 64-разрядные ядра A53 были анонсированы в октябре 2012 года. Но архитектура ядра – это одно, а реальные процессоры – совсем другое: ARM Holdings их просто не выпускает, предлагая партнёрам референсные дизайны, но не поставляя на рынок сами SoC. Прежде, чем на рынке появится смартфон, основанный на той или иной архитектуре, кто-то должен разработать и выпустить готовую систему на чипе, System on a Chip (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. Но не было ли слишком поздно?

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

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

Geekbench: данные с https://browser.geekbench.com/android-benchmarks

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

Если отбросить пару процессоров 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. Даже с учётом разницы в техпроцессе (16 против 14нм), разница в площади – а значит, и количестве транзисторов, — просто бросается в глаза. Как мы помним, большая площадь – это большая стоимость производства.

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

Действительно, лишние 5-6 долларов не сыграют большой роли в конечной стоимости iPhone – это доли, в худшем случае – единицы процентов его стоимости для потребителя. Но если эти 5-6 долларов способны удвоить производительность устройства по сравнению с конкурентами на 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 года – опять преимущество во времени, на сей раз в 4.5 года.

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

Оптимизация – важнейшая составляющая производительности. Традиционно у 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 приходится обрабатывать почти в 4 раза больше пикселей, чем iPhone, что не может не сказаться на энергопотреблении и на производительности (как минимум в тех тестах, которые используют вывод на экран). Мы ни в коей мере не оправдываем старенькие экраны, которые Apple с маниакальным упорством продолжает устанавливать в устройства стоимостью под тысячу долларов, а просто заостряем внимание на том, что производительность и энергоэффективность устройств с экранами низкого разрешения даже при прочих равных будет выше, чем у смартфонов с экранами QHD.

Что-то такое заподозрили и производители. Так, Sony Xperia Z5 Premium, экран которого (кстати, IPS, бесполезный для целей VR) имеет физическое разрешение 4К (на самом деле нет, даже здесь маркетологи обманули), но логическое – «всего лишь» 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.


  • 9
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    9
    Shares

Tags: , , ,

Подписаться на рассылку о новостях и новинках компании ElcomSoft

Комментирование статьи отключено