Для самых первых моделей продуктов Apple, iPhone и iPad, компания лицензировала и использовала для вывода графики чип PowerVR GPU от Imagination Technologies. Apple даже приобрела около 10% компании Imagination и является её крупнейшим клиентом, принося около 30% дохода. И так же, как Apple начинала с использования по лицензии ARM CPU, а теперь пользуется собственными разработками, она, судя по всему, перешла от использования PowerVR к разработке собственного GPU. Впервые он появился в процессоре A8, использующемся в iPhone 6, а его потомки находятся в A9 и A10 Fusion, используемых в iPhone 6S и 7.

Современный GPU, такой, какие находятся внутри iPhone и iPad, обладают тремя основными компонентами, от которых требуется слаженная работа для демонстрации картинки. Первый – железо, обеспечивающее графику с фиксированными функциями, отвечающее за обработку команд API, растеризацию треугольников и растровый вывод. Второй – шейдерное ядро, сердце GPU, выполняющее программные шейдеры (вертексы, геометрия, пиксели и вычисление шейдеров). Последний – программный; графический драйвер, работающий на CPU и объединяющий все функции, управляющий работой GPU. Драйвер преобразовывает графические приложения, написанные на Metal или OpenGL ES API в набор команд для железа с фиксированными функциями и в программируемые шейдеры, работающие в шейдерных ядрах. Один из важнейших компонентов драйвера – компилятор, создающий машинный код для работы на шейдерных ядрах.

В старых поколениях железо с фиксированными функциями, шейдерные ядра и драйвер Apple использовала по лицензии от Imagination Technologies. Но за последние 6-7 лет Apple агрессивно нанимала графических архитекторов и программистов компиляторов и драйверов из таких компаний, как AMD, Intel, Google и Nvidia для разработки собственного GPU. К примеру, Майк Вуэртеле [Mike Wuerthele] из Apple Insider писал, что в этом году порядка 25 человек перешли из Imagination Technologies в Apple. GPU от Apple, судя по всему, до сих пор ииспользует железо с фиксированными функциями от PowerVR. Но на основании различных доказательств, имеющихся в открытом доступе, понятно, что Apple заменила программируемые шейдерные ядра своими собственными, более эффективными и быстрыми. Для получения преимущества от их использования Apple также разработала свои драйвер и компилятор, выдающие код для своей архитектуры. Общим результатом этого стал уникальный собственный дизайн GPU, несмотря на некоторое наследие, оставшееся от PowerVR. Это дизайн мирового класса с впечатляющим быстродействием и энергетической эффективностью. У процессора A9 лучшие результаты по всем измерениям скорости, а A10 Fusion ещё на 40-50% быстрее.

Документация на архитектуру GPU от Apple никогда не попадала в общий доступ. Чтобы разработчики могли использовать преимущества GPU, им надо разобраться в том, как писать шейдерные программы для компиляторов Metal и OpenGL. На конференции WWDC 2016 инженеры Apple презентовали «Передовую оптимизацию шейдеров для Metal», содержащую самые подробные инструкции по подстройке и деталям архитектуры их GPU на сегодняшний день. Архитектура PowerVR Series 6 GPU также страдает отсутствием документации, но Imagination Technologies поделились несколькими простейшими инструкциями по оптимизации. Сравнивая доступную информацию по двум этим чипам, можно заключить, что они очень различаются. В частности, у Apple набор регистров и функции преобразования данных лучше предназначены для быстродействия и эффективного использования энергии, а компилировать их проще.

Apple улучшает быстродействие и энергетическую эффективность при помощи регистров меньшего размера


API мобильной графики OpenGL ES и Metal API поддерживают 16-битный формат половинной точности с плавающей запятой, используемый для подсчётов и хранения данных изображения, потребляющий меньше энергии, чем 32-битные расчёты одинарной точности. Расчёты с половинной точностью в некоторых случаях быстрее теряют точность, чем расчёты одинарной точности. Но для многих приложений, работающих с графикой, обработкой изображений и машинный обучением, половинной точности достаточно для выдачи правильных результатов – особенно в связи с тем, что у большинства дисплеев динамический диапазон одного пикселя составляет от 8 до 12 бит.

Набор регистров для GPU от Apple состоит из 16-битных регистров, идеально подходящих для полуточных данных, если судить по презентациям, доступным в открытом доступе [1]. Данные одинарной точности с плавающей запятой и другие 32-битные данные требуют двух регистров. В результате, набор регистров может хранить в два раза больше 16-битных переменных, чем 32-битных. Инженеры Apple подчёркивают, что использование полуточных расчётов приводит к серьёзному увеличению быстродействия и экономии энергии по сравнению с одинарной точностью, что говорит о том, что их архитектура сконцентрирована на использовании половинной точности как основной концепции в дизайне.

По контрасту, GPU PowerVR Series 6 и 7 используют 32-битные регистры и разработаны для расчётов одинарной точности, если судить по инструкциям от Imagination Technologies [2]. В Series 6 самые часто используемые инструкции, FMAD, FMUL и FADD, умеют работать с половинной точностью, но просто обнуляя несколько битов исходных и результирующих регистров. Некоторые инструкции могут работать с двумя 16-битными элементами SIMD внутри одного регистра (а Series 7 расширяют эти возможности на большее число инструкций), но исполнение SIMD сильно отличается от скалярного исполнения при помощи 16-битных регистров. Для PowerVR хранение данных в 16-битном формате – трата памяти регистров впустую, при этом максимальное количество хранимых переменных не удваивается автоматически. Поэтому использование 16-битных данных должно уменьшить объёмы проходящих через память данных и потребление энергии, но не обязательно увеличит быстродействие или эффективность энергозатрат, как это получается у GPU от Apple.

Простое преобразование даёт программистам доступ к половинной точности


Одна из распространённых проблем 16-битных данных в том, что хотя большинство расчётов не доставляют проблем с уменьшением точности, некоторым всё-таки требуется высокая точность. К примеру, шейдер, подсчитывающий цвет большого блока пикселей, а затем подсчитывающий среднее, может обойтись 16 битами для каждого отдельного пикселя, но может потребовать использовать 32 бита при суммировании данных для точного подсчёта. Если преобразование пиксельных данных из 16 в 32 бита будет слишком затратным, шейдер будет использовать 32 бита для выдачи точного результата.

GPU от Apple предлагает очень быстрое преобразование между типами данных, чем поощряет смешивание точности и создаёт больше возможностей для быстродействующих и мало потребляющих 16-битных расчётов. Согласно их презентации, преобразование типов данных «бесплатное» – видимо, где-то на пути данных сидит аппаратный преобразователь. С точки зрения «железа» этот подход дороже, но он, кроме прочего, серьёзно упрощает компилятор и делает работу программистов легче.

PowerVR Series 6 и 7 могут делать преобразования точности данных, но, конечно, не «бесплатно». В инструкции по оптимизации чётко написано, что каждое преобразование данных (с понижением или повышением точности) затратное, и рекомендует программистам писать шейдеры с минимальным количеством преобразований [3].

GPU от Apple: разница в технологиях


Разница между набором регистров и преобразованием данных в GPU от Apple и в GPU от Imagination огромна. Организация набора регистров – это основа ядра шейдера, она влияет на дизайн практически всего, от архитектуры набора инструкций шейдерных ядер до выполнения частей кода и логики диспетчеризации. Как пример, размер регистра определяет путь данных и схему практически всей работы шейдерного ядра. Преобразование данных влияет не так сильно, но разница весьма важна для компилятора и для разработчиков. PowerVR Series 7 GPU довольно похож на предыдущее 6-е поколение, и использует 32-битные регистры. На основе этой разницы можно заключить, что GPU от Apple использует собственные шейдерные ядра, разработанные в компании. А это значит, что Apple разработала и свой собственный компилятор шейдеров для OpenGL ES и Metal API, и, скорее всего, и свой графический драйвер.

Даже некоторые программы, измеряющие быстродействие, видят разницу. В результаты GFXBench как-то попала таблица, где GPU для iPhone 7 описан, как G9.



Но этот результат теста из публичной базы скоро потёрли, и все упоминания о G9 исчезли.

Есть много других отличий Apple GPU и PowerVR, которые можно обнаружить, запуская специальные тесты с шейдерами Metal и сравнивая результаты со схожими шейдерами OpenGL ES на PowerVR GPU. Не все различия будут относиться к железу. К примеру, Apple GPU поддерживает версии OpenGL ES до 3.0, а PowerVR GPU работает и с более поздними. Но такие различия могут проявляться из-за особенностей софта и драйверов.

Стратегические преимущества собственного дизайна


Вертикальная интеграция Apple уникальна для потребительской электроники. В случае iPhone и iPad компания контролирует почти всё – от дизайна базовых контуров процессора до ОС и сервисов для пользователей Maps, iMessage и Camera. Это позволяет играть на совместной работе железа и софта, что недостижимо для их конкурентов.

Общий тренд понятен – на каждом шагу Apple увеличивает контроль над платформой и экосистемой. Изначально Apple использовала стандартные ARM-процессоры, а большую часть работы отдавала на аутсорс Samsung, но в итоге разработала собственные CPU, совместимые с ARMv8, опережающие соперников. Схожим образом компания купила Anobit и использовала команду и технологию для создания собственного контроллера хранилища для флэш-памяти. Разработка собственного CPU – всего лишь следующий шаг по созданию стратегических преимуществ.

Самое очевидное из них – GPU от Apple лучше (быстрее и эффективнее), чем у соперников, включая GPU от ARM или Imagination, а также Qualcomm. Лидерство в быстродействии означает большую удовлетворённость пользователей и меньший разряд батареи как в случае с играми, так и в случае генерации изображений и машинного обучения.

Библиотека Metal Performance Shaders включает десятки хорошо оптимизированных шейдеров, работающих на GPU и предоставляющих богатый набор инструментов разработчикам [4]. Они включают нейросети для классификации, процедуры обработки изображений. Instagram использует GPU для эффекта tonemapping и улучшения контраста фотографий. Возможно даже, что камера apple использует GPU для разных эффектов. Для работы с изображениями и нейросетей половинная тчоность подходит идеально, и архитектура шейдеров Apple показывает лучшие результаты, чем у PowerVR.

Второе преимущество – Apple может создавать новые функции и исправлять ошибки в GPU, не принося этим пользы конкурентам.

Третье – время до выхода на рынок и планирование. Процессоры серии A выходят по агрессивному ежегодному циклу, задаваемому iPhone. Поскольку iPhone – премиальный продукт, Apple должна поразить пользователей быстродействием и показать хороший прогресс для стимуляции спроса. В результате Apple часто становится ведущим клиентом новых технологий (например, 10нм от TSMC), что подразумевает и большой риск. С собственным GPU компания может решить потратить на достижение цели столько времени и энергии, сколько нужно. У Imagination просто меньше денег и сотрудников.

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

Гипотетический пример – если инженеры Apple обнаружат серьёзную ошибку в ядре шейдера, они в тот же день смогут её исправить и проверить. Участие третьей стороны означает, что эта сторона для начала должна сама оценить приоритет ошибки, одобрить изменения или пути обхода, что может занять некоторое время из-за необходимости координации действий с другими клиентами. Exynos 5410 от Samsung – хрестоматийный пример опасности работы с интеллектуальной собственностью третьей стороны. Его разработали на основе Cortex A15 и A7 от ARM в конфигурации Big.Little для экономии энергопотребления, но из-за ошибки согласованности кэшей Samsung пришлось отключить функции экономии энергии. Собственные разработки сильно уменьшают такие риски, поскольку в этом случае отсутствует конфликт интересов, а передача информации внутри компании проходит гораздо легче, чем между компаниями.

Последнее преимущество собственной разработки GPU, это уменьшение зависимости от поставщиков, что даёт компании выгодные позиции при ведении переговоров и уменьшает риски бизнеса. Создание альтернатив для ключевых поставщиков, внутренних или внешних, это один из старинных принципов Apple. К примеру, Apple была зависима от Qualcomm и их LTE-модемов для iPhone. Когда Intel разработал конкурирующий модем, Apple приспособила его для большинства GSM-провайдеров. В перспективе это позволяет уменьшать расходы и рождает интересные возможности.

Собственный GPU создаёт скрытую альтернативу использования интеллектуальной собственности Imagination в будущем. Компания уже создала команду разработки GPU и команду драйвера, вместе разработавшие большую часть процессоров A8, A9 и A10. Если бы Imagination Technologies была куплена или отстала в технической части, Apple сможет просто разработать собственное железо для графики с фиксированными функциями на замену PowerVR.

Следующие шаги Apple


После многих лет найма графических архитектров, Apple разработала собственный GPU, который уже ставят в процессоры A8, A9 и A10, работающие в iPhone 6, 6S и 7. В GPU всё ещё остаётся железо от PowerVR, но ясно, что шейдерные ядра очень отличаются от тех, что используют Imagination Technologies. Это значит, что Apple сделала собственные компиляторы для Metal и OpenGL ES, и скорее всего, и собственный драйвер.

Судя по истории компании, нет ничего удивительного в разработке собственного GPU. Кроме очевидных преимуществ в быстродействии есть и менее очевидные – улучшенный контроль над экосистемой, меньшее время выхода на рынок, уменьшение количества ошибок.

Впереди у Apple есть три варианта. Status quo – лицензирование железа с фиксированными функциями у Imagination Technologies для дополнения своих компонентов. В этом случае Apple обновится до следующей версии PowerVR, но, наверняка параллельно договорившись на лучшие условия и отчисления. Второй вариант – купить Imagination Technologies. Но с этим придут ненужные побочные проекты (линейка MIPS), да и такую возможность в 2016 году Apple уже упустила. Но Apple может продолжить собственные разработки GPU, что в результате приведёт к преобладанию над Imagination Technologies. Компании придётся решать, справятся ли они лучше самостоятельно, но пока что у них прекрасно получалось достигать квалификации мирового класса в новых областях.

Ссылки


[1] Alex Kan and Fiona, Advanced Metal Shader Optimization. WWDC 2016. Раз и два
[2] PowerVR Series6 Compiler Instruction Set Reference. March 17, 2016
[3] PowerVR Performance Recommendations. March 17, 2016
[4] Metal Performance Shaders Framework
Поделиться с друзьями
-->

Комментарии (13)


  1. Varfalomey
    01.11.2016 12:43
    +30

    я надеялся на гик-порн :( количество ядер/срезы под микроскопом, площадь GPU etc


  1. DimmiSfai
    01.11.2016 12:45
    -2

    Сейчас набегут хейтеры и расскажут как все на самом деле там плохо…


    1. RomanArzumanyan
      01.11.2016 13:22
      +4

      Внутрь так и не заглянули — неизвестно, хорошо там или плохо.


      1. DagothNik
        01.11.2016 13:43
        -1

        По мне, так если этот «чёрный ящик» работает быстро и энергоэффективно — не важно, как там все красиво внутри. Но посмотреть бы хотелось, конечно. Если там все так же красиво, как внутри устройств Apple, то сохранил бы на обои.


  1. Graf_Trahula
    01.11.2016 15:14
    +15

    Где шок контент? Где расчлененка? Где травление кислотой? где рентген?


  1. NikitosZs
    01.11.2016 15:18

    >>улучшенный контроль над экосистемой
    Намёк на то, что эпл контролирует мир?


  1. Salabar
    01.11.2016 15:51
    -2

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


  1. iOrange
    01.11.2016 15:54

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

    Эхх, подробностей бы. За счет чего Apple удалось обогнать специализирующуюся компанию в производительности?


  1. i_Max2
    01.11.2016 16:59

    iOrange, ну Apple в свое время напокупало кучу разных технологических компаний (на вскидку P.A. Semi) и с этими специалистами пробует продвигатся и решать проблемы по быстродействию и энергоеффективности, тем более в статье указывается что еще дополнительно переманиваются нужные специалисты из «братских» компанмй. Изобретения же делают (изобретают) не компании, а конкретные люди в них работающие. Тем более может они по отдельности, на прежних должностях и компаниях, это не смогли сделать а вместе с новыми коллегами сделали пропыв.


    1. iOrange
      01.11.2016 17:30

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


  1. ns3230
    02.11.2016 02:55

    Честно скажу, понял лишь, что на самом деле там не PowerVR, как все пишут, а какой-то перепиленный кастом, который лучше, чем исходная архитектура. Интересно было бы узнать о процессорах: все эти Kryo, Mongoose, Krait и прочие кастомные микроархитектуры, используемые Самсунг, Куалкомм и т.д. — это немного допиленные стандартные Cortex, или кардинальная переработка, у которой от Кортекса оставили ровно столько, сколько нужно для архитектурной совместимости?


  1. Arxitektor
    02.11.2016 20:16
    +1

    А яблоко смогло бы со своими денежными ресурсами прорвать в клочья интеловские процы?
    Производительность, производительность на ватт цена?
    Срок лет 5.
    Если бы имели линензию на x86 архитертуру?
    Ведь какой год все вместе гигинты чипмейкеры не могут догнань эппл чипы по производительности.
    Отставание на поколение а с выходом аА10 и на 2. особенно по производительности на ядро.
    От имеющихся на рынке конкурентов.


    1. Varfalomey
      03.11.2016 11:25

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