01 July 2011

От ARM к x86. И обратно

Этой весной в Сети была поднята большая волна -- кто-то запустил слух о том, что в самом ближайшем будущем компания Apple может отказаться от использования x86 процессоров в своих ноутбуках и перейти на ARM. Трудно сказать, кто, а главное, с какой целью запустил эту историю. Лично у меня есть стойкое убеждение, что никакого злого умысла во всем этом не было -- просто какому-то среднестатическому IT журналисту в вакууме пришла в голову светлая идея, мол раз в OS X Lion натащили столько всяких фич из iOS, почему бы завтра не сделать следующий логический шаг в эту сторону?... О тотальной безграмотности технических писак, причем, как наших так и зарубежных, сегодня говорить не буду -- это совершенно отдельная, большая и больная тема, переминающаяся с ноги на ногу под громкими лозунгами “дилетанство -- главная добродетель” или “знание приумножает скорбь”. Так вот, в тот раз я не стал доставать из ножен перо-оружие против оголтелого невежества, дотерпел до сегодня, чтобы высказать свои соображения ровно по противоположному поводу. 


Конец света близок -- сбылось страшное библейское пророчество: “… и даже лев станет смирен аки агнец, и будет есть яблоки вместо мяса...”

Стив Джобс давно пытается нас убедить в том, что мы живем в пост-PC эру. Самый главный IT тренд последних лет десяти -- мобильность. Слово “персональный” (из всем известной аббревиатуры “ПК”) проделало путь от огромной гудящей коробки, стоящей на вашем рабочем столе дома, до смартфона, который вы, совершенно не задумываясь, кидаете в карман своих шортов, выбегая на две минуты в соседний магазин за хлебом.
И те же планшеты, от которых сегодня все сходят с ума, есть ничто иное, как более мобильная и автономная версия вашего любимого ноутбука. 


Post-PC это о том, когда ненужное больно отрезают

Сегодня мы будем говорить о компании Intel, о том, каким она видит свое место в мобильных устройствах завтрашнего дня, и о том, есть ли место в этих устройствах процессорам с архитектурой x86, ибо большие надежды и чаяния в мобильной сфере у производителя процессоров #1 связаны с архитектурой Atom и неудержимым прогрессом в области полупроводниковых технологий. 

Когда-то давным давно, когда солнце светило ярче, а трава была забористее, когда словосочетание Wintel было не пустым звуком, и о дружбе Intel и Microsoft слагались поэмы, у первых была лицензия на ARM архитектуру, самые быстрые процессоры с оной, и большой, и вроде как очень перспективный, рынок PDA, в которых эти самые процессоры и использовались. Время шло -- PDA истерия сошла на нет, вся XScale история была с несказанным облегчением продана Marvell, а между дружбой двух компаний, софтовой и хардварной, пробежала кошка. Intel так и не смогла добиться от Microsoft определенных доработок Windows в плане поддержки Atom процессоров, поэтому вынуждена была влезть в одну упряжку с Nokia в рамках MeeGo проекта. У Microsoft же насчет своей ОС появились соображения иного свойства, и чем можно назвать поддержку архитектуры ARM в Windows 8, как не предательским ударом ножом в спину своего бывшего друга?...
Сегодня Intel, хорошо понимая всю значимость мобильного направления, скорее изображает хорошую мину при плохой игре, и настойчиво пытается выдавать желаемое за действительное, чем имеет действительно стоящие достижения на этом поприще. Проблема в том, что многие журналисты ведутся на всю эту шумиху, во всю рассказывают о чудесах техпроцесса и на полном серьезе разбрасываются прогнозами, мол в перспективе ближайших пары лет даже Apple переведет свой iPad на Atom. 


Рис и гречка -- секретное оружие Intel!

Хочется немного убавить энтузиазм этих товарищей, иной раз подпитываемый крайне нехитрой аргументацией -- мол, раз уж такой гигант-толстосум решил в эту нишу влезть, не мытьем, так катанием, но он сделает это.
Не факт. О чем нам говорит история? Intel много, часто и сильно ошибалась.
В 90-х они грозились всех пересадить на их новый 64-х разрядный процессор Itanium. А вопрос совместимости с x86 решить просто -- эмуляцией.
В начале 2000-х они молились на P4, NetBrust и рассказывали о том, что не успеете глазом моргнуть, как сердцем каждого персонального компьютера будет их процессор с частотой 10+ ГГц!
Они проморгали острую необходимость вводить 64-х битный набор команд в x86 архитектуру. Нонсенс -- это сделали за них в AMD.
Они уже больше десятилетия пытаются сделать что-то достойное в области 3D графики, но воз и ныне там -- ничего интересного в этой области корпорация так и не смогла сделать. Впрочем, этот момент очень тесно связан с темой нашей сегодняшней беседы, потому мы обязательно вернемся к нему позднее...

Итак, я глубоко убежден в том, что в мобильной отрасли x86 еще очень и очень долго не сможет составить серьезную оппозицию ARM. Давайте смотреть почему.


Личная неприязнь

Начну с самого нескромного и совершенно неубедительного аргумента. С личного опыта.
Некрасиво, конечно, бряцать регалиями, но тут тот самый случай, когда надо отбросить ложную скромность и рассказать следующее. Ваш покорный слуга имеет за плечами больше десяти лет опыта программирования встраиваемых систем, и мне за мою профессиональную карьеру довелось создавать программы для самого широкого спектра платформ, от самых простых, восьмиразрядных, с парой килобайт RAM на борту, до 32-х разрядных монстров на основе архитектур вроде ARM или Blackfin, с частотой перешагнувшей за полгигагерца. Конечно же, я очень много работал с embedded решениями на основе x86, причем тут тоже был широкий спектр устройств, от 16-ти разрядных динозавров, вроде AMD Am186, до довольно серьезных систем в широко распространенном формате PC104



Так вот, хотите верьте, хотите нет -- но x86 в области встраиваемых систем это всегда очень сложно, дорого, и это совсем не тот случай, когда используемое решение может похвастаться чем-то в области энергопотребления. 
В лихие 90-е x86 была интересна исключительно с точки зрения богатого инструментария и поддерживаемых операционных систем. Сегодня, пожалуй, единственная причина связываться с этой архитектурой, это реальная необходимость получить на своей платформе работающий Windows. Все остальные проблемы ушли, ибо сегодня есть Linux, работающий на огромном числе платформ, плюс есть большая и развитая экосистема, связанная с этой ОС.

Места сегодня для x86 в embedded области осталось совсем не много.


Наследие царского режима

Если бы мне надо было одним словом охарактеризовать всю x86 архитектуру в целом, пожалуй, ничего лучше слова “legacy” я бы не придумал. За всей сегодняшней мощью x86 процессоров -- самых массовых, самых лучших по соотношению производительность/цена -- стоит призрак совместимости. В этом их сила. В этом их слабость, и не даром еще в середине 90-х Intel пыталась спрыгнуть с этой иглы на упомянутый выше Itanium.

Я даже не знаю с чем можно сравнить современный x86 процессор. В нем, как в Греции, есть все, а сбоку еще и бантик.
Для ностальгирующих реализована поддержка реального режима работы процессора, 16-ти битной системы команды, адресации сегментами размером по 64K в пределах одного мегабайта памяти.
Для тех, чья юность пришлась на середину 80-х -- поддержка защищенного режима 286-го процессора. Очень полезная штука.
Потом -- реализация 32-х битного набора команд, механизма виртуальной памяти и режима VM86.
Далее -- бесчисленные расширения, которые стали придумывать со времен первого пентиума. От MMX до SSE черт знает какой уже по счету версии.
Современная 64-х разрядная система команд и соответствующий режим работы процессора, в котором наконец-то отказались от такого рудимента, как сегментация памяти.
И сверху всего этого нагромождения эпох --  вишенка. Виртуализация. 


The Root of all Evil. Терминатор, который должен убить создателя этого процессора, уже отравлен в 1978-й год

Полагаю, что x86 в его нынешнем виде обладает самой большой и самой сложной системой команд управления процессором из всех когда-либо созданных человечеством. И чтобы ее реализовать, очевидно, нужно много-много сотен тысяч транзисторов. Нужен самый сложный в мире декодер команд, который будет корректно и с высокой скоростью поставлять весь этот зоопарк команд на исполнительные устройства.

За прошедшие тридцать с лишним лет со времен изобретения первого из могикан -- процессора 8086 -- представления о том, какими должны быть процессоры, и как они должны управляться, очень сильно поменялись. Сегодня вряд ли кто-то будет думать о том, что процессор должен управляться командами, на которых должно быть удобно писать человеку -- компиляторы за эти тридцать лет проделали большой путь, оставив программирование на ассемблере исключительно фанатам, извращенцам и разработчикам HAL уровня в операционных системах. Сегодня в процессорах ценятся совсем другие добродетели -- простота системы команд, ее ортогональность, прямые способы создания параллельных потоков команд, большое число регистров общего назначения etc. Посмотрите на x86 и посмотрите на Itanium, уверен, вы поймете о чем я.  

Не более, чем констатация очевидного факта -- x86 в сегодняшнем виде всего своего монстромногообразия, приобретенного под тяжестью прожитых лет, безнадежно устарел. И совершенно непонятно, чего ради со всем этим хламом заводиться, если вам не нужна двоичная совместимость с x86 кодом. Груз прожитых лет -- та самая “совместимость” -- не прибавляет экономии в потреблении энергии, не говоря уже о том, что эти сотни тысяч транзисторов можно использовать с гораздо большей пользой.

Мопсы и флопсы

Простите за каламбур, я хотел сказать MIPS’ы и FLOPS’ы. Давайте посмотрим на историю x86 вот еще под каким углом.
Вы помните такую штуку, как 8087? Такую необязательную микросхему, которая могла ставиться, а могла и нет, рядом с 8086. Штука в те годы довольно дорогая и специфическая, предназначенная исключительно для бородатых ученых и безумных бухгалтеров, которым не хватало не только 640 килобайт памяти, но еще и скорости вычисления чисел с плавающей точкой в режиме эмуляции, через целочисленную арифметику центрального процессора.

Сопроцессор долгие годы развивался довольно медленно и был совершенно необязательной штукой, хотя, с течением времени, он даже успел пробраться из отдельной микросхемы на материнской плате внутрь некоторых представителей 486-го семейства.
Первая действительно серьезная попытка усовершенствовать FPU была предпринята в процессоре Pentium (я про P5 архитектуру) -- некоторые очень востребованные операции, вроде FMUL, начали выполняться со скоростью, выросшей на порядок в сравнении с 486-м процессором. А с середины 90-х начал бум 3D игр, которые начали использовать быстрый FPU процессоров P5 по полной программе (старожилы, уверен, помнят, с какой скоростью первый Quake бегал на 486DX4 и Pentium 100).

С этого момента развитие x86 процессоров пошло по совсем другому пути -- сопроцессор, из цацки для ученых, превратился в одну из самых востребованных подсистем в “камне”. И если в P5 все-таки сначала были добавлены MMX команды, которые касались целочисленной математики, то дальше движение пошло совсем в другую сторону -- 3D Now!, SSE, это все о SIMD операциях над числами с плавающей точкой. Кстати, и тяжелые времена для AMD, безвременье, между 586-м и Athlon было как раз связано с неприлично низкой скоростью FPU в сравнении конкурирующими процессорами от Intel.

К сожалению, я не смог найти в Сети соответствующий график, который бы показывал MIPS и FLOPS производительность x86 процессоров по оси времени, но, полагаю, что еле растущий до 90-х годов показатель FLOPS, начиная с этой точки начал расти такими темпами, что MIPS и не снилось. 


Шутка той эпохи -- большой, белый, но не холодильник

3D графика пришла на ПК. Самые первые игры использовали либо полностью софтварный рендринг, либо прибегали к помощи самых первых 3D ускорителей, которые не умели ничего более, чем нарисовать на экране заданный набор треугольников с указанными текстурами. Треугольники эти надо было откуда-то брать -- их обсчет ложился полностью на плечи FPU центрального процессора, поэтому быстрый FPU долгие годы был определяющим фактором высоких FPS в трехмерных играх.

Что было дальше, полагаю, знают даже самые юные читатели этого материала. Производители 3D чипов сначала добавили в них возможности по обсчету геометрии, а позднее эти FPU в видеочипах стали абсолютно универсальными, и начали использоваться и для задач текстурирования (т.н. пиксельные шейдеры). Высокая параллельность всех эти вычислений, в купе с отсутствием требований по универсальности и точности, привели к тому, что в плане FLOPS’ов современные видеокарты на порядки быстрее современных CPU.

К чему я все это рассказывал? Да к тому, что долгие годы вычислительная мощь x86 процессоров росла в области вычислений с плавающей точкой и этот перекос, в конечном счете, привел к тому, что сегодня очень многие алгоритмы, целочисленные по своей сути, все равно пишутся для расчетов на FPU (с задействованием SIMD команд), так как это будет значительно быстрее. При чем тут мобильные устройства? Исполнительные устройства для вычислений с плавающей точкой в разы сложнее таких устройств для целочисленной математики. А это все транзисторы, транзисторы, и много много лишних киловат потребляемой энергии. В мобильном мире это все непозволительная роскошь -- рассчитывать целочисленный по своей сути алгоритм на FPU. А для целого класса задач, связанных с обработкой 3D графики, конечно же гораздо эффективнее использовать возможности 3D ускорителя.

Плавно, через очень показательный слайд, переходим теперь к вопросу 3D графики.


Темпы развития: CPU vs GPU

Пара слов о видео

Это был очень, очень хороший и важный слайд. На презентации второго поколения планшета от Apple Стив Джобс сказал, что новое устройство в два раза быстрее своего предшественника в плане CPU, и почти на порядок в плане GPU.

Таковы реалии дня сегодняшнего. В области CPU давно уже наблюдается застой и кризис, о котором я уже писал тут, и все, что смогли придумать разработчики процессоров -- наращивание ядер, которое, к сожалению, имеет один существенный недостаток. Для того, чтобы от многоядерности была хоть какая-то польза -- все существующее программное обеспечение надо переписывать особым, весьма и весьма нетривиальным, образом.
А вот в области GPU наблюдается ровно противоположная картина -- здесь можно расти вширь сколько угодно долго, и практически все существующие программы сразу же начинают получать от этого роста выигрыш.
Поэтому на слайде мы и видим такие цифры -- 2x, 9x. Хотим мы этого или нет, но это реалии дня сегодняшнего.

Сегодня без сильных графических решений в мобильную область соваться никак нельзя.
Может Intel есть чем похвастать в этой сфере? Врать не буду, с Sandy Bridge я не имел дело, но дело в том, что на рынок GPU Intel пытается выйти еще с конца 90-х, когда они с большой помпой выпустили в свет первую в мире AGP видеокарту i740... Так вот, с той самой поры, ничего лучше, чем интегрированные решения, которые годятся только для ускорения самых примитивных казуалок, плюс игр десятилетней давности, и плюс интерфейса Aero в Windows, в Intel так и не смогли сделать. Весть путь компании в области видеорешений прошел под знаменем той самой i740, видеокарты абсолютно неудачной во всех аспектах. Я уж не буду вспоминать про пафосные обещания, что AGP и GART технология перевернут мир, позволив экономить на видеопамяти (ага, ага, посмотрите какую память и сколько сегодня ставят в топовые видики!). Или хвастливые заявления о выпуске революционного GPU Larrabee, который, после всего это, просто был отменен... 


Тот самый i740

Весь путь Intel в области видео это череда неудач и поражений. Или вы на полном серьезе считаете интегрированный ширпотребный GPU, аналогичный звуковому AC97 решению, действительно серьезным достижением за более чем десять лет?

Еще раз -- без сильного графического решения в iPad вы никак не попадете.
Поэтому я считаю, что у NVIDIA с их Tegra в разы большие шансы на успех, чем у Intel. Потому что ядро ARM можно просто лицензировать, а вот опыт в 3D -- бесценен.


Про совместимость

Как видим, очень серьезных проблем у x86 от Intel в области планшетов хватает.
И только сейчас, под занавес, я хочу довершить эту печальную картинку проблемой совместимости. 



На сегодняшний день в App Store находится почти 100 тысяч приложений. Вдумайтесь в эту цифру!

Мы помним, Apple иногда способна на безрассудные поступки. Но я не знаю, яйцами из стали какой марки надо обладать, чтобы в один прекрасный день сделать такую жесткую перезагрузку всей этой экосистемы (которая, кстати, ценна не столько как источник прибыли, сколько служит для повышения привлекательности продуктов на iOS, см. мой материал о мобильных приложениях, где я поднимал и эту тему).

Может перекомпиляция всего и вся спасет отца русской демократии? А вы себе, на секундочку, представьте как потом обеспечить приемку всего этого перекомпилированного добра обратно в App Store, когда вам в день будут поступать тысячи приложений от разработчиков, схватившихся за головы от такой революции со стороны любимой компании.

Может эмуляция? Исключено. В плане общей производительности современные ARM процессоры вполне себе могут тягаться с мобильными процессорами x86 архитектуры при сравнении на один мегагерц производительности.

Опять же, если даже Apple и переведет свой iPad на Atom, нужно будет как-то решать вопрос iPhone, который вряд ли получится перевести на такой монструозный процессор, а значит в iOS сегменте грядет очень серьезный раскол, со всем вытекающими из него проблемами.

А все-таки?... Для iOS это просто нереально.
Несколько большие шансы для такого рода миграции имеют Android и Windows Phone 7. И там, и там для сторонних приложений используется механизм виртуальной машины (за подробностями снова отсылаю к своему материалу про мобильные приложения), поэтому переход на совершенно другую процессорную архитектуру может пройти относительно безболезненно. Для WP7 нет вообще никаких проблем, т.к. в этой ОС разработчикам закрыт доступ к нативному коду, а вот в случае Android можно потерять значительную часть приложений (в основном игр), использующих NDK.

Закрывая тему совместимости. Мое мнение, что сам по себе x86 интересен только огромной базой приложений, написанных под Windows. Как мы понимаем, в случае мобильных устройств, эта совместимость никакого интереса не представляет просто потому, что для начала нужно полностью переписать пользовательских интерфейс всех этих приложений.

Вместо заключения

В общем, очень надеюсь, что, дочитав до этого места, вы поняли, что не стоит надеяться на то, что через пару лет будет одно сплошное телевидение x86.

Сегодня Intel определенно проигрывает битву за post-PC пространство, но вера внутри компании в ее светлое будущее столь крепка, что отзвуки этой веры скозняками гуляют в черепных коробках слабых духом IT журналистов. Некоторые из них, например, считают, что доступные сегодня 22 nm это повод презрительно смотреть на тот же Apple A5, выполненный аж по 45 nm. А я говорю, что достижения в области полупроводниковых технологий здесь не решают. Просто потому, что технология, в принципе, не привязана к архитектуре процессора. Поэтому завтра вопрос вряд ли будет звучать так -- или x86 по 22 или ARM по 45; транзисторы лишними не бывают, и вместо декодера x86 команд их с гораздо большой охотой потратят на GPU. 


Ход пешкой -- A4-A5. Белые начинают и выигрывают?

Поэтому я скорее поверю в то, что завтра Intel купит с потрохами Marvell и как-нибудь PowerVR и займется, наконец-то, делом, чем в то, что через пару лет мы станем свидетелями выхода Apple iPad, внутри которого стоит Intel Atom... Кстати, многочисленные конкуренты планшета от Apple отсеиваются на первом же рубеже обороны -- цена $499 для многих оказывается просто недостижимой. Так вот, использование ARM, а не x86, уверен, вносит серьезный вклад в итоговую себестоимость планшета.

И еще один аргумент в мою пользу, который я уже упоминал вскользь. Windows 8 + MS Office для ARM. Неужели кто-то думает, что Microsoft столь глупа и близорука, что инвестирует сотни миллионов долларов в направление, которое через пару лет загнется? Некоторые светочи отечественной IT журналистики и аналитики считают себя умнее Балмера? 


Как видим, у Microsoft стоит хорошая погода -- тепло и солнечно

Очень надеюсь, что читатель не записал меня в Intel ненавистники. Свой кусок пирога Intel, несомненно, урвет, и инвестиции в Atom попадут на благодатную почву. Если говорить про рынок планшетов, то я еще в начале года писал о том, что Apple свою долю рынка обязательно начнет терять. Пусть медленно, но верно. Планшеты на Android, на “взрослой” Windows, на той же MeeGo -- все это бескрайние просторы для окучивания со стороны Intel. Мое мнение, что весьма перспективен планшетный Windows, причем в успех этой ОС на ARM архитектуре я верю с большим трудом. А это значит, что производители таких планшетов -- клиенты Intel.

Ну и закончить этот материал я хотел бы вот на какой ноте. При подготовке к его написанию, я подумал о следующей штуке -- если уже сегодня в мобильные устройства, использующие ARM, ставят гигабайт RAM, то в перспективе ближайших пары лет остро встанет вопрос, связанный ограничением 32-х разрядного адресного пространства этой архитектуры. А значит, что уже в самое ближайшее время нам должны представить ARM 64 бита. Я нешутейно обрадовался -- ведь это возможность поиграть в пророка, и озвучить моим читателям такой вот прогноз, который обязательно сбудется... Радость была недолгой; поиск в Google сразу же намекнул на то, что если такой прогноз и нужно было делать, то как минимум полгода назад. Расширение ARM 64 было анонсировано в конце прошлого года. Надеюсь, вы знаете о чем это нам говорит?...

No comments:

Post a Comment