При запуске 32-разрядных приложений в iOS 10.3 пользователям выдаётся предупреждение о том, что приложение может замедлять работу устройства и может не поддерживаться в новых версиях системы. Таким образом Apple даёт понять, что 32-разрядные приложения уходят в прошлое. С высокой долей уверенности можно предположить, что в iOS 11 не будет поддержки как 32-битных приложений, так и 32-разрядных устройств (iPhone 5 и 5c). Кроме того, можно предположить, что новое поколение устройств под управлением iOS – будущие итерации iPhone и iPad – будут лишены самой возможности исполнять 32-битный код на аппаратном уровне. Что это может означать для индустрии и для нас, пользователей?
Выводы из отказа Apple поддерживать 32-разрядный код следуют очень интересные – разумеется, если компания будет последовательна в своих действиях.
Начнём с отступления. В последние два года индустрия процессоров для мобильных устройств снизила темпы развития и постепенно заходит в то же состояние насыщения, в котором уже давно находится Intel со своими процессорами для настольных систем. Так, новейшее ядро ARM Cortex A73, которое вошло в состав SoC Snapdragon 835 – достаточно спорное обновление прошлогоднего ядра A72, которое местами даёт десятипроцентный прирост производительности, а местами (например, в тестах с плавающей запятой) и небольшое падение. В этой области прогресс примерно соответствует тому небольшому, 15-процентному росту производительности очередного поколения процессоров Intel по сравнению с предыдущим поколением.
Теперь обратим внимание на архитектуру мобильных процессоров. У современных процессорных ядер с поддержкой ARMv8 (это и есть 64-битные ядра) на аппаратном уровне поддерживается декодирование, оптимизация и исполнение как 32-битных, так и 64-разрядных команд. Причём блоки декодирования 32-разрядных команд, а также некоторая обвязка реализована в виде самостоятельных вычислительных блоков, которые занимают полезную площадь на кристалле, потребляют энергию и выделяют тепло.
Теперь представим, что необходимости поддержки 32-разрядных команд больше нет. Соответствующие аппаратные блоки можно исключить из ядра, а те, что остались – оптимизировать для работы только 64-битными последовательностями команд. Таким образом практически бесплатно с точки зрения цикла разработки, без каких-либо сложных технических инноваций или перехода на более тонкий техпроцесс появляется возможность получить следующие преимущества:
У Apple будет как минимум два варианта оптимизации: сохранить производительность и уменьшить энергопотребление (за счёт уменьшения площади кристалла) или же занять освободившееся место более сложным ядром, увеличив производительность при том же энергопотреблении в рамках одного и того же техпроцесса.
Как мы видим, преимущества для пользователей будущих поколений процессоров Apple вполне осязаемы, но пользователи актуальных поколений устройств особых преимуществ не увидят. Да, может уменьшиться объём памяти, которую занимает iOS, и только лишь из-за этого пользователи могут получить дополнительные мегабайты свободного места и больше свободной оперативной памяти. Но основные преимущества получат всё-таки пользователи новых, на данный момент даже не анонсированных устройств, которые уже не смогут работать с 32-битным кодом. У пользователей появляется ещё одна рациональная причина обновить устаревшие устройства (iPhone 6, 6s, 7), в которых в качестве аппендикса присутствуют совершенно избыточные 32-битные модули. Обновление на новый и современный iPhone 8, в котором никаких лишних аппендиксов нет, может обеспечить вполне ощутимый прирост в производительности не только за счёт архитектурных улучшений, но и за счёт описанной выше оптимизации.
One more thing. Проделать этот трюк в состоянии только Apple и никто кроме Apple. Отказаться от поддержки 32-битного кода в обозримом будущем не сможет никто. Теоретически могли бы проделать подобное в Microsoft для телефонов под управлением Windows 10 Mobile, однако это крайне маловероятно в свете того, что даже на Lumia 950/950 XL система до сих пор работает полностью в 32-битном режиме. А вот для Android с его разнообразием аппаратных платформ, актуальных версий системы и прошивок подобный переход, скорее всего, будет недостижим в течение обозримого времени.