И пока весь мир обсуждает, насколько удачным получился процессор Apple M1, и действительно ли можно верить бенчмаркам, я и мои инженеры погрузились в раздумья о грядущем.
Мы сидели и курили, начинался новый день, а из головы все никак не уходили мысли о том, что произошло. Нет, мы не обсуждали возможное крушение Intel, мы не думали о том, что будет дальше делать AMD с x86, не думали про Вендекапец. Мы пытались и все еще пытаемся понять, насколько изменит веб-разработку новый продукт от Apple.
Давайте вернемся в “ давным-давно, в далекой галактике” и вспомним про различные архитектуры процессоров, и почему они остались на обочине истории.
В начале было слово. Потом двойное слово
Когда компьютеры были такими же большими, как и деревья, а x86 был маленьким, как трава, основную работу проводили на “больших компьютерах”, и никто особо сильно не воспринимал всерьез IBM PC. Но тут произошла революция номер раз — появился 80386. Появился защищенный режим, можно было адресовать 4Гб памяти… но все это на самом деле не имеет никакого значения. Значение имеют цена и распространённость. В какой-то момент x86 благодаря Microsoft очень малоизвестной компании начал завоевывать рынок персональных компьютеров, которые можно было покупать домой. А там, где множество, там и появляется подручный, привычный и любимый инструмент. Именно таким инструментом стал x86, под который начали писать очень много ПО, и это ПО писали на самом x86.
Да, был рынок больших и тяжелых DEC Alpha, PowerPC, MIPS, SPARC. Компьютеры Apple на Motorolla/PowerPC мы пока что обходим стороной. Но самое важное происходило на уровне персоналок: x86 был привычным и распространённым инструментом, с каждым поколением увеличивалась производительность, а доступность была выше, чем у других архитектур. Все это привело к тому, что критическая масса ПО получила распространение именно под x86, хороший пример тому – постепенный отказ Microsoft от архитектур Alpha, MIPS и PowerPC в Windows NT 4.0
Постепенно x86 начал врываться в серверный сегмент, где раньше царили PowerPC, MIPS, IA64. Со временем архитекторы стали отказываться от кастомных архитектур, на рынке серверов стал доминировать x86 (уже amd64), а такие гиганты как PowerPC и SPARC перешли в очень нишевый рынок. MIPS ушел в роутеры, от PA-RISC отказались ради IA64, а IA64 нашел свой айсберг.
Да что уж говорить про серверный сегмент, если даже игровые приставки ушли от PowerPC/Cell к x86 и… ARM.
Добро пожаловать в новый дивный мир. Или не пожаловать…
Мысленно переместимся в середину 2000: доллар по 29, Apple заявляет о переходе с IBM PowerPC на Intel x86. Быстрее, выше, сильнее. Появляется транслятор Rosetta, который призван облегчить переход с одной архитектуры на другую. О разработке на MacBook тогда особо никто не думал, поэтому получалась мир-дружба-жвачка.
Теперь мы перемещаемся в 2007 год, когда Apple представила свой первый iPhone на Samsung 32-bit RISC ARM. Это эпохальное время для ARM. Процессоры этой архитектуры и раньше использовались в КПК, но устройства этого формата были прерогативой инженеров и гиков. Если вспомнить вагон метро того времени, то мало у кого можно было увидеть КПК, а если он и бросался в глаза, то вызывал интерес. А кого сейчас можно удивить смартфоном? Мобильные устройства полностью вошли в нашу жизнь. Сейчас рынок C/C++ или Assembler очень узкий, а вот мобильному разработчику практически все двери открыты. Да, под Android собирается Java, под iOS – Swift. Но все это работает на ARM.
У ARM очень много преимуществ, я не думаю, что необходимо останавливаться на технических данных, потому как самое главное – распространённость и привычка. Привычка как пользователей, так и разработки.
А между тем, ARM прорывается в мир приставок: Nintendo и nVidia начинают использовать эту архитектуру.
Прошлое — забыто, будущее — закрыто, настоящее — даровано
Теперь перейдем в наше время. Этот год очень богат на события, поэтому я думаю, что смена архитектуры у Apple прошла, конечно же, заметно, но вот отголоски бэкграунда мы получим чуть позже.
В какой-то момент ноутбуки Apple стали не просто символом моды, они стали рабочим инструментом, притом что самое важное – привычным инструментом разработчика. Мы часто слышим от кандидатов “дайте мне MacBook или я буду программировать на своем”. Разработчик (веб, мобила) и MacBook – практически неделимы.
И вот на этом моменте начинается самое интересное: компания, у которой не такая и большая рыночная доля, но у которой есть инструмент, к которому привыкли и на котором по разным оценкам создается 90-95% кода для веба, меняет архитектуру процессора в своем продукте.
Вернемся в прошлое, где-то в 1985-1995 годы. В чем было преимущество x86: цена-доступность, привычка, растущее количество ПО и разработка ПО. Сейчас ноутбуки на Apple M1 продаются дешевле, чем на Intel Core. Разработчики сильно привыкли к Macbook, а если ARM версия дешевле x86, то ее в основном и будут покупать. А покупать ее будут и из-за цены, и из-за того, что по тестам она быстрее, и из-за того, что живет от зарядки больше. И вообще – это суперновый Macbook!
И если с мобильной разработкой все более-менее понятно, в ней мало что изменится, то с вебом, возможно, начнется непонятное.
Пользователи новых MacBook будут работать на ARM, а писать код под x86. Да, есть Rosetta 2, да Docker пока не готов под M1. Но это все пока. Появятся оптимизированные версии под M1, разработчики, скорее всего, будут использовать образы ARM. Той же Java для работы нужна JVM, которая компилируется под конкретную архитектуру процессора. И когда-то возникнет так нами любимое “У меня локально все работает, это что-то у вас с сервером!”.
И в заключение
Мы не уверены, что будет так, как мы предполагаем. Возможно, Rosetta 2 будет жить постоянно, возможно, придумают что-то еще, возможно, Apple откажется от M1 (или империя Intel/AMD нанесет ответный удар).
Но пока что мы поискали по ящикам, нашли Raspberry Pi 4 и начали тестировать Docker на ARM. А заодно прошлись по всем нашим базовым образам в корпоративном Registry и посмотрели, можно ли их пересобрать под ARM.
VMware начинает портировать ESXi на ARM, Kubernetes уже существует в ARM-версии, у Amazon улучшаются ARM-инстансы, а в интернете часто пишут, что гегемонии x86 наступает конец.
Может быть, это все зря, но мы уже думаем про возможность и целесообразность использования серверов на ARM-архитектуре. Лучше об этом подумать сейчас, чтобы не оказаться в догоняющих и на обочине истории.
apapacy
Недавно была адекватная статья о том что главное в Intel+AMD — это закрытость спецификации и патентная защита архитектуры. Это рано или поздно должно было привести к прорыву. Как с мелкими. 20 лет назад никто не передставлял что у пользователей будет что-то кроме винды. Докер? Модет быть о нем тоже никто не вспомнит скоро.
StjarnornasFred
С другой стороны, х86 по сравнению с ARM имеет немалую универсальность в плане поддержки ОС разными процессорами. Проще говоря, если мы возьмём некую ОС для х86 (например, Windows), то мы сможем установить её на устройство с почти любым x86-процессором. Если же мы рассмотрим ОС для ARM (например, Sailfish), то мы не сможем установить её на произвольно взятое устройство — только на небольшой список поддерживаемых. И мне до сих пор не попадалась ни одна ось, которую я мог бы самостоятельно установить на "почти любой", скажем, смартфон или другой ARM-девайс. А вот систем, подходящих для установки на "почти любое" x86-устройство, хоть отбавляй.
junari
В этом плане есть продвижение. На форумах армбиана есть единая сборка, которая запускается на 64bit ARM процессорах rockchip, amlogic, allwinner. То есть системные бинарники — общие, ядро с драйверами — общее. Нужно только загрузчик правильный подсунуть и DTB.
В будущем загрузчик с dts можно переместить, например, на NOR (там, где сейчас bios у x86 лежит), или передавать ядру параметр с каким dts грузиться, а там уже все по классике — вставляешь флешку, запускаешь установку системы. С виндой такое, конечно, не прокатит, но и нет этой винды под арм в нормальном виде.
wigneddoom
Нормальные большие ARM, те что для серверов уже давно перешли на UEFI и ACPI. Там уже dtb не нужен.
Sly_tom_cat
Ну вот Linux не втыкали разве что в кофемолки (хотя я не уверен).
А если говорить о вебе, то там lunux чуть больше чем везде. И ему на чем работать, на ARM или на X86 — без разницы (ну почти...)
elCreator
Есть несколько DIY кофемолок (кофеварки и прочие кофемашины, само собой, не в счет) на Raspberry Pi, на котором Linux. Малинка с линуксом используется для простой интеграции весов, запоминания настроек помола, порции и прочих и отображения UI на экране без необходимости программирования контроллера и пайки.
event1
это потому, что «почти любое» x86-устройство соответствует единой спецификации (раньше была IBM PC, а сейчас как называется х.з. ). То есть у них у всех совместимые биосы, которые в одинаковом формате рассказывают процессору, где какие диски подключены, сколько шин PCIe в системе и т.п. Сделать аналогичную спеку для ARM и всё будет так же работать везде.
ValdikSS
Такое уже есть: UEFI + ACPI + SBSA
quwy
У кого оно есть? Даже у самого популярного на данный момент ARM PC нет и не предвидится.
На стодолларовую шайтан-коробку с x86 внутри, можно поставить все что угодно штатным инсталлятором. А на аналогичную штуку с ARM, только то, что заранее подготовили добрые люди, именно для нее, и только в виде готового образа системного диска.
ValdikSS
На серверных платформах оно есть: Cavium ThunderX, Huawei Taishan.
На потребительских встречал встроенный (в распаянной SPI-флешке) UEFI на Libre Computer La Frite, за $20. На нём вполне загружалась официальная Ubuntu 20.04 из ISO-образа (не образ от производителя, а обычный, скачанный с ubuntu.com)