company_banner

В раздумьях об ARMагеддоне

    Привет, Хабр! Меня зовут Сергей Минаев, я руководитель направления администрирования веб-сервисов в компании «Спортмастер».

    И пока весь мир обсуждает, насколько удачным получился процессор 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-архитектуре. Лучше об этом подумать сейчас, чтобы не оказаться в догоняющих и на обочине истории.
    Sportmaster Lab
    Рассказываем о том, как мы делаем «Спортмастер»

    Комментарии 40

      +1

      Недавно была адекватная статья о том что главное в Intel+AMD — это закрытость спецификации и патентная защита архитектуры. Это рано или поздно должно было привести к прорыву. Как с мелкими. 20 лет назад никто не передставлял что у пользователей будет что-то кроме винды. Докер? Модет быть о нем тоже никто не вспомнит скоро.

        +3

        С другой стороны, х86 по сравнению с ARM имеет немалую универсальность в плане поддержки ОС разными процессорами. Проще говоря, если мы возьмём некую ОС для х86 (например, Windows), то мы сможем установить её на устройство с почти любым x86-процессором. Если же мы рассмотрим ОС для ARM (например, Sailfish), то мы не сможем установить её на произвольно взятое устройство — только на небольшой список поддерживаемых. И мне до сих пор не попадалась ни одна ось, которую я мог бы самостоятельно установить на "почти любой", скажем, смартфон или другой ARM-девайс. А вот систем, подходящих для установки на "почти любое" x86-устройство, хоть отбавляй.

          +2
          В этом плане есть продвижение. На форумах армбиана есть единая сборка, которая запускается на 64bit ARM процессорах rockchip, amlogic, allwinner. То есть системные бинарники — общие, ядро с драйверами — общее. Нужно только загрузчик правильный подсунуть и DTB.
          В будущем загрузчик с dts можно переместить, например, на NOR (там, где сейчас bios у x86 лежит), или передавать ядру параметр с каким dts грузиться, а там уже все по классике — вставляешь флешку, запускаешь установку системы. С виндой такое, конечно, не прокатит, но и нет этой винды под арм в нормальном виде.
            0

            Нормальные большие ARM, те что для серверов уже давно перешли на UEFI и ACPI. Там уже dtb не нужен.

            +1
            Ну вот Linux не втыкали разве что в кофемолки (хотя я не уверен).

            А если говорить о вебе, то там lunux чуть больше чем везде. И ему на чем работать, на ARM или на X86 — без разницы (ну почти...)
              0

              Есть несколько DIY кофемолок (кофеварки и прочие кофемашины, само собой, не в счет) на Raspberry Pi, на котором Linux. Малинка с линуксом используется для простой интеграции весов, запоминания настроек помола, порции и прочих и отображения UI на экране без необходимости программирования контроллера и пайки.

              +3
              это потому, что «почти любое» x86-устройство соответствует единой спецификации (раньше была IBM PC, а сейчас как называется х.з. ). То есть у них у всех совместимые биосы, которые в одинаковом формате рассказывают процессору, где какие диски подключены, сколько шин PCIe в системе и т.п. Сделать аналогичную спеку для ARM и всё будет так же работать везде.
                0
                Такое уже есть: UEFI + ACPI + SBSA
                  0
                  У кого оно есть? Даже у самого популярного на данный момент ARM PC нет и не предвидится.

                  На стодолларовую шайтан-коробку с x86 внутри, можно поставить все что угодно штатным инсталлятором. А на аналогичную штуку с ARM, только то, что заранее подготовили добрые люди, именно для нее, и только в виде готового образа системного диска.
                    +1
                    На серверных платформах оно есть: Cavium ThunderX, Huawei Taishan.
                    На потребительских встречал встроенный (в распаянной SPI-флешке) UEFI на Libre Computer La Frite, за $20. На нём вполне загружалась официальная Ubuntu 20.04 из ISO-образа (не образ от производителя, а обычный, скачанный с ubuntu.com)
            +12
            на котором по разным оценкам создается 90-95% кода для веба

            Можно источник этих оценок?

              +9

              "По результатам опроса на нашем сайте 100% опрошенных имеют доступ в Интернет"

              +1
              А между тем, ARM прорывается в мир приставок: Nintendo и nVidia начинают использовать эту архитектуру.

              Game Boy Advance 2001г

              VMware начинает портировать ESXi на ARM

              Что значит начинают? Они уже раздают на тест.
              flings.vmware.com/esxi-arm-edition

              Over the past several years, you've seen us demonstrate our virtualization technology on the Arm platform across several use cases

              Now we'd like to give our customers a chance to evaluate this technology in their own environments.
                0
                А между тем, ARM прорывается в мир приставок: Nintendo и nVidia начинают использовать эту архитектуру.
                Game Boy Advance 2001г
                >GameBoy
                >приставка
                К чему он приставка, если не секрет? Там есть видео-выход?
                  +1

                  Игровая приставка, а не приставка к чему-то.

                  +2

                  We need to go deeper, существует приставка к приставке Game Cube :)
                  https://en.wikipedia.org/wiki/Game_Boy_Player
                  Причем, там даже не эмуляция: Rather than emulating a Game Boy system, the Game Boy Player uses physical hardware nearly identical to that of a Game Boy Advance.

                    +1
                    Довольно очевидно, что «приставка» в данном контексте == консоль.
                    Можете сколько угодно цепляться к словам, но речь идёт об использовании процессоров ARM в игровых консолях Nintendo, которое началось задолго до Switch.
                    Switch это тоже карманная игровая консоль с док-станцией.
                      0
                      А если это Switch Lite — то даже и без дока…
                  +1
                  Пользователи новых MacBook будут работать на ARM, а писать код под x86

                  При этом в статье вы говорите в основном про Web и Java разработчиков.
                  С Java все понятно. На чем-же сейчас в основном пишется веб? JS, NodeJS, PHP, Spring (Java по своей сути), Go.
                  Из всего этого списка вижу какие-то трудности только с Go, остальное как исполнялось в своих уютных интерпретаторах/виртуальных машинах, так и будет. В этом и плюс современных языков — я пишу условный fs.readFile, и меня не заботит на какой архитектуре и файловой системе оно работает, я просто получу свой файл.

                  А те, для кого низкоуровневые «штуки», зависящие от архитектуры действительно важны, как мне кажется, на маки никогда и не смотрели ;)
                    +2
                    я пишу условный fs.readFile, и меня не заботит на какой архитектуре и файловой системе оно работает, я просто получу свой файл.

                    А я пишу fs.watch и получаю кучу разных проблем на разных системах.

                      +4
                      У Шипилёва давным-давно был такой твит twitter.com/shipilev/status/790207612130365442
                        +1
                        Из всего этого списка вижу какие-то трудности только с Go

                        И зря.
                        Go тоже прекрасно собирается под ARM, на ARM под x86 и наоборот.
                        +4
                        А про сотни миллионов смартфонов на Symbian на тех же сотнях миллионов мощных (384Мгц и больше) процессоров архитектуры ARM в том же 2007 году как-то забыли? Для ARM в 2007 мало что менялось.
                          +4
                          Мы пытались и все еще пытаемся понять, насколько изменит веб-разработку новый продукт

                          Никак. Вообще.

                          Непонятно, о чем тут думать…
                            +1
                            … новый продукт от Apple.

                            Ну вот Safari сильно таки меняет. :)
                            Приходиться конкретно под его особенности костыли городить. Даже ie 11 часто более предсказуемо себя ведёт.

                              0
                              Ну вот Safari сильно таки меняет

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

                              Приходиться конкретно под его особенности костыли городить. Даже ie 11 часто более предсказуемо себя ведёт

                              Think different, фигли.
                            +2

                            О чем это все? О том что компании придется апгрейдить всем вашим разработчикам макбуки?

                              +3

                              Веб тут как раз плохой пример и тот факт что разработчики веб-приложений очень любят macbook ничего не изменит. Потому что веб-разработчики пишут на Java, JavaScript, PHP, Ruby. Go может только выделяется немного в этом ряду, и он в последнее время набирает хорошую популярность. Никто не пишет веб на С, поэтому вообще без разницы какой архитектуры процессор на сервере.
                              Веб разработчиков же ни капли не смущает Linux на сервере и MacOS на ноутбуке на котором они разрабатывают свое приложение, все отлично работает.

                                0

                                Может стоит уже попробовать сервера с arm? Часто они даже дешевле

                                  0
                                  Часть компаний, которые раньше предоставляли ARM-сервера, отказались от них, причем многие крупные начали это делать одновременно, по-тихому, без нормального анонса. Речь, прежде всего, о ThunderX.
                                  Моё предположение — в конкретных популярных процессорах нашли архитектурную уязвимость.
                                  0
                                  Меня зовут Сергей Минаев...

                                  Это ваша фотка? image

                                  Сергей Минаев
                                    –2

                                    M1 шел домой по темному переулку и встретил RTX 3090.


                                    Есть закурить, — спросил RTX 3090, — а если найду?

                                      +5
                                      X86, ARM…
                                      А на самом деле сейчас начинается эра RISC-V.
                                        0
                                        Кстати да, погуглил тут — вот нашел прямо прорывную новость: 3dnews.ru/1026872/yadro-riscv-na-chastote-52-ggts-ustanovilo-rekord-po-proizvoditelnosti-na-vatt-i-oboshlo-apple-m1-na-dva-poryadka
                                          0
                                          Это не прорывная новость, а лажа, рассчитанная на людей не разбирающихся в процессорах, о чём резонно было замечено в комментариях к оригинальной статье.
                                          www.eetimes.com/micro-magic-risc-v-core-claims-to-beat-apple-m1-and-arm-cortex-a9

                                          Самые производительные процессоры ARM Cortex-A9

                                          Конечно, ведь с 2007г не появилось ни одного более производительного ARM-а =)

                                          эффективность одного условного ядра Apple M1 будет меньше 100 баллов на ватт.

                                          Это просто враньё.
                                          twitter.com/andreif7/status/1334862926218457090
                                          ~10K для P-ядер
                                          ~48K для E-ядер

                                          Apple M1 в том же тесте CoreMark показывает результат 10 000 баллов

                                          160000

                                          Аналогов этому в мире сегодня нет, уверены в Micro Magic.

                                          Аналоговнет(с)

                                          И да, смысла в CoreMark не больше чем в Whetstone или Dhrystone.
                                        0
                                        Все уважаемые люди уже там: riscv.org/members

                                        Не плохо бы создать RISC-V Russia комъюнити и зарегистрировать его в RISC-V International, денег вроде как не берут с общественных организаций. Только российское законодательство совершенно не адекватное в части НКО.
                                          0

                                          А ещё он избавлен от всяких Спектров, да?

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое