Большинство мобильных электронных устройств создано на основе процессорного ядра ARM. Низкое энергопотребление и высокая производительность сделали эти процессоры популярными среди разработчиков мобильных телефонов и портативных компьютеров. Процессоры Cortex-A и системы на кристалле с низким энергопотреблением на их основе конкурируют с процессорами Intel Atom, грозя вытеснить их с рынка нетбуков и планшетных компьютеров. Процессоры последних разработок компаний – партнеров ARM приближаются по производительности к процессорам x86 для настольных систем и серверов.
На сцену выходит ARM
В 1983 году компания Acorn – один из ведущих в то время производителей микрокомпьютеров на базе процессоров MOS Tech 6502 – начала разработку нового микропроцессора, который смог бы составить конкуренцию машинам IBM PC на бизнес-рынке. На основе архитектуры 6502 был создан прототип RISC-процессора, получивший название ARM (Acorn RISC Machine).
В 1986 году появился первый серийный 32-разрядный процессор ARM2. Он имел всего 30000 транзисторов (для сравнения, в процессоре Motorola 68000 было 70000 транзисторов), в нем не было кэша и микрокода. Возможно, это был самый простой полезный 32-разрядный процессор в мире. Но, несмотря на простоту (а может, и благодаря ей), ARM2 на деле показал преимущества архитектуры RISC. Он легко обходил по производительности своего соперника Intel 80286, имея, к тому же, более низкое энергопотребление. У следующей модели ARM3 был 4-килобайтный кэш и более высокая тактовая частота.
На волне возрастающего интереса к экономичным и производительным процессорам ARM фирмы Acorn, VLSI Technologies и Apple Computers организовали компанию Advanced RISC Machines (ARM) Ltd. В 1993 году был выпущен процессор ARM610, который использовался в первом планшетном портативном компьютере в мире – Apple Newton.
В отличие от своего давнего конкурента Intel, компания ARM, не имея возможности массово производить чипы, активно продавала лицензии на ядро ARM. Простота архитектуры не требовала для производства дорогого современного оборудования. Производитель мог по своему усмотрению комбинировать ядро ARM с дополнительными периферийными блоками, получая в итоге чип с оптимальной для какого-либо конкретного устройства функциональностью.
Благодаря такой политике и преимуществам архитектуры ARM эти процессоры начали стремительно завоевывать популярность у производителей различных портативных электронных устройств. С 1994 года были приобретены 170 лицензий на процессоры семейства ARM7, а всего произведено более 20 биллионов (!) чипов [1]. Процессоры ARM7TDMI используются в таких популярных устройствах, как аудиоплейеры iPod и iRiver, игровые консоли Nintendo DS и GameBoy Advance, мобильные телефоны Nokia и т.д. Его улучшенная версия – ARM9TDMI – использовалась, в частности, в мобильных телефонах Philips, HTC, LG, Siemens, Sony Ericsson, а также на основе этого ядра был создан процессор для цифровых фотокамер Canon Digic.
Еще одна популярная ветвь семейства ARM – серия StrongARM, которая была создана в сотрудничестве с компанией DEC. На базе этого процессора компанией Intel, которая впоследствии получила права на архитектуру StrongARM, был разработан более производительный процессор XScale. Они устанавливались во многие популярные КПК – Sharp Zaurus, Sony Clie, Palm и смартфоны Blackberry.
Последний из "номерных" процессоров ARM11 имел поддержку аппаратного декодирования MPEG4 и еще меньшее тепловыделение, чем его преемники. Использовался он также во многих получивших самое массовое распространение смартфонах – Apple iPhone 2G/3G, многих моделях HTC, LG Optimus One и пр.
Особенности процессоров ARM
Одна из важных отличительных черт ядер ARM – возможность условного выполнения практически любой команды. Можно задать исполнение команды в зависимости от результата предыдущей операции по условию, которое определяется состоянием четырех флагов – N (флаг отрицательного результата), Z (флаг нулевого результата), C (флаг переноса) и V (переполнение) (табл.1). Если условие не выполняется, команда интерпретируется как NOP – отсутствие операции. Это позволяет реализовывать достаточно сложные алгоритмы без громоздких ветвлений.
Например, алгоритм Евклида для нахождения наибольшего общего делителя методом вычитаний, выполненный на ассемблере ARM, выглядит так:
loop CMP Ri, Rj ; проверка условий NE (i != j),
; GT (i > j),
; и LT (i < j);
SUBGT Ri, Ri, Rj ; если GT, выполняется i = i-j;
SUBLT Rj, Rj, Ri ; если LT – j = j-i;
BNE loop ; если NE – переход на
; метку loop.
Если не выполняются условия GT и LT, то не выполняется ни один оператор SUB. Условные инструкции позволяют создавать достаточно компактные и легко читаемые программы, обходясь без многочисленных ветвлений.
Еще одна особенность ARM – совмещать операции сдвига с арифметическими и логическими действиями и командами перемещения данных между регистрами. Например, инструкция ARM
ADD Ra, Ra, Rj, LSL #2
выполняет сложение двух чисел и сдвиг результата на два разряда влево.
С эволюцией архитектур ARM также развивалась система команд (рис.1). Происходило это двумя путями одновременно. В основной набор команд ARM добавлялись новые инструкции – Enhanced DSP, SIMD, а также появилась новая, параллельная основной система команд, получившая название Thumb (игра слов: thumb – "большой палец", "arm" – рука).
Система команд Thumb. Разработчики ARM предложили интересное решение, позволяющее уменьшить объем программного кода (и, следовательно, более эффективно использовать память) и упростить совместимость ядра с 8- и 16-битными периферийными устройствами, сохранив в то же время мощность 32-битного процессора.
Система команд Thumb включает 36 16-битных команд, производных от некоторых команд ARM. В процессе выполнения кода команды Thumb "разворачиваются" в команды ARM и выполняются обычным образом. Такая своего рода аппаратная компрессия позволяет сократить объем кода на 30%. Вместе с поддержкой 16-битных команд появилась и поддержка 16-битных форматов данных. Используя Thumb, можно, например, добиться большего быстродействия при относительно медленной недорогой 32-разрядной памяти, считывая одновременно две команды Thumb в буфер. При этом в два раза уменьшается время ожидания чтения из памяти, так как одна из команд выполняется из буфера. Также можно комбинировать различные типы памяти: быстрая 32-битная внутренняя память – для критичных ко времени выполнения и/или производительности (например, обработка прерываний) кодов ARM и 8- или 16-битная внешняя – для хранения констант и/или команд Thumb. Переключение режимов Thumb/ARM выполняется "на лету", с помощью команды BX, которая переключает соответствующий бит в регистре состояния программы PSR.
Экономичность кода Thumb можно показать на простейшем примере – подпрограммы, возвращающей модуль числа x. На ассемблере ARM этот алгоритм можно написать следующим образом:
CMP r0, #0 ; сравнение r0 с нулем;
RSBLT r0, r0, #0 ; если LT (r0<0) – выполнить
; вычитание 0 - r0;
MOV pc, lr ; возврат из подпрограммы;
; итого – три 4-байтные команды,
; всего – 12 байт.
Тот же алгоритм, написанный с помощью Thumb:
CODE16 ; директива, указывающая
; использование 16-битного кода;
CMP r0, #0 ; сравнение r0 с нулем;
BGE return ; если GT (r0>0) – перейти на
; return;
NEG r0,r0 ; инверсия r0;
return MOV pc,lr ; возврат из подпрограммы;
; итого – четыре 2-байтные
; команды, всего – 8 байт.
Из этого простого примера видно, что хотя Thumb и требует большего числа команд по сравнению с кодом ARM, общий объем кода меньше. В данном примере код Thumb меньше на треть, а в более объемных процедурах выигрыш может достигать 40% и более. Thumb предназначен для использования в недорогих встраиваемых системах, так как эта технология позволяет получить максимальную производительность за невысокую цену – компактный код требует меньше памяти для хранения. В ядре ARM1156 появилась поддержка Thumb-2 – расширения Thumb, которое дополняет 16-разрядные команды Thumb несколькими 32-битными командами. Новой, ключевой особенностью системы команд Thumb-2 является более эффективная реализация компилятора языка с возможностью операций с битами и битовыми полями, аппаратным делением и более эффективной реализацией конструкций условий типа if/then. Thumb-2 позволяет создавать код намного быстрее, проще и эффективнее. Он обратносовместим с Thumb, т.е. код, написанный для старой модели процессора с использованием Thumb, будет без проблем работать на новых, поддерживающих Thumb-2.
Для получения компактного кода пришлось пожертвовать некоторыми возможностями. Так, для команд Thumb не все регистры процессора свободно доступны. Для сокращения длины слова из команд были удалены биты условий, возможность условного выполнения осталась только у команд переходов. Таким образом, команды Thumb стали своего рода "деградацией" возможностей процессора, сокращающей объем кода и упрощающей программирование.
Еще одним расширением ассемблера ARM стала технология, получившая название Jazelle. С ее помощью существенно ускоряется выполнение программ, написанных на Java. Байт-коды Java транслируются в команды ARM непосредственно в процессе выполнения.
Компания ARM представила и свой собственный набор команд для векторных вычислений – NEON, который является аналогом SSE в настольных процессорах.
Эволюция архитектур ARM. У разработок ARM существуют две параллельные системы нумерации. Одна из них, изложенная выше, основана на номерах версий архитектуры, а вторая – на обозначениях процессорных ядер (табл.2). Из-за вероятности появления некоторой путаницы, связанной с такой системой обозначения, стоит обратить внимание на эволюцию архитектуры ARM.
Ранние архитектуры поддерживали 26-битную адресацию. Версия ARMv3 была первой архитектурой с 32-разрядной адресацией, а в ARMv4 полностью отказались от устаревшей 26-битной адресации. В этой же версии была введена поддержка команд обработки 16-разрядных полуслов. Модификация ARMv4T была первым процессором с поддержкой системы команд Thumb.
Архитектура ARMv5 получила чуть более расширенную систему команд. Именно в этой архитектуре появились первые команды ARM, не требующие возможности условного исполнения. В разновидности ARMv5TE появилась группа инструкций Enhanced DSP, намного упрощающих реализацию алгоритмов цифровой обработки сигналов. Процессоры этой серии стали весьма популярными. Именно на основе этой архитектуры Intel разрабатывала процессоры Xscale.
Последняя модификация пятой архитектуры – ARMv5TEJ – поддерживала технологию Jazelle, предназначенную для упрощения реализации виртуальной машины Java. Это нововведение вместе с поддержкой команд DSP и компактного кода Thumb сделало серию ARMv5TEJ весьма удобной для использования в мобильных телефонах и микрокомпьютерах. Предпоследняя на сегодняшний день архитектура ARMv6 изначально не имела разновидностей и представляла собой улучшенную версию ARMv5TEJ. Была добавлена поддержка команд SIMD, упрощающих обработку мультимедиа, пересмотрена архитектура подсистемы памяти (ставшая намного более унифицированной: до ARMv6 очень многие важные решения отдавались "на откуп" производителям, из-за чего при переносе ОС с одного процессора на другой зачастую требовалось очень много доработок), обеспечен доступ к невыровненным данным и др. Появившаяся позже версия ARMv6T2 получила поддержку инструкций Thumb-2 – расширенный вариант Thumb. И, наконец, последняя, стремительно набирающая популярность версия ARMv7, известна под именем Cortex.
Cortex на все случаи жизни
С запуском серии Cortex компания ARM всерьез нацелилась одновременно на все сферы применения микропроцессоров. Было решено создать сразу несколько разновидностей процессоров-профилей, ориентируясь на области применения (рис.2).
Процессоры Cortex-A используются в мощных устройствах (например, смартфонах и нетбуках). Ядра Cortex-R по системам команд аналогичны процессорам Cortex-A, но предназначены в первую очередь для систем реального времени. Процессоры Cortex-M – это высокопроизводительные микроконтроллеры, которые предлагаются на замену существующим 8- и 16-битным микроконтроллерам. Особняком в этой серии стоит процессор Cortex-M1 – он не является "железным" чипом, а представляет собой IP-ядро для реализации на ПЛИС. О процессорах Cortex-R и Cortex-M подробней можно узнать, например в [2], нас же в первую очередь интересует архитектура ARMv7-А и созданные на ее основе процессоры Cortex-A (табл.3).
Ядро ARMv7 – первое ядро с суперскалярной архитектурой. Как и предыдущие версии ядер ARM, оно имеет 32-разрядную RISC-архитектуру с 16-ю регистрами, два конвейера – 13-уровневый для целочисленных вычислений и 10-уровневый NEON для смешанных 64/128-битных целочисленных и операций с плавающей точкой. ARMv7 также поддерживает Jazelle-RCT и Thumb2.
Процессоры Cortex-A оснащены устройством управления памятью (MMU), что позволяет использовать виртуальную память. Технология MPCore дает возможность объединять на одном кристалле до четырех ядер.
Противостояние ARM и Intel
Как было сказано выше, процессоры ARM завоевали абсолютное господство в области мобильной электроники (сотовые телефоны, смартфоны и утратившие сейчас популярность карманные компьютеры), в то время как в более мощном сегменте (нетбуки, ноутбуки, настольные компьютеры и т.д.) доминировала архитектура x86 альянса Intel/AMD. С появлением серии Cortex-A сфера влияния ARM начала расширяться. Новые мощные ARM начинают конкурировать с прочно обосновавшимися на рынке нетбуков процессорами Intel Atom по производительности и экономичности.
В начале прошлого года в интернет-блоге фирмы ARM появился короткий видеоролик, где сравнивалась работа двух компьютеров – ноутбука с процессором Intel Atom c тактовой частотой 1,6 МГц и демонстрационной платы с двухъядерным процессором Cortex-А9, работающим на частоте 500 МГц [3]. Тест был чисто визуальным, компьютеры выполняли обычную для нетбуков задачу – веб-серфинг. Оба компьютера показали сходную скорость загрузки и отображения сайтов, небольшое отставание платы с Cortex можно оправдать отсутствием у последней графического ядра – обработка графики выполнялась программно. Конечно, такой тест нельзя считать объективным, так как (помимо того, что устроители этого теста сами были заинтересованной стороной) новый двухъядерный процессор ARM сравнивался с одноядерным Atom N270, на замену которому предлагался более мощный двухъядерный N330. Скорее всего, этим видеороликом компания ARM решила продемонстрировать готовность перейти в наступление на рынок недорогих ноутбуков – территорию господства x86.
Это достаточно смелое заявление вызвало интерес со стороны независимых наблюдателей и специалистов. Вэн Смит, автор тестовых пакетов OpenSourceMark, miniBench и один из соавторов SiSoftware Sandra, провел тест производительности Atom и Cortex-A8 [4]. Тестировались машины на базе процессоров Atom N450 , Freescale i.MX515 (Cortex-A8), и, кроме этого, в тесте принимали участие не представляющие для нас в данный момент интереса процессоры VIA Nano L3050 и Athlon XP-M на ядре Barton. Поскольку за точку отсчета были приняты характеристики Cortex-A8 с тактовой частотой 800 МГц, рабочие частоты VIA Nano и Athlon были снижены до того же значения, а Atom – до 1000 МГц (более снизить частоту не удалось). Все тесты проводились на системах под управлением операционной системы Ubuntu 9.04 Linux.
По результатам тестов выяснилось, что Cortex-A8 показывает сравнимую с процессорами Intel Atom производительность в целочисленных вычислениях при значительно более низком энергопотреблении. Но тесты на вычисления с плавающей точкой Cortex ожидаемо провалил. Такие вычисления всегда были слабым местом процессоров ARM и мощности модулей NEON и VFP, которыми оснащен Cortex-A8, явно недостаточно для равного соперничества с конкурентами. Еще одно слабое место системы на Cortex-A8 – медленная память DDR2, и, как следствие, большое отставание в некоторых тестах. Итоги этих тестов ясны: несмотря на достаточно высокую вычислительную мощность, процессоры ARM не готовы работать наравне с x86 в настольных системах и ноутбуках. Областью применения ARM пока что остаются мобильные телефоны, смартфоны, нетбуки и планшеты, т.е. устройства, для которых долгое время автономной работы и габариты самого чипа важнее производительности (табл.4).
Но говорить о том, что любое устройство, использующее процессор ARM, заведомо слабее своего аналога на x86, нельзя. Производительность системы зависит не только от ядра, но и от периферийных устройств и интерфейсов. Компании, владеющие лицензией ARM, производят так называемые системы на кристалле (system on chip, SOC), комбинируя ядра ARM с различными блоками собственной разработки. Одна из таких систем компании Nvidia произвела революцию на рынке мобильных устройств.
Nvidia Tegra – первая из лучших
Компания Nvidia – известный производитель графических процессоров и владелец лицензии ARM – в феврале 2008 года представила свою разработку – систему на кристалле под названием Tegra. Демонстрация возможностей процессора была весьма эффектной – тестовый образец устройства размером с коммуникатор без проблем и искажений воспроизводил видеозаписи высокой четкости 720p на 52-дюймовом экране. При этом устройство было настолько экономичным, что могло автономно работать в течение 10 ч при воспроизведении HD-видео и до 100 ч – при проигрывании файлов MP3. Основой системы было ядро ARM11MPCore, работающее на частоте 600 МГц. Tegra имела встроенное графическое ядро и сверхнизкое энергопотребление – всего 100 мВ при воспроизведении HD-видео.
Семейство Tegra состояло из четырех моделей, ориентированных на разные сегменты мобильного рынка. Модели Tegra APX 2500 и APX 2600 предназначались для смартфонов, Tegra 600 – для GPS-навигаторов и автокомпьютеров, а самая мощная система – Tegra 650 – для нетбуков и подобных им устройств. Встроенный мультимедиапроцессор поддерживает основные видео- и аудиоформаты и обеспечивает аппаратное кодирование и декодирование видео 720p, H.264. В SoC Tegra 650 также поддерживается декодирование 1080p H.264. Графическое ядро поддерживает шейдеры и прочие возможности графики, совместимые с OpenGL ES 2.0 и Direct3D Mobile. Изначально эта разработка не получила широкого распространения из-за просчетов Nvidia в маркетинговой политике. На базе Tegra было выпущено только два устройства – медиаплейеры Microsoft Zune и Samsung YP-M1, в обоих устройствах использовался чип APX2600. Ограниченные возможности карманных медиапроигрывателей не дали полностью раскрыть потенциал Tegra.
Но следующая разработка Nvidia – Tegra 250 (Tegra 2), представленная на выставке Consumer Electronics Show (CES) 7 января 2010 года, имела гораздо больший успех и сделала компанию одним из ведущих производителей систем на кристалле. Это была первая система на кристалле с использованием двухъядерного процессора ARM Cortex-A9. SoC Tegra 250 состоит из восьми базовых блоков (рис.3). Универсальные вычисления выполняет двухъядерный процессор Cortex-A9, работающий на частоте до 1,2 ГГц. Мультимедиа-процессор позволяет кодировать и декодировать видео в формате H.264 вплоть до разрешения 1080p при высоких битрейтах и небольшом энергопотреблении. Ядро обработки изображений поддерживает обработку изображений с сенсоров разрешением до 12 Мпикселей и обеспечивает типичные для фотокамер функции – афтофокус, автоматический баланс белого и т.д. Графическое ядро GeForce аналогично тому, что использовалось в первом поколении Tegra, но имеет в 2–3 раза увеличенную производительность за счет повышения частоты и поддержки памяти LPDDR2. Отдельное ядро ARM7 управляет потоками данных, ресурсами системы и энергопотреблением. Для достижения максимальной экономии энергии отключаются неиспользуемые в данный момент блоки, что позволяет добиться очень низкого потребления (около 1 Вт при полной нагрузке), а также сильно снизить тепловыделение.
Осознав перспективность разработок собственных систем на кристалле, Nvidia сделала работы над Tegra одним из приоритетных направлений своей деятельности. Сегодня платформу Tegra 250 используют многие известные фирмы – производители мобильной электроники (LG, Samsung, Motorola, ASUS, Acer, Toshiba и др.). Однако на рынке систем на кристалле фирма Nvidia – новичок, хотя и очень успешный. Включившись в конкурентную борьбу, компании, производящие мобильные SOC на основе ядер ARM, тоже начали разрабатывать двухъядерные системы на кристалле с низким энергопотреблением ( табл.5).
Qualcomm совершенствует платформу Snapdragon, делая упор (в отличие от Tegra) не на мультимедиа, а на коммуникационные возможности. Процессоры, используемые в SOC Snapdragon, строго говоря, не являются ARM-процессорами. Qualcomm разработал собственное ядро Scorpion, взяв за основу архитектуру Cortex-A8. Платформы Snapdragon имеют встроенные модули GSM/3G или CDMA, WiFi, Bluetooth, GPS, а также поддержку цифрового телевидения. Компания Samsung, производитель мобильного чипсета Hummingbird, представила новую платформу на основе двухъядерного процессора Cortex-A9, получившую название Exynos. Apple не разглашает подробностей архитектуры своих процессоров, однако известно об их сходстве с процессорами Samsung [6]. Texas Instruments также выпустила SOC с двухъядерным Cortex-A9 – OMAP4430. Подробное описание и сравнение этих систем выходит за рамки данной статьи, поэтому отметим только, что все эти компании готовы представить вполне конкурентоспособные продукты и определить явного победителя или проигравшего пока невозможно.
Победа любой ценой?
В феврале этого года на Mobile World Congress в Барселоне было объявлено о появлении третьего поколения Tegra – системы под кодовым названием Kal-El. Известно, что система Tegra 3 будет основана на четырех ядрах ARM Cortex-A9 с частотой 1,5 ГГц. В отличие от Tegra 2 каждое процессорное ядро будет иметь свой модуль NEON для вычислений с плавающей точкой. Графическое ядро этой системы будет иметь уже 12 шейдерных ядер (против восьми у Tegra 2). Будет поддерживаться вывод изображения с разрешением до 2560×1600, в том числе в стереоскопическом режиме. Также имеется возможность декодирования видеоданных формата H.264 High Profile в разрешении 1920×1080.
Выход чипов Kal-El намечен на конец этого года. Nvidia заявила, что новая платформа будет иметь приблизительно в два раза большую вычислительную мощность и в три раза большую производительность при обработке графики и уже опережает Intel Core Duo [7]. По опубликованным результатам теста инженерный образец системы Kal-El опережает 2-ГГц процессор T7200 Core Duo – 11352 очка теста для встроенных систем Coremark против 10136. Но, похоже, в пылу конкурентной борьбы компания Nvidia решила победить, несмотря ни на что, и забыла о чистоте эксперимента. Версии компилятора GCC, которые использовались при проведении теста, отличались – 3.4.6 для T7200 и 4.4.4 для Kal-El, а сама компиляция выполнялась с разными параметрами оптимизации – конечно, не в пользу T7200 [8]. Проведенное автором этой публикации тестирование процессора T7200 показало, что при использовании компилятора GCC 4.4.4 и оптимизированной компиляции (иными словами, при равных с Kal-El условиях) T7200 показывает в полтора раза большую производительность. В итоге, учитывая приблизительно 10%-ный проигрыш в первом тесте, T7200 обгоняет Kal-El на ~40%.
Однако не исключено, что к моменту своего выхода система Kal-El уже устареет. Фирма ARM анонсировала процессор Cortex-A15, который будет работать на частотах до 2,5 ГГц и поддерживать до 1 Tб оперативной памяти. По информации компании ARM, этот процессор позволит увеличить производительность современных мобильных устройств более чем в пять раз. Основное преимущество A15 – новый уровень вычислительных возможностей при сохранении низкого энергопотребления. Мощность этого многоядерного процессора (ARM обещает возможность комбинирования восьми и большего числа ядер) позволяет использовать его даже в серверном сегменте – т.е. там, где долгое время доминировали процессоры Intel-AMD.
Компания ARM подчеркивает, что новый мощный процессор не рассматривается как замена x86 в настольных компьютерах, основная сфера его применения – мобильные устройства, такие как смартфоны и планшетные компьютеры. Не исключено, что такие устройства с мощными процессорами в обозримом будущем просто вытеснят громоздкие настольные системы [9].
Лицензию на Cortex-A15 уже приобрели несколько компаний. В своем пресс-релизе Texas Instruments представила 28-нм SOC нового поколения OMAP5. За основную вычислительную мощность в этой системе отвечает двухъядерный Cortex-A15, а задачи распределения ресурсов и низкоуровнего управления решают два ядра Cortex-M8. Как и в остальных аналогичных системах отдельные вычислительные модули выполняют обработку графики, изображений с камеры, мультимедиа и т.д. Разработчик заявляет о трехкратном увеличении производительности, а также о снижении энергопотребления на 60% относительно предыдущего поколения OMAP. Nvidia также планирует использовать процессорные ядра Cortex-A15 в своих SOC Tegra следующего поколения. Появление чипов на основе Cortex-A15 ожидается в 2012–2013 годах.
Новые перспективы ARM
Подводя итог, можно сказать, что сегодня основной курс ARM – это именно мобильные устройства. Учитывая их стремительно растущую популярность, можно предсказать абсолютную монополию процессоров ARM и систем на их базе в мобильных устройствах, и, как следствие, некоторое уменьшение в обозримом будущем интереса к процессорам x86 (рис.4).
В тех областях применения микропроцессоров, где важно не малое энергопотребление, а производительность, и/или не требуется работа с мультимедиа (например, серверы и мощные вычислительные комплексы), альянс Intel/AMD пока не имеет серьезных конкурентов. По заявлениям представителей авторитетных в этой области фирм (Dell, Google, Intel), на адаптацию имеющегося программного обеспечения для систем на базе ARM требуются очень большие средства [11]. Самые совершенные на сегодняшний день процессоры ARM не поддерживают 64-битные инструкции, что затрудняет работу с большими объемами памяти. Низкое же энергопотребление процессоров ARM не может компенсировать малую по сравнению с x86 вычислительную мощность. Пользователи домашних и рабочих компьютеров тоже вряд ли пожелают покинуть "обжитую" платформу x86 и лишиться всего многообразия прикладных программ и игр, которые были выпущены для этой системы.
Но, судя по последним новостям от ведущих производителей процессоров и операционных систем, эта ситуация может кардинально измениться в самом ближайшем времени. На выставке CES 2011 Nvidia представила новую разработку под названием Project Denver – высокопроизводительную систему на собственном 64-битном восьмиядерном процессоре, основанном на ARM с частотой 2–2,5 ГГц. Первые образцы Project Denver должны появиться в декабре этого года. Разработчик пока не сообщает подробностей об этой системе, но ясно, что ее применение не ограничивается мобильными устройствами, и компания Nvidia всерьез решила начать покорение занятых Intel/AMD сегментов рынка. Выйти в мир "больших" компьютеров процессорам ARM поможет компания Microsoft, которая вернула поддержку ARM в ОС Windows 8 (напомним, что седьмая версия Windows не поддерживала ARM) [12].
* * *
Ни одна микропроцессорная архитектура не развивалась так динамично, как ARM. В основном это стало возможным благодаря удачной тактике ведения бизнеса компанией. Лицензирование ядер ARM позволило объединить усилия лучших разработчиков и производителей электроники по всему миру, и с каждой их разработкой для ARM открываются новые пути к совершенству.
Использованные источники
http://arm.com/products/processors/index.php
Козлов-Кононов Д. Процессорные ядра семейства Cortex. Сочетание высокой производительности и низкого энергопотребления. – Электроника: НТБ, 2010, №8, c.16–24.
http://www.youtube.com/watch?v=W4W6lVQl3QA
http://www.brightsideofnews.com/news/2011/5/19/the-coming-war-arm-versus-x86.aspx
Katie Roberts-Hoffman, Pawankumar Hedge. ARM Cortex-A8 vs. Intel Atom: Architectural and Benchmark Comparisons – University of Texas at Dallas, EE6304 Computer Architecture Course Project, Fall 2009.
http://arstechnica.com/apple/news/2010/06/an-even-closer-look-at-apples-a4-shows-evolutionary-design.ars
http://www.engadget.com/2011/02/15/nvidia-announces-quad-core-kal-el-soc-promises-it-in-tablets-by/
http://www.ilsistemista.net/index.php/hardware-analysis/10-published-kal-el-performance-is-nvidia-soc-truly-faster-than-a-core2-.html
http://www.tgdaily.com/hardware-features/55449-arm-targets-x86-architecture-with-cortex-a15
http://www.theregister.co.uk/2011/03/23/nvidia_arm_strategy
http://www.nstor.ru/ru/news/company/2011-03-11/arm.html
http://arstechnica.com/microsoft/news/2011/01/windows-8-to-come-in-arm-soc-flavors.ars
В 1983 году компания Acorn – один из ведущих в то время производителей микрокомпьютеров на базе процессоров MOS Tech 6502 – начала разработку нового микропроцессора, который смог бы составить конкуренцию машинам IBM PC на бизнес-рынке. На основе архитектуры 6502 был создан прототип RISC-процессора, получивший название ARM (Acorn RISC Machine).
В 1986 году появился первый серийный 32-разрядный процессор ARM2. Он имел всего 30000 транзисторов (для сравнения, в процессоре Motorola 68000 было 70000 транзисторов), в нем не было кэша и микрокода. Возможно, это был самый простой полезный 32-разрядный процессор в мире. Но, несмотря на простоту (а может, и благодаря ей), ARM2 на деле показал преимущества архитектуры RISC. Он легко обходил по производительности своего соперника Intel 80286, имея, к тому же, более низкое энергопотребление. У следующей модели ARM3 был 4-килобайтный кэш и более высокая тактовая частота.
На волне возрастающего интереса к экономичным и производительным процессорам ARM фирмы Acorn, VLSI Technologies и Apple Computers организовали компанию Advanced RISC Machines (ARM) Ltd. В 1993 году был выпущен процессор ARM610, который использовался в первом планшетном портативном компьютере в мире – Apple Newton.
В отличие от своего давнего конкурента Intel, компания ARM, не имея возможности массово производить чипы, активно продавала лицензии на ядро ARM. Простота архитектуры не требовала для производства дорогого современного оборудования. Производитель мог по своему усмотрению комбинировать ядро ARM с дополнительными периферийными блоками, получая в итоге чип с оптимальной для какого-либо конкретного устройства функциональностью.
Благодаря такой политике и преимуществам архитектуры ARM эти процессоры начали стремительно завоевывать популярность у производителей различных портативных электронных устройств. С 1994 года были приобретены 170 лицензий на процессоры семейства ARM7, а всего произведено более 20 биллионов (!) чипов [1]. Процессоры ARM7TDMI используются в таких популярных устройствах, как аудиоплейеры iPod и iRiver, игровые консоли Nintendo DS и GameBoy Advance, мобильные телефоны Nokia и т.д. Его улучшенная версия – ARM9TDMI – использовалась, в частности, в мобильных телефонах Philips, HTC, LG, Siemens, Sony Ericsson, а также на основе этого ядра был создан процессор для цифровых фотокамер Canon Digic.
Еще одна популярная ветвь семейства ARM – серия StrongARM, которая была создана в сотрудничестве с компанией DEC. На базе этого процессора компанией Intel, которая впоследствии получила права на архитектуру StrongARM, был разработан более производительный процессор XScale. Они устанавливались во многие популярные КПК – Sharp Zaurus, Sony Clie, Palm и смартфоны Blackberry.
Последний из "номерных" процессоров ARM11 имел поддержку аппаратного декодирования MPEG4 и еще меньшее тепловыделение, чем его преемники. Использовался он также во многих получивших самое массовое распространение смартфонах – Apple iPhone 2G/3G, многих моделях HTC, LG Optimus One и пр.
Особенности процессоров ARM
Одна из важных отличительных черт ядер ARM – возможность условного выполнения практически любой команды. Можно задать исполнение команды в зависимости от результата предыдущей операции по условию, которое определяется состоянием четырех флагов – N (флаг отрицательного результата), Z (флаг нулевого результата), C (флаг переноса) и V (переполнение) (табл.1). Если условие не выполняется, команда интерпретируется как NOP – отсутствие операции. Это позволяет реализовывать достаточно сложные алгоритмы без громоздких ветвлений.
Например, алгоритм Евклида для нахождения наибольшего общего делителя методом вычитаний, выполненный на ассемблере ARM, выглядит так:
loop CMP Ri, Rj ; проверка условий NE (i != j),
; GT (i > j),
; и LT (i < j);
SUBGT Ri, Ri, Rj ; если GT, выполняется i = i-j;
SUBLT Rj, Rj, Ri ; если LT – j = j-i;
BNE loop ; если NE – переход на
; метку loop.
Если не выполняются условия GT и LT, то не выполняется ни один оператор SUB. Условные инструкции позволяют создавать достаточно компактные и легко читаемые программы, обходясь без многочисленных ветвлений.
Еще одна особенность ARM – совмещать операции сдвига с арифметическими и логическими действиями и командами перемещения данных между регистрами. Например, инструкция ARM
ADD Ra, Ra, Rj, LSL #2
выполняет сложение двух чисел и сдвиг результата на два разряда влево.
С эволюцией архитектур ARM также развивалась система команд (рис.1). Происходило это двумя путями одновременно. В основной набор команд ARM добавлялись новые инструкции – Enhanced DSP, SIMD, а также появилась новая, параллельная основной система команд, получившая название Thumb (игра слов: thumb – "большой палец", "arm" – рука).
Система команд Thumb. Разработчики ARM предложили интересное решение, позволяющее уменьшить объем программного кода (и, следовательно, более эффективно использовать память) и упростить совместимость ядра с 8- и 16-битными периферийными устройствами, сохранив в то же время мощность 32-битного процессора.
Система команд Thumb включает 36 16-битных команд, производных от некоторых команд ARM. В процессе выполнения кода команды Thumb "разворачиваются" в команды ARM и выполняются обычным образом. Такая своего рода аппаратная компрессия позволяет сократить объем кода на 30%. Вместе с поддержкой 16-битных команд появилась и поддержка 16-битных форматов данных. Используя Thumb, можно, например, добиться большего быстродействия при относительно медленной недорогой 32-разрядной памяти, считывая одновременно две команды Thumb в буфер. При этом в два раза уменьшается время ожидания чтения из памяти, так как одна из команд выполняется из буфера. Также можно комбинировать различные типы памяти: быстрая 32-битная внутренняя память – для критичных ко времени выполнения и/или производительности (например, обработка прерываний) кодов ARM и 8- или 16-битная внешняя – для хранения констант и/или команд Thumb. Переключение режимов Thumb/ARM выполняется "на лету", с помощью команды BX, которая переключает соответствующий бит в регистре состояния программы PSR.
Экономичность кода Thumb можно показать на простейшем примере – подпрограммы, возвращающей модуль числа x. На ассемблере ARM этот алгоритм можно написать следующим образом:
CMP r0, #0 ; сравнение r0 с нулем;
RSBLT r0, r0, #0 ; если LT (r0<0) – выполнить
; вычитание 0 - r0;
MOV pc, lr ; возврат из подпрограммы;
; итого – три 4-байтные команды,
; всего – 12 байт.
Тот же алгоритм, написанный с помощью Thumb:
CODE16 ; директива, указывающая
; использование 16-битного кода;
CMP r0, #0 ; сравнение r0 с нулем;
BGE return ; если GT (r0>0) – перейти на
; return;
NEG r0,r0 ; инверсия r0;
return MOV pc,lr ; возврат из подпрограммы;
; итого – четыре 2-байтные
; команды, всего – 8 байт.
Из этого простого примера видно, что хотя Thumb и требует большего числа команд по сравнению с кодом ARM, общий объем кода меньше. В данном примере код Thumb меньше на треть, а в более объемных процедурах выигрыш может достигать 40% и более. Thumb предназначен для использования в недорогих встраиваемых системах, так как эта технология позволяет получить максимальную производительность за невысокую цену – компактный код требует меньше памяти для хранения. В ядре ARM1156 появилась поддержка Thumb-2 – расширения Thumb, которое дополняет 16-разрядные команды Thumb несколькими 32-битными командами. Новой, ключевой особенностью системы команд Thumb-2 является более эффективная реализация компилятора языка с возможностью операций с битами и битовыми полями, аппаратным делением и более эффективной реализацией конструкций условий типа if/then. Thumb-2 позволяет создавать код намного быстрее, проще и эффективнее. Он обратносовместим с Thumb, т.е. код, написанный для старой модели процессора с использованием Thumb, будет без проблем работать на новых, поддерживающих Thumb-2.
Для получения компактного кода пришлось пожертвовать некоторыми возможностями. Так, для команд Thumb не все регистры процессора свободно доступны. Для сокращения длины слова из команд были удалены биты условий, возможность условного выполнения осталась только у команд переходов. Таким образом, команды Thumb стали своего рода "деградацией" возможностей процессора, сокращающей объем кода и упрощающей программирование.
Еще одним расширением ассемблера ARM стала технология, получившая название Jazelle. С ее помощью существенно ускоряется выполнение программ, написанных на Java. Байт-коды Java транслируются в команды ARM непосредственно в процессе выполнения.
Компания ARM представила и свой собственный набор команд для векторных вычислений – NEON, который является аналогом SSE в настольных процессорах.
Эволюция архитектур ARM. У разработок ARM существуют две параллельные системы нумерации. Одна из них, изложенная выше, основана на номерах версий архитектуры, а вторая – на обозначениях процессорных ядер (табл.2). Из-за вероятности появления некоторой путаницы, связанной с такой системой обозначения, стоит обратить внимание на эволюцию архитектуры ARM.
Ранние архитектуры поддерживали 26-битную адресацию. Версия ARMv3 была первой архитектурой с 32-разрядной адресацией, а в ARMv4 полностью отказались от устаревшей 26-битной адресации. В этой же версии была введена поддержка команд обработки 16-разрядных полуслов. Модификация ARMv4T была первым процессором с поддержкой системы команд Thumb.
Архитектура ARMv5 получила чуть более расширенную систему команд. Именно в этой архитектуре появились первые команды ARM, не требующие возможности условного исполнения. В разновидности ARMv5TE появилась группа инструкций Enhanced DSP, намного упрощающих реализацию алгоритмов цифровой обработки сигналов. Процессоры этой серии стали весьма популярными. Именно на основе этой архитектуры Intel разрабатывала процессоры Xscale.
Последняя модификация пятой архитектуры – ARMv5TEJ – поддерживала технологию Jazelle, предназначенную для упрощения реализации виртуальной машины Java. Это нововведение вместе с поддержкой команд DSP и компактного кода Thumb сделало серию ARMv5TEJ весьма удобной для использования в мобильных телефонах и микрокомпьютерах. Предпоследняя на сегодняшний день архитектура ARMv6 изначально не имела разновидностей и представляла собой улучшенную версию ARMv5TEJ. Была добавлена поддержка команд SIMD, упрощающих обработку мультимедиа, пересмотрена архитектура подсистемы памяти (ставшая намного более унифицированной: до ARMv6 очень многие важные решения отдавались "на откуп" производителям, из-за чего при переносе ОС с одного процессора на другой зачастую требовалось очень много доработок), обеспечен доступ к невыровненным данным и др. Появившаяся позже версия ARMv6T2 получила поддержку инструкций Thumb-2 – расширенный вариант Thumb. И, наконец, последняя, стремительно набирающая популярность версия ARMv7, известна под именем Cortex.
Cortex на все случаи жизни
С запуском серии Cortex компания ARM всерьез нацелилась одновременно на все сферы применения микропроцессоров. Было решено создать сразу несколько разновидностей процессоров-профилей, ориентируясь на области применения (рис.2).
Процессоры Cortex-A используются в мощных устройствах (например, смартфонах и нетбуках). Ядра Cortex-R по системам команд аналогичны процессорам Cortex-A, но предназначены в первую очередь для систем реального времени. Процессоры Cortex-M – это высокопроизводительные микроконтроллеры, которые предлагаются на замену существующим 8- и 16-битным микроконтроллерам. Особняком в этой серии стоит процессор Cortex-M1 – он не является "железным" чипом, а представляет собой IP-ядро для реализации на ПЛИС. О процессорах Cortex-R и Cortex-M подробней можно узнать, например в [2], нас же в первую очередь интересует архитектура ARMv7-А и созданные на ее основе процессоры Cortex-A (табл.3).
Ядро ARMv7 – первое ядро с суперскалярной архитектурой. Как и предыдущие версии ядер ARM, оно имеет 32-разрядную RISC-архитектуру с 16-ю регистрами, два конвейера – 13-уровневый для целочисленных вычислений и 10-уровневый NEON для смешанных 64/128-битных целочисленных и операций с плавающей точкой. ARMv7 также поддерживает Jazelle-RCT и Thumb2.
Процессоры Cortex-A оснащены устройством управления памятью (MMU), что позволяет использовать виртуальную память. Технология MPCore дает возможность объединять на одном кристалле до четырех ядер.
Противостояние ARM и Intel
Как было сказано выше, процессоры ARM завоевали абсолютное господство в области мобильной электроники (сотовые телефоны, смартфоны и утратившие сейчас популярность карманные компьютеры), в то время как в более мощном сегменте (нетбуки, ноутбуки, настольные компьютеры и т.д.) доминировала архитектура x86 альянса Intel/AMD. С появлением серии Cortex-A сфера влияния ARM начала расширяться. Новые мощные ARM начинают конкурировать с прочно обосновавшимися на рынке нетбуков процессорами Intel Atom по производительности и экономичности.
В начале прошлого года в интернет-блоге фирмы ARM появился короткий видеоролик, где сравнивалась работа двух компьютеров – ноутбука с процессором Intel Atom c тактовой частотой 1,6 МГц и демонстрационной платы с двухъядерным процессором Cortex-А9, работающим на частоте 500 МГц [3]. Тест был чисто визуальным, компьютеры выполняли обычную для нетбуков задачу – веб-серфинг. Оба компьютера показали сходную скорость загрузки и отображения сайтов, небольшое отставание платы с Cortex можно оправдать отсутствием у последней графического ядра – обработка графики выполнялась программно. Конечно, такой тест нельзя считать объективным, так как (помимо того, что устроители этого теста сами были заинтересованной стороной) новый двухъядерный процессор ARM сравнивался с одноядерным Atom N270, на замену которому предлагался более мощный двухъядерный N330. Скорее всего, этим видеороликом компания ARM решила продемонстрировать готовность перейти в наступление на рынок недорогих ноутбуков – территорию господства x86.
Это достаточно смелое заявление вызвало интерес со стороны независимых наблюдателей и специалистов. Вэн Смит, автор тестовых пакетов OpenSourceMark, miniBench и один из соавторов SiSoftware Sandra, провел тест производительности Atom и Cortex-A8 [4]. Тестировались машины на базе процессоров Atom N450 , Freescale i.MX515 (Cortex-A8), и, кроме этого, в тесте принимали участие не представляющие для нас в данный момент интереса процессоры VIA Nano L3050 и Athlon XP-M на ядре Barton. Поскольку за точку отсчета были приняты характеристики Cortex-A8 с тактовой частотой 800 МГц, рабочие частоты VIA Nano и Athlon были снижены до того же значения, а Atom – до 1000 МГц (более снизить частоту не удалось). Все тесты проводились на системах под управлением операционной системы Ubuntu 9.04 Linux.
По результатам тестов выяснилось, что Cortex-A8 показывает сравнимую с процессорами Intel Atom производительность в целочисленных вычислениях при значительно более низком энергопотреблении. Но тесты на вычисления с плавающей точкой Cortex ожидаемо провалил. Такие вычисления всегда были слабым местом процессоров ARM и мощности модулей NEON и VFP, которыми оснащен Cortex-A8, явно недостаточно для равного соперничества с конкурентами. Еще одно слабое место системы на Cortex-A8 – медленная память DDR2, и, как следствие, большое отставание в некоторых тестах. Итоги этих тестов ясны: несмотря на достаточно высокую вычислительную мощность, процессоры ARM не готовы работать наравне с x86 в настольных системах и ноутбуках. Областью применения ARM пока что остаются мобильные телефоны, смартфоны, нетбуки и планшеты, т.е. устройства, для которых долгое время автономной работы и габариты самого чипа важнее производительности (табл.4).
Но говорить о том, что любое устройство, использующее процессор ARM, заведомо слабее своего аналога на x86, нельзя. Производительность системы зависит не только от ядра, но и от периферийных устройств и интерфейсов. Компании, владеющие лицензией ARM, производят так называемые системы на кристалле (system on chip, SOC), комбинируя ядра ARM с различными блоками собственной разработки. Одна из таких систем компании Nvidia произвела революцию на рынке мобильных устройств.
Nvidia Tegra – первая из лучших
Компания Nvidia – известный производитель графических процессоров и владелец лицензии ARM – в феврале 2008 года представила свою разработку – систему на кристалле под названием Tegra. Демонстрация возможностей процессора была весьма эффектной – тестовый образец устройства размером с коммуникатор без проблем и искажений воспроизводил видеозаписи высокой четкости 720p на 52-дюймовом экране. При этом устройство было настолько экономичным, что могло автономно работать в течение 10 ч при воспроизведении HD-видео и до 100 ч – при проигрывании файлов MP3. Основой системы было ядро ARM11MPCore, работающее на частоте 600 МГц. Tegra имела встроенное графическое ядро и сверхнизкое энергопотребление – всего 100 мВ при воспроизведении HD-видео.
Семейство Tegra состояло из четырех моделей, ориентированных на разные сегменты мобильного рынка. Модели Tegra APX 2500 и APX 2600 предназначались для смартфонов, Tegra 600 – для GPS-навигаторов и автокомпьютеров, а самая мощная система – Tegra 650 – для нетбуков и подобных им устройств. Встроенный мультимедиапроцессор поддерживает основные видео- и аудиоформаты и обеспечивает аппаратное кодирование и декодирование видео 720p, H.264. В SoC Tegra 650 также поддерживается декодирование 1080p H.264. Графическое ядро поддерживает шейдеры и прочие возможности графики, совместимые с OpenGL ES 2.0 и Direct3D Mobile. Изначально эта разработка не получила широкого распространения из-за просчетов Nvidia в маркетинговой политике. На базе Tegra было выпущено только два устройства – медиаплейеры Microsoft Zune и Samsung YP-M1, в обоих устройствах использовался чип APX2600. Ограниченные возможности карманных медиапроигрывателей не дали полностью раскрыть потенциал Tegra.
Но следующая разработка Nvidia – Tegra 250 (Tegra 2), представленная на выставке Consumer Electronics Show (CES) 7 января 2010 года, имела гораздо больший успех и сделала компанию одним из ведущих производителей систем на кристалле. Это была первая система на кристалле с использованием двухъядерного процессора ARM Cortex-A9. SoC Tegra 250 состоит из восьми базовых блоков (рис.3). Универсальные вычисления выполняет двухъядерный процессор Cortex-A9, работающий на частоте до 1,2 ГГц. Мультимедиа-процессор позволяет кодировать и декодировать видео в формате H.264 вплоть до разрешения 1080p при высоких битрейтах и небольшом энергопотреблении. Ядро обработки изображений поддерживает обработку изображений с сенсоров разрешением до 12 Мпикселей и обеспечивает типичные для фотокамер функции – афтофокус, автоматический баланс белого и т.д. Графическое ядро GeForce аналогично тому, что использовалось в первом поколении Tegra, но имеет в 2–3 раза увеличенную производительность за счет повышения частоты и поддержки памяти LPDDR2. Отдельное ядро ARM7 управляет потоками данных, ресурсами системы и энергопотреблением. Для достижения максимальной экономии энергии отключаются неиспользуемые в данный момент блоки, что позволяет добиться очень низкого потребления (около 1 Вт при полной нагрузке), а также сильно снизить тепловыделение.
Осознав перспективность разработок собственных систем на кристалле, Nvidia сделала работы над Tegra одним из приоритетных направлений своей деятельности. Сегодня платформу Tegra 250 используют многие известные фирмы – производители мобильной электроники (LG, Samsung, Motorola, ASUS, Acer, Toshiba и др.). Однако на рынке систем на кристалле фирма Nvidia – новичок, хотя и очень успешный. Включившись в конкурентную борьбу, компании, производящие мобильные SOC на основе ядер ARM, тоже начали разрабатывать двухъядерные системы на кристалле с низким энергопотреблением ( табл.5).
Qualcomm совершенствует платформу Snapdragon, делая упор (в отличие от Tegra) не на мультимедиа, а на коммуникационные возможности. Процессоры, используемые в SOC Snapdragon, строго говоря, не являются ARM-процессорами. Qualcomm разработал собственное ядро Scorpion, взяв за основу архитектуру Cortex-A8. Платформы Snapdragon имеют встроенные модули GSM/3G или CDMA, WiFi, Bluetooth, GPS, а также поддержку цифрового телевидения. Компания Samsung, производитель мобильного чипсета Hummingbird, представила новую платформу на основе двухъядерного процессора Cortex-A9, получившую название Exynos. Apple не разглашает подробностей архитектуры своих процессоров, однако известно об их сходстве с процессорами Samsung [6]. Texas Instruments также выпустила SOC с двухъядерным Cortex-A9 – OMAP4430. Подробное описание и сравнение этих систем выходит за рамки данной статьи, поэтому отметим только, что все эти компании готовы представить вполне конкурентоспособные продукты и определить явного победителя или проигравшего пока невозможно.
Победа любой ценой?
В феврале этого года на Mobile World Congress в Барселоне было объявлено о появлении третьего поколения Tegra – системы под кодовым названием Kal-El. Известно, что система Tegra 3 будет основана на четырех ядрах ARM Cortex-A9 с частотой 1,5 ГГц. В отличие от Tegra 2 каждое процессорное ядро будет иметь свой модуль NEON для вычислений с плавающей точкой. Графическое ядро этой системы будет иметь уже 12 шейдерных ядер (против восьми у Tegra 2). Будет поддерживаться вывод изображения с разрешением до 2560×1600, в том числе в стереоскопическом режиме. Также имеется возможность декодирования видеоданных формата H.264 High Profile в разрешении 1920×1080.
Выход чипов Kal-El намечен на конец этого года. Nvidia заявила, что новая платформа будет иметь приблизительно в два раза большую вычислительную мощность и в три раза большую производительность при обработке графики и уже опережает Intel Core Duo [7]. По опубликованным результатам теста инженерный образец системы Kal-El опережает 2-ГГц процессор T7200 Core Duo – 11352 очка теста для встроенных систем Coremark против 10136. Но, похоже, в пылу конкурентной борьбы компания Nvidia решила победить, несмотря ни на что, и забыла о чистоте эксперимента. Версии компилятора GCC, которые использовались при проведении теста, отличались – 3.4.6 для T7200 и 4.4.4 для Kal-El, а сама компиляция выполнялась с разными параметрами оптимизации – конечно, не в пользу T7200 [8]. Проведенное автором этой публикации тестирование процессора T7200 показало, что при использовании компилятора GCC 4.4.4 и оптимизированной компиляции (иными словами, при равных с Kal-El условиях) T7200 показывает в полтора раза большую производительность. В итоге, учитывая приблизительно 10%-ный проигрыш в первом тесте, T7200 обгоняет Kal-El на ~40%.
Однако не исключено, что к моменту своего выхода система Kal-El уже устареет. Фирма ARM анонсировала процессор Cortex-A15, который будет работать на частотах до 2,5 ГГц и поддерживать до 1 Tб оперативной памяти. По информации компании ARM, этот процессор позволит увеличить производительность современных мобильных устройств более чем в пять раз. Основное преимущество A15 – новый уровень вычислительных возможностей при сохранении низкого энергопотребления. Мощность этого многоядерного процессора (ARM обещает возможность комбинирования восьми и большего числа ядер) позволяет использовать его даже в серверном сегменте – т.е. там, где долгое время доминировали процессоры Intel-AMD.
Компания ARM подчеркивает, что новый мощный процессор не рассматривается как замена x86 в настольных компьютерах, основная сфера его применения – мобильные устройства, такие как смартфоны и планшетные компьютеры. Не исключено, что такие устройства с мощными процессорами в обозримом будущем просто вытеснят громоздкие настольные системы [9].
Лицензию на Cortex-A15 уже приобрели несколько компаний. В своем пресс-релизе Texas Instruments представила 28-нм SOC нового поколения OMAP5. За основную вычислительную мощность в этой системе отвечает двухъядерный Cortex-A15, а задачи распределения ресурсов и низкоуровнего управления решают два ядра Cortex-M8. Как и в остальных аналогичных системах отдельные вычислительные модули выполняют обработку графики, изображений с камеры, мультимедиа и т.д. Разработчик заявляет о трехкратном увеличении производительности, а также о снижении энергопотребления на 60% относительно предыдущего поколения OMAP. Nvidia также планирует использовать процессорные ядра Cortex-A15 в своих SOC Tegra следующего поколения. Появление чипов на основе Cortex-A15 ожидается в 2012–2013 годах.
Новые перспективы ARM
Подводя итог, можно сказать, что сегодня основной курс ARM – это именно мобильные устройства. Учитывая их стремительно растущую популярность, можно предсказать абсолютную монополию процессоров ARM и систем на их базе в мобильных устройствах, и, как следствие, некоторое уменьшение в обозримом будущем интереса к процессорам x86 (рис.4).
В тех областях применения микропроцессоров, где важно не малое энергопотребление, а производительность, и/или не требуется работа с мультимедиа (например, серверы и мощные вычислительные комплексы), альянс Intel/AMD пока не имеет серьезных конкурентов. По заявлениям представителей авторитетных в этой области фирм (Dell, Google, Intel), на адаптацию имеющегося программного обеспечения для систем на базе ARM требуются очень большие средства [11]. Самые совершенные на сегодняшний день процессоры ARM не поддерживают 64-битные инструкции, что затрудняет работу с большими объемами памяти. Низкое же энергопотребление процессоров ARM не может компенсировать малую по сравнению с x86 вычислительную мощность. Пользователи домашних и рабочих компьютеров тоже вряд ли пожелают покинуть "обжитую" платформу x86 и лишиться всего многообразия прикладных программ и игр, которые были выпущены для этой системы.
Но, судя по последним новостям от ведущих производителей процессоров и операционных систем, эта ситуация может кардинально измениться в самом ближайшем времени. На выставке CES 2011 Nvidia представила новую разработку под названием Project Denver – высокопроизводительную систему на собственном 64-битном восьмиядерном процессоре, основанном на ARM с частотой 2–2,5 ГГц. Первые образцы Project Denver должны появиться в декабре этого года. Разработчик пока не сообщает подробностей об этой системе, но ясно, что ее применение не ограничивается мобильными устройствами, и компания Nvidia всерьез решила начать покорение занятых Intel/AMD сегментов рынка. Выйти в мир "больших" компьютеров процессорам ARM поможет компания Microsoft, которая вернула поддержку ARM в ОС Windows 8 (напомним, что седьмая версия Windows не поддерживала ARM) [12].
* * *
Ни одна микропроцессорная архитектура не развивалась так динамично, как ARM. В основном это стало возможным благодаря удачной тактике ведения бизнеса компанией. Лицензирование ядер ARM позволило объединить усилия лучших разработчиков и производителей электроники по всему миру, и с каждой их разработкой для ARM открываются новые пути к совершенству.
Использованные источники
http://arm.com/products/processors/index.php
Козлов-Кононов Д. Процессорные ядра семейства Cortex. Сочетание высокой производительности и низкого энергопотребления. – Электроника: НТБ, 2010, №8, c.16–24.
http://www.youtube.com/watch?v=W4W6lVQl3QA
http://www.brightsideofnews.com/news/2011/5/19/the-coming-war-arm-versus-x86.aspx
Katie Roberts-Hoffman, Pawankumar Hedge. ARM Cortex-A8 vs. Intel Atom: Architectural and Benchmark Comparisons – University of Texas at Dallas, EE6304 Computer Architecture Course Project, Fall 2009.
http://arstechnica.com/apple/news/2010/06/an-even-closer-look-at-apples-a4-shows-evolutionary-design.ars
http://www.engadget.com/2011/02/15/nvidia-announces-quad-core-kal-el-soc-promises-it-in-tablets-by/
http://www.ilsistemista.net/index.php/hardware-analysis/10-published-kal-el-performance-is-nvidia-soc-truly-faster-than-a-core2-.html
http://www.tgdaily.com/hardware-features/55449-arm-targets-x86-architecture-with-cortex-a15
http://www.theregister.co.uk/2011/03/23/nvidia_arm_strategy
http://www.nstor.ru/ru/news/company/2011-03-11/arm.html
http://arstechnica.com/microsoft/news/2011/01/windows-8-to-come-in-arm-soc-flavors.ars
Отзывы читателей