Внимание! Настоятельно просим вас покинуть эту страницу, если вам ещё не исполнилось восемнадцать лет! Главный герой этой волнующей истории – молодой человек по имени Сейджи, проживающий в квартире со своей младшей сестрой. Он начинающий писатель и как раз работает над новой повестью. Разумеется, что пики творческой активности сменяются длительным застоем, но парень твёрдо намерен добиться успеха в своём деле. Все шансы на это у него есть. Как и ко многим творческим людям, вдохновение к юноше приходит преимущественно ночью, но даже когда вдохновение плещется через край, человеку нужен отдых. Так что, дописав очередную страницу, молодой мужчина вышел на балкон, чтобы подышать свежим воздухом. Здесь он рассчитывал немного расслабиться, но судьба преподнесла ему совершенно другой сюрприз. Когда парень оказался на балконе, то его глазам предстало роскошное зрелище: его соседка Маки сидела прохладном полу и увлечённо развлекалась сама с собой. А когда она заметила, что у неё появился обаятельный зритель, то её энтузиазм только увеличился. Сейджи поинтересовался, нужна ли девушке помощь, и получив согласие, с радостью и огромным удовольствием занялся с ней совместным досугом. Оказывается, Маки мастерски умеет расходовать свободное время и отличается большой изобретательностью в области отдыха. Теперь совместные вечера стали для соседей приятной традицией, которую они свято соблюдают, даже если кто-то из них занят работой или выполнением каких-то обязанностей. Узнав, насколько весело и интересно бывает с Маки, к компании решила присоединиться и сестра Сейджи. Ведь чем больше – тем веселее! Тем более, Маки – надёжный и опытный человек, она отличается не только прекрасной внешностью, но и отличными организаторскими способностями (лёгкий фемдом, понимаете?). Смотрите хентай «Сейчас с Маки» на нашем сайте в режиме онлайн и хорошем качестве совершенно бесплатно! И не забудьте поделиться впечатлениями от просмотра, ведь ваше мнение может стать для кого-то решающим фактором. В конце концов, не всем так повезло с соседями, как главному герою. А получить свою долю радости, пусть и работая над этим самостоятельно, хочется каждому.
Несколько запоздалый перевод заинтересовавшего меня блогпоста о том, что в действительности дает 64-битность процессора в iPhone без маркетинговой шелухи. Если текст покажется вам слишком очевидным, пропустите часть «Базовые преимущества и недостатки».
Как только был анонсирован iPhone 5S, технические медия были переполнены недостоверными статьями. К сожалению, написание хороших статей занимает время, а мир технической журналистики больше ценит скорость, чем достоверность. Сегодня, по просьбе нескольких своих читателей, я кратко изложу, что дает 64-bit ARM в iPhone 5S в плане производительности, возможностей и разработки.
Содержание
- 64 бита
- Базовые преимущества и недостатки
- ARM64
- Совместимость с 32-битным приложениями
- Изменения в системе периода исполнения
- Переосмысление указателя isa
- Почему современные Маки работают на процессорах Intel
- Чем переход на ARM отличается от перехода на Intel с PowerPC
- Чем Apple может быть интересен уход от процессоров Intel
- Что удерживает Apple от перехода на ARM
- Опыт Apple TV
- Не стоит ждать ARM-MacBook в ближайшем будущем
- Нововведения ARMv8
- Референсные ядра ARM Limited
- Apple A7
- Qualcomm Snapdragon 410, 610, 615, 808 и 810
- MediaTek MT6732, MT6752, MT6795
- NVIDIA Tegra K1 (Project Denver)
- Выводы
- 1 ответ 1
64 бита
Давайте для начала рассмотрим что, собственно, 64-битность означает. С этим термином связанно много путаницы, в основном из-за того, что нет единого устоявшегося определения. Однако, существует общее понимание этого термина. «Битность» обычно означает либо размер числового регистра, или размер указателя. К счастью, для большинства современных процессоров, их размер совпадает. Таким образом, 64-битность означает что процессор обладает 64-битными числовыми регистрами и 64-битными указателями.
Важно также отметить, что 64-битность не означает, т.к. и здесь есть много недопонимания. Итак, 64-битность не определяет:
- Размер адресуемой памяти. Количество бит, реально задействованных в указателе не связано с битностью процессора. Процессоры ARM использует от 26 до 40 бит, и это число может изменяться в отрыве от битности процессора.
- Ширину шины данных. Объем данных, запрашиваемых из RAM или кэша также не связано с битностью. Отдельные процессорные инструкции могут запрашивать произвольные объемы данных, но объем реально единовременно запрашиваемых данных может отличаться, либо разбивая запросы на части, или запрашивая больше чем необходимо. Уже в iPhone 5 размер запрашиваемого блока данных составляет 64 бита, а у PC доходит до 192 бит.
- Все что связано с вычислениями с плавающей запятой. Регистры FPU не связаны с архитектурой и процессоры ARM использовали 64-битные регистры задолго до ARM64.
Базовые преимущества и недостатки
Если вы будете сравнивать идентичные процессоры 32 и 64 битные CPU, вы не найдете больших различий, так что значительность перехода Apple на 64-битные ARM несколько преувеличена. Это важный шаг, но важный, в основном, из-за особенностей ARM и особенностью использования процессора компанией Apple. Тем не менее, некоторые различия имеются. Самым очевидным является 64-битные числовые регистры более эффективно работают с 64-битными числами. Вы можете работать с 64-битными числами и на 32-битном процессоре, но это обычно приводит к работе с двумя 32-битными частями, что работает ощутимо медленнее. 64-битные процессоры, обычно, выполняют операции над 64-битными числами также быстро как и над 32-битными, так что код активно использующий вычисления с 64-битными числами будет работать значительно быстрее.
Не смотря на то, что 64-битность не связана напрямую с объемом адресуемой памяти, она значительно облегчает использование большого объема RAM в рамках одной программы. Программа, запущенная на 32-битном процессоре может адресовать не больше 4GB адресного пространства. Часть памяти выделена под операционную систему и стандартные библиотеки, что оставляет 1-3GB на саму программу. Если у 32-битной системы больше 4GB RAM, то использование всего этого адресного пространства для программы значительно усложняется. Вам придется заняться махинациями вроде последовательного отображение разных частей RAM на часть виртуального адресного пространства или разбивание одной программы на несколько процессов.
Подобные трюки крайне трудозатраны и могут сильно замедлить систему, так что мало кто из программистов реально их использует. На практике, на 32-битных процессорах каждая программа используют до 1-3GB RAM, а вся ценность в обладании большего объема физической оперативной памяти заключается в возможности больше запускать программ одновременно и возможность кеширования больше данных с диска.
Увеличение объема адресного пространства полезно и для систем с небольшим объемом оперативной памяти — memory-mapped файлы, размеры которых могут быть и больше доступной оперативной памяти, т.к. операционная система реально загружает только те части файла, к которым производились обращения и, кроме того, умеет «вытеснять» загруженные данные обратно в файл, освобождая оперативную память. На 32-битных системах нельзя отобразить файлы размером больше 1-3GB. На 64-битных системах, адресное пространство значительно больше, так что такой проблемы нет.
Увеличение размера указателя может быть и ощутимым минусом: таже программа будет использовать больше памяти (возможно, сильно больше) будучи запущенной на 64 битном процессоре. Увеличение используемой памяти также «забивает» кэш, что снижает производительность.
В двух словах: 64-битность может увеличить производительность некоторых частей кода и упрощает некоторые техники, вроде memory-mapped файлов. Однако, производительность может и пострадать из-за увеличения используемой памяти.
ARM64
64-битный процессор в iPhone 5S не просто ARM с увеличенным размером регистров, есть и существенные изменения.
Во-первых, отмечу название: официального название от ARM — «AArch64», однако это — глупое название, печатать которое меня раздражает. Apple называет архитектуру ARM64 и я буду называть также.
ARM64 увеличил вдвое число целочисленных регистров. 32-битный ARM предоставляет 16 целочисленных регистров, из которых один — счетчик команд (program counter), еще два используются для указателя на стэк и регистра связи (link register) и 13 регистров общего назначения. В ARM64 32 целочисленных регистра, с выделенным нулевым регистром, регистром связи и регистром указателя кадра (frame pointer register). Еще один регистр зарезервирован платформой, что оставляет 28 регистров общего назначения.
ARM64 также увеличивает число регистров для чисел с плавающей запятой. Регистры в 32-битных ARM несколько странные, так что сложно сравнивать. У 32-битного ARM 32 32-битных регистров с плавающей запятой, которые могут быть представлены как 16 перекрывающихся 64-битных регистров. Кроме того, есть еще 16 независимых 64-битных регистров. ARM64 упрощает это до 32 неперекрывающихся 128-битных регистров, которые могут быть использован для данных меньшего размера.
Число регистров может значительно влиять на производительность. Память значительно медленнее процессора, и чтение/запись памяти занимает значительно больше времени, чем выполнение инструкций процессора. Процессор пытается исправить это при помощи кэшей, но даже самый быстрый кэш значительно медленнее регистров процессора. Больше регистров — больше данных могут храниться внутри процессора. Насколько это влияет на производительность зависит от конкретного кода и эффективности компилятора, который оптимизирует использование регистров. Когда архитектура Intel перешла от 32 к 64 битам, число регистров увеличилось с 8 до 16, и это было значительное изменение производительности. У ARM уже было больше регистров чем у 32-битной архитектуры Intel, так что увеличение регистров хоть и меньше повлияет на производительность, но это изменение все еще будет заметно.
ARM64 также привнес существенные изменения помимо увеличения числа регистров.
Большинство 32-битных инструкций ARM могут выполняться/не выполняться в зависимости от состояние регистра-условия. Это позволяет транслировать условные выражения (if-statements) без использования ветвления. Предполагалось, что это увеличит производительность, однако, судя по тому, что в ARM64 от этой возможности отказались, она порождала больше проблем, чем давала пользы.
В ARM64 набор SIMD (одна-инструкция-много-данных) NEON полностью поддерживает стандарт IEEE754 для чисел с плавающей запятой с двойной точностью, в то время как 32-битная версия NEON поддерживала только одинарную точность и не в точности следовала стандарту для некоторых битов.
В ARM64 добавили специализированные инструкции для AES шифрования и SHA-1 & SHA-256 хешей. Не слишком полезное в общем, однако существенный бонус если вы занимаетесь именно этими вопросами.
В целом, самым важным отличаем является увеличение числа регистров общего назначения и полная поддержка IEEE754-совметимой арифметики на числах с двойной точностью в NEON. Это может дать ощутимый прирост в производительности в большом числе мест.
Совместимость с 32-битным приложениями
Важно отметить, что A7 включает в себя 32-битный режим совместимости, который позволяет запускать 32-битные приложения без каких либо изменений. Это означает, что iPhone 5S может исполнять любые старые приложения без какого-то влияния на производительность.
Изменения в системе периода исполнения
Apple использует преимущества новой архитектуры в своих библиотеках. Так как им нет надобности беспокоиться о бинарной обратной совместимости при таких изменениях, это отличное время чтобы внести изменения которые в противном случае «поломали» уже существующие приложения.
В Max OS X 10.7 Apple ввела меченные указатели (tagged pointers). Меченные указатели позволяют хранить некоторые классы с небольшим количеством данных в экземпляре напрямую в указателе. Это позволяет избежать выделений памяти в некоторых случаях, например NSNumber и может дать существенный прирост производительности. Меченные указатели поддерживаются только на 64-битной платформе, частично из-за вопроса производительности, а частично из-за того что в 32-битном указателе не так много остается места под «метки». Видимо по-этому, у iOS не было поддержки меченных указателей. Таким образом, в ARM64 в рантайме Objective-C включена поддержка меченных указателей, что дает те же преимущества, что в Mac.
Не смотря на то, что размер указателя составляет 64 бита, не все эти биты на самом деле используются. В Mac OS X на x86-64 используется только 47 битов. В iOS на ARM64 используется еще меньше — только 33 бита. Если маскировать эти биты каждый раз перед использованием то можно использовать остальные биты чтобы хранить дополнительные данные. Это позволило внести одно из самых значительных изменений в рантайм Objective-C за всю его историю.
Переосмысление указателя isa
Большая часть информации в этой секции почерпана из статьи Грега Паркера. Во первых, для освежения памяти: объекты в Objective-C представляют выделенные блоки памяти. Первый часть, размером с указатель, это isa. Обычно, isa это указатель на класс объекта. Чтобы узнать больше о том, как объекты хранятся в памяти, читайте мою другую статью.
Использовать весь размер указателя на указатель isa несколько расточительно, особенно на 64-битной платформе, которая не использует все 64-бита. ARM64 на iOS реально использует 33 бита, оставляя 31 бит для других вещей. Классы в памяти выровнены по границе 8 байт, так что последние 3 бита можно отбросить, что дает 34 бита из isa доступные для хранения дополнительной информации. И Apple-овский рантайм в ARM64 использует это для повышения производительности.
Наверно, самой важной оптимизацией стало встраивание (inline) счетчика ссылок. Практически все объекты в Objective-C обладают счетчиком ссылок (за исключение неизменяемых объектов, таких как литералы NSString) и операции retain/release, которые меняют этот счетчик случаются очень часто. Это особенно критично для ARC, который вставляет вызовы retain/release чаще, чем бы это делал программист. Таким образом, высокая производительность retain/release методов крайне важна.
Обычно, счетчик ссылок не хранится в самом объекте. Можно было бы хранить счетчик ссылок в самом объекте, но это заняло бы слишком много места. Это не так важно сейчас, но тогда, давно, это было весьма существенно. Из-за этого, счетчик ссылок хранится во внешней хеш-таблице. Каждый раз при вызове retain, производятся следующие действия:
- Получить глобальную хеш-таблицу счетчиков указателей
- Заблокировать хеш-таблицу, чтобы операция была потокобезопасной
- Найти в хеш-таблице счетчик для заданного объекта
- Увеличить счетчик на один и сохранить его обратно в таблицу
- Отпустить блокировку хеш-таблицы
Достаточно медленно! Реализация хеш-таблицы счетчиков сделана очень эффективной, для хеш-таблицы, но это все еще значительно медленнее прямого доступа к памяти. В ARM64, 19 бит указателя isa используются для хранения счетчика ссылок. Это означает, что вызов retain упрощается до:
- Произвести атомарное увеличение части isa-поля
И все! Это должно быть гораздо, гораздо быстрее.
На самом деле все несколько сложнее из-за разных краевых случаев, которые тоже надо обработать. По-настоящему последовательность действий приблизительно такая:
- Последний бит в isa говорит, используются ли дополнительные биты в isa для хранения счетчика ссылок. Если нет, используется старый алгоритм с хеш-таблицами.
- Если объект уже удаляется, ничего не выполняется
- Если счетчик переполняется (что случается редко, но вполне возможно при 19 битах), используется старый алгоритм с хеш-таблицей
- Произвести атомарное изменение isa на новое значение
Большая часть из этих действий все равно требовалась в предыдущем подходе, и они не слишком замедляют операцию. Так что новый подход все равно должен быть значительно быстрее старого.
Использование оставшихся неиспользованных под счётчик ссылок биты в isa позволило ускорить деаллокацию объектов. Теоретически, нужно совершить кучу действий когда объект в Objective-C удаляется и возможность пропустить ненужные может значительно увеличить производительность. Эти шаги:
- Если у объекта не было ассоциированных объектов, установленных используя objc_setAssociatedObject, их не надо удалять.
- Если объект не обладает C++-деструктором (который вызывается при dealloc), его тоже не нужно вызывать.
- Если на объект ни разу не ссылались слабым (__weak) указателем, то эти указатели не надо обнулять.
Раньше, все эти флаги хранились в классах. Например, если хоть один экземпляр класса когда-либо хранил ассоциированные объект, то все экземпляры этого класса удаляли ассоциированные объект при деаллокации. Отслеживание этих флагов для каждого экземпляра в отдельности позволило вызывать соответствующие методы только для тех экземпляров, для которых это действительно было нужно.
Суммарно, это существенный выигрыш. Мои бенчмарки показали, что создание и удаление простого объекта занимает 380нс на 5S в 32-битном режиме, в то время как в 64-битном только 200нс. Если хоть один экземпляр когда-либо имел слабую ссылку на себя, то в 32-битном режим время удаления для всех увеличивалось до 480нс, в то время как в 64-битном режиме время осталось в районе 200нс для всех экземпляров, на которых слабых ссылок не было.
Короче говоря, улучшения в рантайме таковы, что в 64-битном режиме время аллокации занимают 40-50% от времени аллокации в 32-битном режиме. Если ваше приложение создает и удаляет много объектов, это может оказаться существенным.
64-битность A7 не просто маркетинговая уловка, но это и не поражающий воображение прорыв который позволит создавать новый класс приложений. Истина, как всегда, лежит посередине.
Один только факт перехода на 64 бита дает немного. Это в некоторых случая ускоряет приложения, несколько увеличивает объем используемой памяти большинство программ. В общем, большой разницы нет.
Архитектура ARM изменилась не только в 64-битности. Увеличенное число регистров и пересмотренный, модернизированный набор инструкций дает неплохой прирост производительности по сравнению с 32-битным ARM.
Apple использовала переход на новую архитектуру для улучшения в рантайме. Основное изменение — встраиваемый (inlined) счетчик ссылок, который позволяет избежать дорогого поиска по хеш-таблице. Так операции retain/release очень часты в Objective-C, это существенный выигрыш. Удаление ресурсов в зависимости от флагов делает удаление объектов почти вдвое быстрее. Меченные (tagged) указатели также добавляют производительность и уменьшают потребление памяти.
ARM64 — приятное добавление от Apple. Мы все знали, что это рано или поздно случится, но мало кто ожидал что так скоро. Но оно есть, и это отлично.
После того как Apple использовала в первом iPad процессор A4 собственного изготовления, поползли слухи, что в будущем компания может отказаться от процессоров Intel в Маках и перейти на ARM-архитектуру. В этом есть свои преимущества, однако, такая миграция чревата множеством последствий, которые Apple будет необходимо преодолеть. Стоит ли овчинка выделки?
Почему современные Маки работают на процессорах Intel
Начиная с 2006-го, все новые компьютеры Apple работают на процессорах архитектуры х86 в связке с GPU от Nvidia или AMD (или встроенное графическое ядро Intel в моделях начального уровня). Благодаря Open GL, ПО Маков может взаимодействовать с графическими процессорами различной архитектуры, что позволяет Apple без проблем менять поставщика графики.
После перехода на процессоры Intel, Apple выпустила еще два мажорных релиза OS X, в которых была реализована поддержка старой (PowerPC) и новой (х86) архитектуры, но вышедший в 2009-м Snow Leopard работал только Маках с процессорами Intel.
Чем переход на ARM отличается от перехода на Intel с PowerPC
В период с 1994-го по 2005-й, все программное обеспечение для Mac OS было «заточено» исключительно под работу на процессорах PowerPC, архитектура которых кардинально отличалась от x86. Еще раньше, на протяжении предыдущих десяти лет, Маки работали под управлением процессоров Motorola, которые назывались 68к (68000, 68020, 60030 and 68040).
Первая смена архитектуры была вызвана стремлением перейти на более современные и производительные процессоры с поддержкой 64-битных вычислений. Благодаря производительности PowerPC, намного превосходящей 68к, он мог легко выполнять эмуляцию существующего кода.
Второй переход Apple, с PowerPC на Intel, уже не выглядел таким большим шагом вперед. Производители чипов PowerPC (IBM и Motorola/Freescale) фактически оставили рынок ПК, «играя эпизодические роли» в нишах автомобилестроения и игровых консолей. Apple была их последним клиентом, но в год компания продавала менее 4 миллионов своих компьютеров.
А вот на рынке Windows-ПК кипела жизнь, все компьютеры использовали архитектуру Intel x86 или совместимые аналоги от AMD. Перейдя с PowerPC на Intel, Apple покинула тонущий корабль и выбрала развивающуюся экосистему, где за счет больших объемов производства инновации и технологии развивались очень быстро.
Однако доступная архитектура x86 была, по сути, шагом назад. Ведь на то время все процессоры Intel были 32-битными, тогда как PowerPC, которые Apple использовала в своих PowerMac G5 начиная с 2003-го, поддерживали 64-битные вычисления. Лишь в 2006-м, когда Intel представила линейку Core 2, Apple вернулась к 64-битным процессорам в своих компьютерах.
Были в переходе на архитектуру Intel и другие недостатки, но они покрывались высокими темпами развития, обусловленными большим рынком. На тот момент процессоры Intel были немногим мощнее PowerPC, но их производительности хватало для эмуляции большей части кода, написанного для PowerPC. Это стало возможным благодаря технологии Rosetta, которую Apple выкупила и доработала, чтобы сгладить сложности перехода на новую платформу.
Кроме того, смена архитектуры на х86 означала возможность запуска Windows (Linux и других x86 ОС). Это значительно расширяло потенциальную аудиторию, привлекая к покупке Mac пользователей, у которых была необходимость запускать специфические Windows-приложения. Boot Camp позволял устанавливать Windows второй системой на диске, а сторонние приложения давали возможность запуска программ Windows прямо в среде OS X. Оба способа были значительно быстрее простой эмуляции кода Windows на PowerPC, которая была единственной возможностью, доступной Mac-пользователям до перехода на процессоры Intel.
Чем Apple может быть интересен уход от процессоров Intel
Экономия средств
Основной причиной, по которой Apple могла бы рассматривать возможность создания Маков без использования процессоров Intel — это высокая цена последних. Чипы Intel слишком высокотехнологичные и достаточно сложные для копирования, поэтому они вне конкуренции и позволяют Intel взимать за них такую высокую цену.
Сложно определить точную цену, которую платит Apple за процессоры Intel. Аналитики из IHS iSuppli считают, что Intel Core i5, используемые в Microsoft Surface Pro, в 4–5 раз дороже ARM-чипов в Surface RT. Процессоры A6 для iPad, по их мнению, обходятся Apple в 25 $ за штуку, тогда как чипы Intel, использующиеся в Маках, стоят 180–300 $. Идеи, что Apple могла бы заменить 200-долларовые чипы Intel на один или два 25-долларовых и породили слухи о возможности перехода компьютеров Apple на ARM-архитектуру.
Однако такое сравнение не совсем корректно, ведь современные ARM-процессоры значительно уступают в производительности чипам Intel Core i5 даже начального уровня. Между вычислительной мощностью процессоров Intel и самых быстрых ARM-процессоров лежит целая пропасть — это доказал эксперимент Microsoft по портированию Windows для ARM-чипа Surface RT.
Apple по силам создать более производительные ARM-процессоры
Apple активно наращивала вычислительную мощность своих процессоров серии Ax, благодаря финансированию за счет экономии на объемах производства. Каждый год компания продает около 70 миллионов iPad и почти 170 миллионов iPhone.
В этом году Apple могла создать еще более мощные чипы A8, если бы не ограничения, диктуемые толщиной корпуса, ограниченным размером батареи и проблемой теплоотвода в iOS-устройствах. Компания ясно дала понять, что при проектировании А8 главным приоритетом была энергоэффективность, которая так важна для iPad Air 2 (имеющего меньшую батарею, чем у предшественника), чтобы оставить автономность устройства на прежнем уровне.
Mac mini и даже MacBook Air гораздо меньше скованы ограничениями энергоемкости и теплоотвода, что позволило бы Apple увеличить рабочие частоты процессоров, количество ядер или добавить в них другие аппаратные средства, снабдив большими объемами памяти и кэша.
Учитывая все эти обстоятельства, Apple может быть заинтересована даже в создании какого-нибудь нового специфичного Mac, работающего на ARM-процессоре, который по производительности будет не так далек от бюджетных настольных процессоров. Ведь сейчас ARM уже обходит мобильные чипы Intel x86.
До перехода на процессоры Intel, Apple производила около 4 миллионов Маков в год. На данный момент ежегодные объемы производства Mac составляют почти 20 миллионов, примерно такое же количество iPad компания продала за первых четыре квартала. Изначально Apple рассматривала возможность использования в iPad чипов Intel Atom, но отказалась от этой идеи в пользу ARM.
Создание собственной технологии кремниевых ИС
Исходя из того, что Apple использует оптимизацию чипов, применяемых в iOS-устройствах, можно предположить интерес компании также и в оптимизации процессоров для Mac. Она может убрать неиспользуемые наборы логики и внедрить дополнительные, чтобы реализовать на аппаратном уровне шифрование, обработку аудио или декодирование видео.
Использование единой архитектуры в Маках и iOS-устройствах может значительно упростить применение аппаратных и программных средств, а также перенос API и другого ПО между системами.
Более того, при разработке проприетарных технологий, используемых только в Ах-процессорах, все инвестиции Apple останутся внутри компании и принесут прибыль исключительно ей. Сейчас же, покупая процессоры у Intel, Apple косвенно делает вклад в развитие всей ПК-индустрии. Intel создает новые поколения процессоров, которые доступны для всех, а расходы на их разработку снижаются за счет объемов производства, обеспечиваемых Apple.
Учитывая не самые впечатляющие успехи Intel в мотивации ПК-производителей к созданию ультрабуков, клонов Mac mini и планшетов на Android Atom, потеря такого клиента как Apple будет иметь катастрофические последствия не только для Intel, но и для всех, кто использует процессоры на архитектуре х86.
Что удерживает Apple от перехода на ARM
Аpple сделала шаг в сторону Intel по разумным причинам. В 2006-м у неё не было серьезной команды для разработки чипов, а также достаточного капитала для развития собственной технологии их создания. Intel уже сделала эту работу и покупка готового решения не только имела смысл, но и была лучшим из тех немногих вариантов, доступных Apple на то время.
Несмотря на то что сейчас Apple является одним из ведущих производителей мобильных процессоров и имеет 150-миллиардный капитал, позволяющий реализовать самые амбициозные проекты, использование чипов Intel все еще имеет смысл по ряду причин.
Существующие технологии и возможности Intel
На сегодняшний день Intel владеет ведущей в мире технологией по изготовлению процессоров и имеет потрясающие производственные возможности, соответствующие запросам Apple. Оставаясь клиентом Intel, Apple получает не только их, но и будущие разработки производителя чипов, в которые он инвестирует средства, чтобы оставаться самым передовым производителем процессоров в мире.
Крупные заказы дают Apple приоритеты выбора чипов, а также скидки за счет больших объемов. Прибыль компании, которую она получает с каждого проданного Мака просто недостижима для ПК-производителей, даже с учетом немалой стоимости процессоров Intel.
Для Apple не существует полумер, на которые могут пойти другие производители, она выбирает только самые передовые технологии. Компания покупает лучшие LCD-панели, использует лицензированный шрифт Helvetica. В то время как Microsoft и Google применяют низкокачественные дисплеи, копии Helvetica, а также не используют в своих продуктах сканеры отпечатков пальца, по причине их высокой стоимости.
Потеря AMD как поставщика
Уйдя от Intel, Apple может потерять потенциального поставщика х86 совместимых видеочипов AMD.
Сейчас компания закупает GPU как у AMD, так и у Nvidia, выбирая лучшие из доступных решений в зависимости от новых технологий и цены. Благодаря OpenGL смена вендора видеочипов не вызывает сложностей.
Apple не играла на руку AMD в их противостоянии с Intel, но теоретически могла бы — в случае если Intel допустит ошибку и AMD удастся создать более доступный и превосходящий конкурента процессор, способный выполнять х86-код на Маках. Уход Apple от Intel к ARM-процессорам исключит даже эту теоретическую возможность сменить чипы Intel на более дешевые AMD.
Сомнительная экономия при частичном переходе на ARM
Apple сейчас не сможет заменить Intel-процессоры на ARM во всей линейке Маков, особенно в топовых семействах и модификациях MacBook Pro и Mac Pro, а ведь это именно тот сегмент, с которого компания получает большую часть своей прибыли и благодаря минимальной конкуренции сохраняет лояльность сообщества.
Если Apple выпустит всего одну новую модель Mac, работающую на архитектуре ARM, это уменьшит ее зависимость от Intel, но также и увеличит затраты на покупку процессоров для х86-Маков за счет уменьшения объемов. Таким образом, частичный переход на ARM ничего не даст Apple в плане экономии.
Сам факт создания ARM-Мака не гарантирует его популярности. Microsoft уже делала попытку портировать Windows на ARM, но привлечения новой аудитории это не дало. Два года были потрачены впустую, если не считать результатом ухудшение отношений с Intel. Процессорный гигант отреагировал анонсом поддержки Android и Meego/Tizen, потратив миллиарды долларов, субсидированных производителями планшетов, на внедрение Atom, которое было направлено на ту же цель, что и у Microsoft с ее Surface RT — значительное расширение рынка.
Разумеется, Microsoft не собиралась экономить и основной причиной использования ARM было стремление к увеличению энергоэффективности по сравнению с настольными и мобильными альтернативами от Intel. Но эти прекрасные начинания были на корню зарублены суровой реальностью — существующие Windows-приложения не могли работать на архитектуре ARM.
У Apple есть большой опыт в переносе ПО на новые архитектуры. Компания доказала, что может одновременно поддерживать различные аппаратные платформы, но несмотря на это, всегда старалась завершать такие переходы быстро, чтобы привести всё к единому стандарту и избежать проблемы фрагментации аппаратных средств.
Большие риски
В довершение к финансовой стороне вопроса, разработка ARM-чипов для Mac может вызвать дополнительные проблемы, например, осложнения и замедление развития мобильных процессоров, использующихся в iPhone, iPad и других новых продуктах.
Продажи мобильных устройств Apple составляют большую часть ее прибыли. За прошлый год компания продала 244 миллиона iOS-устройств и всего лишь 18,9 миллиона Маков. Переход на ARM-архитектуру неизбежно вызовет изменение приоритетов развития мобильного сегмента и теоретически может позволить конкурентам выбиться в лидеры. Вряд ли у Apple есть сотни свободных инженеров, сидящих без дела, чтобы распылять усилия команды разработки ARM-чипов на два различных направления.
Отдаляясь от ключевого поставщика, Apple также может смутить существующих клиентов и рискует бросить тень на свое имя. Когда Microsoft представила Surface RT, она потеряла доверие клиентов, поскольку «бескомпромиссный Windows-компьютер» фактически не мог запускать приложения Windows и имел ограничения, связанные с производительностью ARM-процессоров. У потенциальных покупателей ARM-Маков будут еще большие запросы и ожидания от нового продукта Apple.
Несовместимость с архитектурой х86
У Apple есть большой опыт в портировании собственных ОС, фреймворков, приложений и инструментов разработки на новые архитектуры. Компания перенесла Mac OS с 68к на PowerPC, портировала ПО NeXT с Intel на PowerPC, да и iOS, по сути, является адаптированной под мобильные реалии OS X.
Apple определенно знает, как создать ARM-версию OS X и при необходимости сможет предоставить разработчикам инструменты, которые помогли бы им пересобрать свои приложения для Маков на архитектуре ARM, но для этого потребуется много труда и значительные усилия от самих разработчиков. Затраты и издержки, связанные с созданием портов приложений, могут не оправдать ожиданий, особенно если Apple будет продавать в год менее 20 миллионов Маков.
Опыт Apple TV
Как и Surface RT, Apple TV можно рассматривать в качестве недавнего примера смены архитектуры. Оригинальная версия Apple TV, продававшаяся с 2007-го по 2009-й, была фактически урезанным Маком с х86-процессором Intel и графикой от Nvidia, работающим на модифицированной версии OS X.
В 2010-м Apple представила второе поколение ТВ-приставки, работающее под управлением iOS на собственном процессоре A4, имевшем встроенную графику. Этот переход, который повлек за собой полный редизайн аппаратной архитектуры, позволил снизить цену продукта с 299 $ до 99 $.
Но Apple TV весьма специфический пример — приставка выпускается в относительно малых объемах и не приносит большой прибыли компании, к тому же в ней нет сторонних приложений, а значит и проблем с их адаптацией. Ее переход на iOS и ARM был достаточно простой задачей. С ценой в 300 $ у Apple TV просто не было шансов на рынке, но когда она снизилась до 99 $, приставка стала очень хорошо продаваться, принося Apple около миллиарда долларов в год (включая медиаконтент, увеличивающий ее продажи). В 2010-м у Apple появился источник отбракованных чипов А4 (а затем и А5), которые не годились для iPad, поэтому Apple TV стала идеальным кандидатом для перехода ARM-архитектуру.
Не стоит ждать ARM-MacBook в ближайшем будущем
Вопрос перехода традиционных Маков на ARM-архитектуру состоит не в том, сможет ли Apple заменить Intel, а скорее в том, будет ли это коммерчески выгодно.
Если Apple действительно решит представить сверхбюджетный MacBook Air «нетбучного формата», то ей проще будет отказаться от дорогих Core i5 чипов и создать недорогой продукт, работающий на iOS или урезанной версии OS X. Такой MacBook занял бы место рядом с Surface RT и «хромбуками» от HP и Samsung, работающими на ARM-чипах от Samsung.
Однако, на данный момент слишком мало убедительных доводов, которые бы доказывали, что Apple заинтересована в продаже ноутбуков с небольшой производительностью. Сейчас продается рекордное количество Маков в ценовой категории 900–3000 $, кроме того существует iPad, покрывающий более бюджетный диапазон от 200 до 800 долларов.
Несмотря на то что по итогам прошлого года продажи iPad снизились на 4%, нельзя сказать форм-фактор планшета теряет популярность и нуждается в замене. На самом деле, всё выглядит так, как будто Apple сделала из пользователей iPad потенциальных покупателей Mac, а это уже намного больший успех (и прибыли), чем мотивация пользователей Mac к покупке iPad.
И все же технологическая индустрия постоянно находится в движении и часто привычные устои рушатся новыми продуктами, которые стоят и делают меньше, чем существующие. Доказательством этого может служить iPhone, который умел значительно меньше, чем существующие на тот момент смартфоны, а также iPad и Apple TV, лишенные функций, которые были в предшествовавших им планшетах ТВ-приставках. Apple просто отсекла «нужные» фичи и создала тем самым новые, доступные и привлекательные категории продуктов.
Создавая Mac на базе ARM-процессора, Apple может сильно дискредитировать собственный бизнес премиальных компьютеров. Теоретически, компания могла бы создать недорогой MacBook, скажем, для сферы образования, но это слишком маленький рынок, который сейчас пресыщен «хромбуками» Google.
Через год или два обстоятельства могут измениться. Вполне возможно, что Apple достигнет точки развития, когда премиальный бизнес Mac будет сложно расширять дальше. За это время компания может разработать технологию, которая позволила бы ей создать ARM-процессор вплотную приближающийся по производительности к Intel, но имеющий более низкую цену. Apple могла бы создать аппаратную поддержку эмуляции x86-приложений, минимизировав тем самым затраты и ускорив переход на ARM.
Пока у Intel не предвидится больших прорывов в развитии x86-процессоров, так что для Apple может быть более разумным инвестировать в разработку и развитие собственных современных ARM-чипов (или даже совершенно новой архитектуры) для настольных компьютеров и ноутбуков.
В целом создается впечатление, что рынок традиционных компьютеров и ноутбуков остановился в развитии. Apple расширяет свою долю среди компьютеров премиального уровня и у нее есть все шансы, развить эту тенденцию не внося радикальных изменений в Маки. Компания может использовать свои огромные, но все-таки ограниченные ресурсы для более выгодного вложения, чем замещение Intel как поставщика процессоров для нескольких миллионов Маков. По крайней мере, в течение следующих нескольких лет.
Поделитесь в соцсетях:
В 2011 году компания ARM Limited анонсировала новое семейство процессоров под названием ARMv8. А в 2013 году компания Apple выпустила первый ARMv8-процессор – однокристальную систему А7, которая применяется в iPhone 5S, iPad Air и iPad mini Retina. Архитектура ARMv8 получила 64-битный набор команд, но это далеко не единственное её преимущество над предшественницей ARMv7. Как устроены и какими бывают 64-битные процессоры ARMv8, читайте в статье.
Об истории архитектуры ARM, специфике деятельности компании ARM Limited и поколениях процессоров ARMv5, ARMv6 и ARMv7 вы можете прочитать в статье «Процессоры ARM: особенности архитектуры, отличия и перспективы». А про популярные модели ARMv7-чипов производства Qualcomm, NVIDIA, Samsung, Apple, MediaTek и др. подробно рассказано в статьях «Процессоры ARM: производители и модели» и «Процессоры ARM: обновление модельного ряда».
Нововведения ARMv8
Обновленную архитектуру процессоров семейства ARMv8 окрестили именем AArch64. Она получила 64-битный набор инструкций и возможность работать с большим объемом оперативной памяти (4 Гбайт и больше). Само собой, предусмотрена совместимость с 32-битными приложениями (AArch32). Другими важными нововведениями ARMv8 стали:
— 31 регистр общего назначения, каждый длиной 64 бита, тогда как SP и PC не являются регистрами общего назначения. Чем выше разрядность регистров, тем больше числа можно в них хранить. А чем больше количество регистров, тем больше данних в них помещается одновременно. Как результат, за одну инструкцию можно обработать больший объем данних и весь алгоритм выполнится быстрее;
— трансляция виртуальных адресов из 48-битного формата работает с помощью механизмов LPAE, позаимствованных у ARMv7;
— новый набор инструкций с фиксированной длинной. Инструкции имеют размер 32 бита и многие совпадают с командами AArch32, хотя условных инструкций стало меньше;
— увеличено с 16 до 32 количество 128-битных регистров (совместимы с 64-битными регистрами), доступных сопроцессорам SIMD NEON и VFP, а также добавлены новые криптографические инструкции AES и SHA. Набор инструкций SIMD NEON ускоряет работу приложений, отвечающих за обработку медиаданных и сигналов. В свою очередь VFP отвечает за малоэнергозатратные вычисления над числами с плавающей запятой;
— поддержка вычислений над числами с плавающей запятой двойной точности и стандарта IEEE 754, который является общепринятым форматом представления чисел с плавающей запятой, используемый в программных реализациях арифметических действий.
Референсные ядра ARM Limited
Первыми процессорными ядрами ARMv8, разработанными непосредственно компанией ARM Limited, стали Cortex-A53 и A57. Ядро A53 является среднеуровневым решением с производительностью 2,3 DMIPS/МГц, что находится примерно по середине между нынешними Cortex-A7 (1,9 DMIPS/МГц) и A9 (2,5 DMIPS/МГц). Тогда как A57 занимает верхний сегмент, ведь его быстродействие (4,1 DMIPS/МГц) превосходит показатели обеих 32-битных флагманов: Cortex-A15 (3,5 DMIPS/МГц) и А17 (4 DMIPS/МГц).
Помимо лицензирования референсных процессорных ядер компания ARM Limited продает расширенные лицензии, позволяющие чипмейкерам по своему усмотрению модифицировать архитектуру ARM. Такие лицензии есть, к примеру, у Apple, Qualcomm и NVIDIA. Поэтому ничто не мешает производителям процессоров создавать собственные решения на базе ARMv8, существенно отличающиеся от референсных Cortex-A53 и A57.
Apple A7
Первым и пока единственным 64-битным ARM-процессором, который уже применяется в смартфонах и планшетах, является Apple A7. Построен он на фирменной архитектуре Apple Cyclone, совместимой с ARMv8. Это вторая разработанная внутри компании процессорная архитектура; первой же была Swift (чипы A6 и A6X, семейство ARMv7).
Процессорных ядер у однокристальной системы A7 только два (частота до 1,4 ГГц), но присутствует графический ускоритель PowerVR G6430 с четырьмя кластерами ядер. Быстродействие чипа A7 в процессорозависимых задачах выросло примерно в полтора раза по сравнению с А6, тогда как в различных графических тестах прирост составляет от двух до трех раз.
А вот теоретическую возможность работать с большим объемом оперативной памяти благодаря 64-битной архитектуре процессора A7 устройства под управлением iOS пока не ощущают. У iPhone 5s, iPad Air и iPad mini Retina всего лишь 1 Гбайт оперативки; и вряд ли в новом поколении мобильных устройств Apple объем ОЗУ вырастит больше чем вдвое.
Qualcomm Snapdragon 410, 610, 615, 808 и 810
Вслед за Apple свои 64-битные ARM-процессоры поспешила анонсировать компания Qualcomm, причем сразу пять моделей. Правда, пока ни одна из них в коммерческих смартфонах или планшетах не применяется. Скорее всего, расцвет эпохи 64-битных Android-устройств состоится в начале 2015 года на выставках CES и MWC.
Однокристальная система Snapdragon 410 (MSM8916) – младшая из анонсированной 64-битной линейки Qualcomm. Она включает в себя четыре ядра Cortex-A53 с частотой от 1,2 ГГц, графический ускоритель Adreno 306 и, что интереснее всего, навигационный модуль с поддержкой спутниковых сетей GPS, ГЛОНАСС и даже китайской Beidou. Применять Snapdragon 410 планируют в недорогих смартфонах на базе Android, Windows Phone и Firefox OS.
Те же четыре ядра Cortex-A53, что у 410-того, содержит чип Snapdragon 610 (MSM8936), вот только графика у него улучшенная Adreno 405. Тогда как Snapdragon 615 (MSM8939) схож с 610-тым графикой, но процессорных ядер Cortex-A53 у него вдвое больше – восемь Cortex-A53.
В отличие от 410, 610, 615 моделей, выполненных по 28-нм техпроцессу, чипы Snapdragon 808 (MSM8992) и 810 (MSM8994) будут производиться по передовым 20-нм технологическим нормам. Они оба строятся по схеме big.LITTLE: два (модель 808) или четыре (810) мощных ядра Cortex-A57 и четыре энергоэффективных Cortex-A53. Графика представлена Adreno 418 и Adreno 430 соответственно. Кроме того, старший Snapdragon 810 имеет встроенный контроллер оперативной памяти стандарта LPDDR4.
Но главный вопрос: когда именно компания Qualcomm представит собственную процессорную архитектуру на основе ARMv8, как это было со Scorpion и Krait (модифицированные ARMv7)?
MediaTek MT6732, MT6752, MT6795
Не могла долго оставаться в стороне 64-битной гонки и компания MediaTek, всего за несколько лет превратившаяся из мелкого производителя процессоров для китайских клонов iPhone в одного из крупнейших в мире чипмейкеров, пусть и безфабричного. Впрочем, Apple и Qualcomm собственных производственных линий по «штамповке» полупроводников тоже не имеют.
Однокристальные системы MediaTek MT6732 и MT6752 должны составить конкуренцию чипам Snapdragon 610 и 615. У них четыре и восемь процессорных ядер Cortex-A53 (частота 1,5 и 2 ГГц соответственно) и одинаковая графика Mali-T760 (разработка ARM Limited). Старший же чип MT6795 стал ответом Snapdragon 810: архитектура big.LITTLE, по четыре ядра Cortex-A57 и A53 с частотой 2,2 ГГц, а также графический ускоритель PowerVR G6200.
NVIDIA Tegra K1 (Project Denver)
Компания NVIDIA решила перевести на 64-битную процессорную архитектуру свой уже существующий чип Tegra K1. Графическая составляющая у него и раньше была едва ли не лучшей среди конкурентов – GK20A с 192 ядрами Kepler, производительностью 365 GFLOPS и поддержкой ПК-стандартов графики DirectX 11.2 и OpenGL 4.4 (а не их мобильных аналогов).
Вместо же четырех 32-битных ядер Cortex-A15 (плюс пятое энергоэффективное ядро) обновленная однокристальная система Tegra K1 получит два ARMv8-совместимых ядра фирменной архитектуры NVIDIA Project Denver. Тактовая частота процессора вырастет до 2,5 ГГц, увеличится и объем кеша. Интересный факт: графика Tegra K1 примерно в пятьдесят раз мощнее Tegra 2.
Выводы
За один такт процессоры архитектуры ARMv8 способны обработать значительно больше данных. Это повышает как общую производительность процессора, так и производительность на ватт. Учитывая ограничения технологических норм (максимально допустимую тактовую частоту), переход на ARMv8 – это единственный возможный способ нарастить быстродействие мобильных процессоров, не выходя за разумные рамки энергопотребления и нагрева.
Естественно, пользу от архитектуры ARMv8 получат только те приложения для iOS и Android, которые способны задействовать все ресурсы новых процессоров. Оптимизация программ под новую архитектуру может быть как ручной, так и автоматической, на уровне компилятора.
Первое же Android-устройство с 64-битным ARM-процессором и 4 Гбайт ОЗУ – фаблет Samsung Galaxy Note 4 (чип Exynos 5433: по четыре ядра Cortex-A57 и A53) – представят уже 3 сентября. А вторым, возможно, станет планшетный компьютер HTC серии Google Nexus c процессором Tegra K1 Denver.
Недавно мы рассказывали вам о том, как узнать DPI дисплея вашего Android устройства, которое необходимо знать для выбора правильного APK файла приложения, которое вы хотите установить на него вручную. Однако, при этом зачастую нужно знать еще и тип процессора: ARM, ARM64 или x86, который используется в вашем смартфоне или планшете.
Как оказалось, многие владельцы Android устройств не имеют никакого представления об этом. Поэтому сегодня речь пойдет о том, как можно получить эти сведения.
Самым простым способом узнать тип процессора на базе которого выполнен ваш смартфон, планшет или другое Android устройство будет установить на него приложение Droid Hardware Info.
Это приложение доступно для скачивания с этой страницы Google Play Маркет совершенно бесплатно и после его запуска вы увидите на экране смартфона следующую информацию (слева — данные о смартфоне Nexus 5, справа — информация о Nexus 6):
В самой первой строке с наименованием «CPU architecture» вы увидите одно из значений: ARMv7, AArch64 или x86, а в строке «Insructions Set»: armeabi, arm64 или x86abi.
Соответствие этих значений типу вашего процессора приведено ниже:
ARM: ARMv7 или armeabi
ARM64: AArch64 или arm64
x86: x86 или x86abi
Есть еще один достаточно простой способ узнать тип процессора вашего смартфона, планшета или другого устройства, который знаком пользователям Linux
Для этого вам нужно установить на свое устройство из Google Play Маркет приложение Terminal Emulator, запустить его и выполнить следующую команду:
На экране при этом отобразится информация о процессоре в следующей форме:
Как вы уже, наверняка поняли, нам нужна информация из самой первой строки «Processor:»
armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips, mips64.
Ну, armeabi – вроде понятно. Эта вроде архитектура на всех (или почти на всех) реальных гаджетах.
x86 – вроде тоже понятно. Это прежде всего для Genymotion и прочих эмуляторов, где Android x86.
Будет ли идеальным решением просто построить либу под все ABI? А если нет возможности протестить везде, а только на x86 и armeabi?
И почему столько armов: armeabi, armeabi-v7a, arm64-v8a? Какой из них актуальнее? Как определить, какой поддерживается моим гаджетом? Могут ли быть несколько сразу?
1 ответ 1
x86 – это прежде всего процессоры Intel Atom, которые установлены в немалое число реальных устройств, а не эмуляторы. Эмулятор, как раз может эмулировать любую архитектуру, независимо от архитектуры процессора, на котором хостится – на то он и эмулятор. Вы можете в этом убедится сами, посмотрев на список образов для эмуляции:
Минимальным набором поддерживаемых архитектур является набор APP_ABI := x86 armeabi . Далее следует определиться, будет ли ваше приложение использовать дополнительные возможности архитектуры armeabi-v7a, например NEON – если это так, то данную архитектуру тоже следует включить в список (расширенный список инструкций arm-v7) – на самом деле, сейчас практически все ARM процессоры, как минимум v7
В последнее время устройства с процессорами на 64-ех битной архитектуре все чаще появляются в продаже, поэтому их тоже стоит учесть.
Точно проигнорировать можно mips/mips64
Узнать, какая архитектура у вашего устройства, можно по спецификации процессора, который оно использует. Например, Qualcomm Snapdragon 820 – ARM-V8A. Так же в маркете можно найти программы, которые покажут системную информацию.
Несколько архитектур ARM в одном процессоре быть не может, но каждая следующая включает предыдущую, то есть в ARM-V7 включен ARM, в ARM-V8 – ARM-V7. По факту, самая актуальная сейчас ARM-платформа – ARM-V7, на ней построено абсолютное большинство действующих процессоров, но ARM-V8 активно наступает.
Разница в ARM-архитектурах очевидна, каждая следующая – шаг в эволюции, добавляются новые возможности на уровне железного ядра.
Вы можете указать собрать библиотеку под все abi и это будет хорошим решением, если итоговый размер приложения вас устроит – каждая дополнительная платформа – новые файлы, которые имеют размер.