Процессоры ARM против x86: будет ли схватка
АрхивПлатформаНедавно сама постановка вопроса казалась немыслимой, но развитие технологий и причуды рынка привели к ситуации, когда возможна самая настоящая конкуренция.
Совсем недавно сама постановка вопроса казалась немыслимой: можно ли вообще сравнивать "телефонный" процессор с чипами, применяющимися в "персоналках", серверах и даже суперкомпьютерах? Между тем, развитие технологий и причуды рынка привели к ситуации, когда специалисты всерьёз обсуждают возможность даже не просто конкуренции между процессорами ARM и чипами x86, а яростной схватки между ними.
Прежде всего, определимся с понятиями и познакомимся с потенциальными соперниками.
Центральные процессоры x86 – это микропроцессоры, поддерживающие одноимённый набор инструкций и обладающие микроархитектурой, производной от IA-32, то есть Intel Architecture 32-бит. Чипы построены на основе архитектуры CISC (Complex Instruction Set Computing, то есть "с полным набором инструкций"), в которой каждая инструкция может выполнять сразу несколько низкоуровневых операций.
Исторически семейство x86 восходит к 16-разрядной модели Intel 8086, выпущенной в 1978 году. 32-битными эти процессоры стали лишь в 1985 году, когда был представлен первый "триста восемьдесят шестой". В 1989 году Intel выпустила первый скалярный (то есть выполняющий одну операцию за один такт) чип i486 (80486), в котором впервые появились встроенная кэш-память и блок вычислений с плавающей запятой FPU. Процессоры Pentium, представленные в 1993 году, стали первыми суперскалярными (то есть выполняющими несколько операций за такт) и суперконвейерными (в этих чипах было два конвейера).
Итак, современные x86-совместимые чипы – это суперскалярные суперконвейерные микропроцессоры, построенные на основе CISC-архитектуры.
ARM-процессоры – 32-битные чипы на базе архитектуры RISC (Reduced Instruction Set Computer), то есть с сокращённым набором команд. В основу этой архитектуры положена идея повышения быстродействия за счёт максимального упрощения инструкций и ограничения их длины.
История ARM-процессоров началась в том же 1978 году, когда была создана британская компания Acorn Computers. Под маркой Acorn выпускались несколько чрезвычайно популярных на местном рынке моделей персональных компьютеров на основе восьмибитных чипов MOS Tech 6502. Этот же ЦП, кстати, стоял в Apple I и II и Commodore PET.
Однако с появлением более совершенной модели 6510, которая в 1982 году стала устанавливаться в Commodore 64, линейка компьютеров Acorn, включая популярнейший образовательный BBC Micro, потеряла актуальность. Это подтолкнуло владельцев Acorn к созданию собственного процессора на базе архитектуры 6502, который позволил бы на равных конкурировать с машинами класса IBM PC.
Первая серийная модель ARM2, разработанная в рамках проекта Acorn RISC Machine, была выпущена в 1986 году и стала самым конструктивно простым и недорогим 32-битным процессором на тот момент: в нём отсутствовала не только кэш-память, что было нормой для чипов того времени, но и микропрограммы: в отличие от CISC-процессоров, микрокод исполнялся как и любой другой машинный код, путём преобразования в простые инструкции. Кристалл ARM2 состоял из 30000 транзисторов, и эта компактность конструкции осталась характерным признаком этого семейства: в ARM6 всего на 5000 транзисторов больше.
В отличие от Intel или AMD, ARM сама не занимается выпуском процессоров, предпочитая продавать лицензии другим. Среди компаний, располагающих такими лицензиями, есть те же Intel и AMD, а также VIA Technologies, IBM, NVIDIA, Nintendo, Texas Instruments, Freescale, Qualcomm и Samsung. Показательный факт: если AMD, вторая компания на рынке x86-процессоров, в 2009 году отметила выпуск своего 500-миллионного ЦП, то в одном только 2009 году на рынок было поставлено почти три миллиарда ARM-процессоров!
Современные ARM-процессоры – это суперскалярные суперконвейерные микросхемы, построенные на основе RISC-архитектуры.
Судя по этим двум определением, чуть ли не единственное формальное отличие семейств ARM и x86 – микроархитектуры RISC и CISC. Однако и это уже нельзя считать принципиальным отличием: начиная с модификации i486DX, x86-чипы стали больше напоминать RISC-процессоры. Начиная с этого поколения, микросхемы, сохраняя совместимость со всеми предыдущими наборами команд, демонстрируют максимальную производительность только с ограниченным набором простых инструкций, который подозрительно похож на набор RISC-команд. Поэтому сегодняшние x86 можно смело считать CISC-процессорами с RISC-ядрами: встроенный в микросхему аппаратный транслятор декодирует сложные CISC-инструкции в набор простых внутренних RISC-команд. Даже несмотря на то, что каждая CISC-инструкция может "раскладываться" на несколько RISC-команд, быстрота выполнения последних обеспечивает значительный прирост производительности. К тому же, не следует забывать о суперскалярности и суперконвейерности современных чипов.
Куда важнее другое отличие: львиная доля x86 – это универсальные процессоры, "обвешанные" множеством разнообразных блоков и модулей, которые призваны успешно справляться практически с любыми задачами – от веб-сёрфинга и обработки текстовых файлов до кодирования видео высокого разрешения и работы с трёхмерной графикой. У ARM-чипов, ориентированных на использование в смартфонах и прочих портативных устройствах, совершенно иные цели и возможности.
Тогда что же делить столь разным продуктам? Конечно, нелепо сравнивать четырёхъядерный Core i5 и "телефонный" Qualcomm MSM7201A, стоящий в коммуникаторах HTC Dream и Hero, но есть масштабы, где рынки ARM и i86 перекрываются уже сегодня. Это, с одной стороны, такие новейшие чипы ARM, как Cortex-A8 (архитектура ARMv7-A), а с другой – низковольтные x86-процессоры класса Intel Atom. На основе Cortex-A8 построен модный планшет Apple iPad, а Intel Atom работают в подавляющем большинстве нетбуков.
У этих чипов есть ещё одна важная общая особенность: оба этих процессора работают по принципу последовательного исполнения инструкций, в то время как большая часть x86 – процессоры с внеочередным выполнением команд. Эта схема призвана добиться максимальной производительности на ватт потребляемой энергии за счёт отказа от модулей, отвечающих за внеочередное выполнение инструкций.
Есть у Atom и несколько принципиальных отличий от Cortex-A8. Прежде всего, практически все микросхемы этого семейства поддерживают технологию параллельных вычислений Hyper-Threading, которая позволяет представить одно физическое ядро как два виртуальных. Это весьма существенное преимущество, заметно повышающее производительность, причём не только в относительно редких до сих пор многопоточных приложениях, но и при выполнении команд с интенсивным использованием систем ввода-вывода. К примеру, Atom с Hyper-Threading заметно быстрее загружает Windows, чем сравнимый с ним по возможностям одноядерный VIA Nano без поддержки такого режима.
Практическое сравнение производительности Atom и Cortex-A8 провёл Вэн Смит, автор тестовых пакетов OpenSourceMark, miniBench и один из соавторов SiSoftware Sandra. Тестировались машины на базе процессоров Atom N450, Freescale i.MX515 (Cortex-A8), VIA Nano L3050 и, для сравнения, на основе мобильного Athlon XP-M на ядре Barton. Поскольку за точку отсчёта были приняты характеристики Cortex-A8 с тактовой частотой 800 МГц, рабочие частоты VIA Nano и Athon были снижены до того же значения, а Atom – до 1000 МГц (дальнейшее снижение оказалось невозможным). При этом у Cortex-A8 осталось несколько заведомо слабых мест: поддержка медленной 32-битной памяти DDR2-200 и более чем скромная встроенная графика с максимальным разрешением 1024 на 768 при шестнадцатибитной глубине цвета. Все тесты проводились на системах под управлением операционной системы Ubuntu 9.04 Linux.
Результаты тестирования оказались более чем любопытными: Cortex-A8 продемонстрировал вполне конкурентоспособную производительность в целочисленных вычислениях при значительно более низком энергопотреблении по сравнению с соперниками. Ожидаемо провальными оказались лишь тесты на пропускную способность памяти и на вычисления с плавающей запятой – традиционной "ахиллесовой пятой" ARM-чипов. В течение продолжительного времени в ARM-процессорах вообще отсутствовали модули FPU и хотя в Cortex-A8 есть два таких модуля (Neon 32-бит SP и VFP), их мощности явно недостаточно. Вычисления с плавающей запятой – это и трёхмерные игры, и научное моделирование, и некоторые виды обработки и кодирования видео и звука. Так что если производители процессоров ARM действительно нацелились на нишу нетбуков, неттопов и планшетников, им нужно существенно улучшить производительность FPU. С подробными результатами всех тестов можно ознакомиться здесь (http://www.brightsideofnews.com/news/2010/4/7/the-coming-war-arm-versus-x86.aspx).
Стоит ли нам ожидать схватки между столь разными и столь похожими семействами процессоров ARM и x86? Пока по производительности в массовых развлекательных приложениях "армы" существенно уступают даже "атомам". Однако перспективы внушают оптимизм: новейшая архитектура Cortex-A9 рассчитана на создание процессоров с одним-четырьмя ядрами и, как утверждают в ARM Limited, в них значительно улучшена производительность вычислений с плавающей запятой. Первые чипы на базе Cortex-A9 – NVIDIA Tegra 2 – это двухъядерные микросхемы с графическим ядром, поддерживающим видео формата Full HD 1080p и трёхмерную графику с программным интерфейсом OpenGL ES 2.0. Планшет или нетбук с такими характеристиками запросто поспорит с любым устройством на основе Atom. Добавим сюда исключительную экономичность, а значит, и длительное время автономной работы. Так что Apple iPad вполне может стать символом начала борьбы чипов ARM с x86-процессорами на их же собственном поле.