Приготовьтесь, разработчики Android, грядет новый компилятор Android

Опубликовано: 2022-03-11

Фрагментация была источником разочарования для разработчиков и пользователей Android в течение многих лет; теперь кажется, что все станет еще хуже, прежде чем станет лучше. Снова выходит новый компилятор Android, и есть некоторые примечательные разработки на аппаратном фронте, которые могут повлиять на разработчиков.

С исчезновением Dalvik многие ожидали, что новая 64-разрядная среда выполнения ART от Google будет существовать годами, что, вероятно, и произойдет, но в ближайшем будущем она подвергнется капитальному ремонту. В дополнение к поддержке 64-битного оборудования ART также представил компиляцию с опережением (AOT), в то время как Dalvik был компилятором точно в срок (JIT). Новый оптимизированный компилятор откроет еще больше возможностей.

Иллюстрация компилятора Android

Что касается аппаратных разработок, то в индустрии систем-на-чипе для смартфонов есть несколько новых тенденций и несколько новых и старых игроков, но об этом я расскажу позже.

Во-первых, давайте взглянем на планы времени выполнения Google.

Dalvik, ART, ART с новым компилятором Android

ART был представлен в Android 5.0 в прошлом году на Nexus 9 и Nexus 6, хотя в последнем использовался 32-разрядный процессор ARMv7-A. Однако вместо того, чтобы разрабатываться с нуля, ART на самом деле был эволюцией Dalvik, которая отошла от JIT.

Dalvik компилирует приложения на лету по мере необходимости. Это, очевидно, увеличивает нагрузку на ЦП, увеличивает время, необходимое для запуска приложений, и сказывается на времени автономной работы. Поскольку ART компилирует все заранее, при установке ему не нужно тратить тактовые циклы на компиляцию каждый раз, когда устройство запускает приложение. Это приводит к более плавному взаимодействию с пользователем, в то же время снижая энергопотребление и увеличивая срок службы батареи.

Так что же Google собирается делать дальше?

Поскольку ART был разработан для использования преимуществ новых 64-битных процессорных ядер ARMv8, которые начали появляться в сети в конце прошлого года, исходный компилятор, похоже, был временной мерой. Это означало, что приоритетом было время выхода на рынок, а не эффективность и оптимизация. Это не означает, что АРТ была просто неудачной спешкой, потому что это не так; среда выполнения работает хорошо и получила высокую оценку разработчиков и пользователей.

Тем не менее, есть возможности для улучшения, и теперь, похоже, Google уже какое-то время работает над значительно улучшенным компилятором, и эти усилия, вероятно, предшествовали официальному выпуску ART. Британский разработчик чипов, ARM, недавно раскрыл несколько интересных фактов о планах Google по времени выполнения, указав на новый «оптимизирующий» компилятор для ART. Новый компилятор предлагает промежуточные представления (IR), которые позволяют манипулировать структурой программы до генерации кода. Он использует один уровень промежуточного представления, структурированный как информационный граф, который предоставляет более точную информацию для частей компилятора, учитывающих архитектуру.

Новый компилятор Android для разработчиков Android

«Быстрый» компилятор использует два уровня промежуточного представления, с простыми связанными списками инструкций и переменных, но теряет важную информацию при создании IR.

ARM утверждает, что новый «оптимизирующий» компилятор предлагает ряд значительных преимуществ, описывая его как «большой скачок вперед» с точки зрения технологии компилятора. Компилятор предложит лучшую инфраструктуру для будущих оптимизаций и поможет улучшить качество кода.

Ключевые особенности оптимизации и быстрого компилятора

ARM обрисовала разницу между двумя компиляторами на одном слайде, заявив, что «оптимизирующий» компилятор обеспечивает более эффективное использование регистров, меньшее попадание в стек и требует меньше кода для выполнения.

Вот как об этом говорит ARM:

Quick имеет очень простой алгоритм распределения регистров.

  • Отсутствие информации в ИР
  • Скорость компиляции важнее сложности — берет начало как JIT
  • Низкая производительность — в стек попало много регистров.

Оптимизация использует распределение регистров линейного сканирования.

  • Отличный компромисс между производительностью и временем
  • Используется анализ живучести
  • Сведение к минимуму переноса регистров в стек»

Хотя новый компилятор все еще находится в разработке, ARM поделилась несколькими показателями производительности; в синтетических тестах ЦП компилятор дает прирост производительности в диапазоне от 15 до 40 процентов. Скорость компиляции увеличена примерно на 8 процентов. Однако компания предупреждает, что цифры «меняются ежедневно» по мере развития нового компилятора.

Основное внимание уделяется достижению почти паритета с «быстрым» компилятором, который в настоящее время имеет явное преимущество в скорости компиляции и размере файла.

Прямо сейчас это выглядит как компромисс; новый «Оптимизированный» компилятор обеспечивает впечатляющие улучшения производительности в приложениях, привязанных к ЦП, и синтетических тестах, но приводит к увеличению файлов на 10%, которые компилируются примерно на 8% медленнее. Хотя последние два показателя, кажется, перевешивают прирост производительности ЦП, имейте в виду, что они будут применяться к каждому приложению, независимо от загрузки ЦП, используя еще более ограниченные ресурсы, такие как ОЗУ и хранилище. Помните, что 64-битная компиляция уже занимает больше оперативной памяти, чем 32-битная.

Любое снижение скорости компиляции и времени запуска также является источником беспокойства из-за его влияния на скорость отклика устройства и взаимодействие с пользователем.

Гонка многоядерных ARM

Еще одним источником беспокойства, независимо от среды выполнения и компилятора, является популярность многоядерных процессоров на основе архитектур ARMv7-A и ARMv8. Увлечение восьмиядерными процессорами началось в 2013 году и было быстро отвергнуто как дешевый маркетинговый ход. Один из руководителей Qualcomm дошел до того, что назвал восьмиядерные процессоры «глупыми» и «тупыми», заявив, что компания не будет производить их, потому что ее инженеры «не тупые». Тот же руководитель назвал поддержку 64-битной версии Apple A7 «уловкой».

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

многоядерная рука

Как будто 8-ядерных чипов недостаточно, в следующем году мы увидим первые устройства на базе 10-ядерных прикладных процессоров. Первый 10-ядерный чип для смартфонов будет выпущен MediaTek в форме Helio X20 и будет иметь три кластера ядер ЦП, получивших название huge.Medium.TINY. Звучит весело, и становится лучше; скоро мы увидим первые доступные Android-устройства на базе процессоров Intel нового поколения.

Давайте посмотрим на основные войны ARM и на то, что они значат для разработчиков и потребителей. Существует две различные версии восьмиъядерных процессоров ARM SoC. Высокопроизводительные решения, как правило, используют компоновку ARM big.LITTLE, использующую четыре ядра с низким энергопотреблением и четыре больших ядра для высокой нагрузки. Второй способ вставить восемь процессорных ядер ARM в чип — использовать идентичные ядра или идентичные ядра в двух кластерах с разными тактовыми частотами.

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

ARM big.LITTLE по сравнению с обычным восьмиядерным процессором:

Использование двух кластеров с разными ядрами ЦП обеспечивает хорошую производительность и эффективность одного потока в проектах big.LITTLE. Компромисс заключается в том, что одно ядро ​​Cortex-A57 по размеру примерно равно четырем небольшим ядрам Cortex-A53 и менее эффективно.

Использование восьми одинаковых ядер или восьми одинаковых ядер в двух кластерах с разными тактовыми частотами является экономичным и энергоэффективным. Однако производительность одного потока низкая.

Текущее поколение конструкций big.LITTLE на базе ядер ARMv8 не может использовать самый дешевый 28-нм производственный узел. Даже при 20-нм техпроцессе некоторые конструкции сильно тормозят, что ограничивает их устойчивую производительность. Стандартные восьмиъядерные процессоры на основе ядер ЦП Cortex-A53 могут быть эффективно реализованы в 28-нм техпроцессе, поэтому производителям микросхем не нужно использовать передовые производственные узлы, такие как 20-нм или 16/14-нм FinFET, что снижает затраты.

ARM big.LITTLE против обычного восьмиядерного процессора

Я не хочу утомлять вас тенденциями в дизайне чипов, но важно помнить несколько основных моментов для мобильных процессоров 2015 и 2016 годов:

  • Большинство чипов будут использовать 28-нм производственные узлы и ядра Cortex-A53, что ограничивает производительность в однопоточном режиме.
  • Большое ядро ​​Cortex-A57 реализовано в двух основных проектах от Samsung и Qualcomm, но другие производители чипов, похоже, пропускают его и ждут ядра Cortex-A72.
  • Многопоточная производительность будет становиться все более актуальной в течение следующих 18 месяцев.
  • Большого прироста производительности нельзя ожидать до тех пор, пока 20-нм и узлы FinFET не станут значительно дешевле (2016 г. и позже).
  • Также появятся 10-ядерные модели.

Все эти моменты имеют определенные последствия для разработчиков Android. Пока производители чипов застряли на 28-нм техпроцессах для большинства чипов для смартфонов и планшетов, разработчикам придется делать все возможное, чтобы использовать многопоточную производительность и сосредоточиться на эффективности.

ART и новые компиляторы должны значительно улучшить производительность и эффективность, но они не смогут нарушить законы физики. Старые 32-разрядные конструкции не будут использоваться во многих устройствах в будущем, и даже самые дешевые устройства начинают поставляться с 64-разрядным кремнием и Android 5.0.

Хотя Android 5.x по-прежнему имеет относительно небольшую базу пользователей, она быстро растет и будет расширяться еще быстрее, когда появляются телефоны стоимостью от 100 до 150 долларов с 64-разрядными чипами и Android 5.0. Переход на 64-битный Android проходит успешно.

Большой вопрос заключается в том, когда Dalvik получит новый оптимизированный компилятор. Он может выйти в конце этого года или в следующем году с Android 6.0; еще слишком рано говорить наверняка.

Гетерогенные вычисления на мобильных устройствах

Есть еще одна вещь, о которой следует помнить; мобильная графика становится все более мощной, особенно на высокопроизводительных процессорах, поэтому производители микросхем проделывают большую работу за кулисами, чтобы использовать ее для других целей, помимо игр и декодирования видео. Гетерогенные вычисления существуют уже несколько лет, позволяя ПК переносить высокопараллельные задачи на GPU.

Та же технология теперь подходит и для мобильных процессоров, эффективно объединяя ядра ЦП и ГП. Этот подход позволит разработчикам повысить производительность за счет выполнения определенных типов программ, а именно загрузки OpenCL, на GPU. Разработчики смогут сосредоточиться на пропускной способности, в то время как процессоры будут автоматически обрабатывать параллельное выполнение на ЦП и графических процессорах.

Гетерогенные вычисления

Конечно, это не будет работать в каждом приложении и снизит нагрузку во всех ситуациях, но в некоторых нишах это должно повысить производительность и помочь снизить энергопотребление. В зависимости от нагрузки SoC автоматически решает, как обрабатывать код, используя ЦП для одних задач и перекладывая другие на ГП.

Поскольку мы имеем дело с параллельными приложениями, ожидается, что этот подход приведет к самым большим улучшениям в обработке изображений. Например, если вам нужно использовать сверхвысокое разрешение и передискретизировать изображения, процесс можно разделить на несколько этапов в OpenCL. Если процесс включает в себя разные этапы, такие как find_neighbor , col_upsample , row_upsample , sub и blur2 , аппаратное обеспечение будет распределять нагрузку между ядрами CPU и GPU наиболее эффективным образом, в зависимости от того, какое ядро ​​лучше всего справится с данной задачей. способ. Это не только повысит производительность на порядок, но и поможет снизить энергопотребление.

Intel воскресла из мертвых, и она хорошо выглядит для трупа

Intel упустила возможность совершить мобильную революцию и практически уступила рынок ARM и ее партнерам по аппаратному обеспечению. Тем не менее, у американского производителя чипов есть деньги и ресурсы, чтобы провести несколько лет на скамейке запасных и вернуться.

В прошлом году Intel субсидировала продажи своих процессоров Atom для планшетов, увеличив поставки в четыре раза менее чем за год. Теперь он обращает свое внимание на сегмент смартфонов с новыми процессорами SoFIA Atom x3. Честно говоря, я не совсем уверен, что эти чипы можно вообще называть процессорами Intel, потому что на самом деле они не производятся чиповым гигантом. Процессоры SoFIA разрабатываются с ограниченным бюджетом в сотрудничестве с китайскими производителями микросхем. Они производятся на узле 28 нм, они медленные, крошечные и дешевые.

интерл и андроид

Это может стать неожиданностью для некоторых случайных наблюдателей, но Intel не беспокоится о мобильных решениях высокого класса; недорогие детали SoFIA будут использоваться в коммерческих телефонах Android по цене от 50 до 150 долларов. Поставки первых образцов должны начаться к концу второго квартала 2015 года, и большинство из них будет предназначено для азиатских рынков, а также для развивающихся рынков в других частях мира. Хотя вполне возможно, что мы увидим некоторые из них в Северной Америке и Европе, Intel, похоже, сосредоточила свое внимание на Китае и Индии.

Intel делает ставку на процессоры Atom x5 и x7, которые будут использовать совершенно новую архитектуру, а также передовой 14-нм производственный узел компании. Однако эти продукты предназначены для планшетов, а не для смартфонов, по крайней мере, на данный момент.

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

В прошлом году Intel доказала, что готова терпеть убытки и тратить миллиарды долларов, чтобы закрепиться на рынке планшетов. Еще слишком рано говорить о том, будет ли использоваться тот же подход с новыми чипами Atom, особенно с продуктами SoFIA для смартфонов.

Пока я видел только один реальный продукт на базе процессора Intel SoFIA — китайский планшет за 69 долларов с возможностью подключения 3G. По сути, это телефон большого размера, поэтому, как вы можете себе представить, телефон SoFIA начального уровня может стоить намного меньше. Это должно быть заманчивым предложением для производителей смартфонов и планшетов, так как они могут легко разработать устройства стоимостью от 50 до 100 долларов с наклейкой «Intel Inside» на задней панели, что с точки зрения маркетинга звучит хорошо.

К сожалению, мы можем только догадываться, сколько телефонов и планшетов Intel будет выпущено в течение следующего года или около того. Очевидно, мы имеем дело с миллионами единиц, десятками миллионов, но вопрос: сколько десятков? Большинство аналитиков считают, что в этом году Intel поставит от 20 до 50 миллионов процессоров Atom x3, что является каплей в море, учитывая, что общий объем поставок смартфонов в этом году, по прогнозам, достигнет 1,2 миллиарда устройств. Тем не менее, Intel безжалостен, у нее есть деньги, которые нужно сжигать, и ей не нужно получать прибыль ни от одного из этих чипов. К концу 2015 года он может занять от 3 до 4 процентов рынка, но доля рынка должна продолжать расти в 2016 году и далее.

Что это значит для разработчиков Android?

Intel получила плохую репутацию среди некоторых разработчиков Android из-за определенных проблем с совместимостью. Пару лет назад это было настоящей проблемой, потому что аппаратное обеспечение сильно отличалось от стандартных ядер ARM, используемых в большинстве устройств.

К счастью, за два года компания добилась значительного прогресса; он предлагает обширные программы обучения, исчерпывающую документацию и многое другое. На самом деле, беглый взгляд на списки вакансий LinkedIn показывает, что Intel нанимает десятки Android-разработчиков, и каждый месяц открывается несколько новых вакансий.

Значит, все идет хорошо, верно? Смотря как…

На прошлой неделе у меня была возможность протестировать новый телефон Asus на базе процессора Intel Atom Z3560, и я должен сказать, что остался доволен результатами; это хорошая аппаратная платформа, способная работать с 4 ГБ ОЗУ на бюджетном устройстве. Asus считает, что в этом году может продать 30 миллионов устройств, что действительно впечатляет, учитывая долю Intel на рынке смартфонов.

Единственная проблема заключается в том, что некоторые приложения для Android по- прежнему некорректно работают на оборудовании Intel . Обычно это не так уж и много, но вы получаете некоторые странные сбои, нереалистичные результаты тестов и другие причуды совместимости. Плохая новость заключается в том, что разработчики мало что могут сделать для решения проблем, связанных с аппаратным обеспечением, хотя получение некоторых устройств на базе Intel для тестирования было бы хорошим началом. Хорошие новости: Intel делает все возможное, чтобы разобраться во всем со своей стороны, так что вам не придется.

Что касается оборудования ARM, мы увидим больше ядер ЦП в еще большем количестве кластеров. Производительность одного потока останется ограниченной на многих основных устройствах, а именно на недорогих телефонах на базе четырех- и восьмиядерных SoC Cortex-A53. Пока рано говорить о том, смогут ли новые компиляторы Google/ARM повысить производительность на таких устройствах. Вероятно, будут, но насколько? Гетерогенные вычисления — еще одна тенденция, на которую стоит обратить внимание в следующем году.

Подводя итог, вот что разработчики Android должны ожидать с точки зрения программного и аппаратного обеспечения в конце 2015 и 2016:

  • Больше процессоров Intel x86 в начальном и основном сегментах рынка.
  • Доля рынка Intel будет незначительной в 2015 году, но может увеличиться в 2016 году и далее.
  • В сети появится больше многоядерных процессоров ARMv8.
  • Новый «оптимизированный» компилятор ART.
  • Приближаются гетерогенные вычисления, но это займет некоторое время.
  • Переход на производственные узлы FinFET и Cortex-A72 откроет больше производительности и возможностей.