ARM (архитектура)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
ARM
ARM powered Badge.svg
Логотип ARM
Разработчик

ARM Limited

Разрядность

ARMv8 64/32 бита, до ARMv8 только 32 бита

Представлена

1985

Архитектура

RISC

Тип

Регистр-регистр

Кодирование СК

ARMv8: фиксированное (32 бита), кроме режима совместимости с ARMv7 кодом
ARMv7/6: смешанное (32 и 16 бит выровнено)
ARMv3/2: фиксированное (32 бита)

Переходы

по флагам условий

Порядок байт

Bi-endian (обычно Little-endian)

Расширения

NEON, Thumb-2 (обязательно начиная с ARMv7), Jazelle, VFPv4-D16, VFPv4 (все обязательны в ARMv8)
В микроконтроллерах: FPv4-SP

ARM процессор производства Conexant, устанавливается в основном в маршрутизаторах

Архитектура ARM (Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина) — семейство лицензируемых 32-битных и 64-битных микропроцессорных ядер разработки компании ARM Limited.[1]

Среди лицензиатов: AMD, Apple, Analog Devices, Atmel, Xilinx, Altera, Cirrus Logic (англ.), Intel (до 27 июня 2006 года), Marvell (англ.), NXP, STMicroelectronics, Samsung, LG, MediaTek, MStar, Qualcomm, Sony, Texas Instruments, nVidia, Freescale, Миландр, HiSilicon.

Значимые семейства процессоров: ARM7, ARM9, ARM11 и Cortex[2][3].

Многие лицензиаты делают собственные версии ядер на базе ARM: DEC StrongARM, Freescale i.MX, Intel XScale, NVIDIA Tegra, ST-Ericsson Nomadik, Krait в Qualcomm Snapdragon, Texas Instruments OMAP, Samsung Hummingbird, LG H13, Apple A6 и HiSilicon K3.

Популярность[править | править вики-текст]

В 2007 году около 98 % из более чем миллиарда мобильных телефонов, продаваемых ежегодно, были оснащены по крайней мере одним процессором ARM.[4] По состоянию на 2009 на процессоры ARM приходилось до 90 % всех встроенных 32-разрядных процессоров.[5] Процессоры ARM широко используются в потребительской электронике — в том числе КПК, мобильных телефонах, цифровых носителях и плеерах, портативных игровых консолях, калькуляторах и компьютерных периферийных устройствах, таких как жесткие диски или маршрутизаторы.

Эти процессоры имеют низкое энергопотребление, поэтому находят широкое применение во встраиваемых системах и преобладают на рынке мобильных устройств, для которых данный фактор немаловажен.

История[править | править вики-текст]

После достижения некоторых успехов с компьютером BBC Micro британская компания Acorn Computers задумалась над переходом от относительно слабых процессоров MOS Technology 6502 к более производительным решениям и выходом на рынок бизнес-компьютеров с той же платформой BBC Micro. Такие процессоры как Motorola 68000 и 32016 от National Semiconductor были для этого непригодны, а 6502 был недостаточно мощным, чтобы поддерживать графический пользовательский интерфейс.[6]

Компании была нужна совершенно новая архитектура после того, как она протестировала все доступные ей процессоры и сочла их неэффективными. Acorn серьёзно настроился на разработку собственного процессора, и их инженеры начали изучать документацию проекта RISC, разработанного в Университете Калифорнии в Беркли. Они подумали, что раз уж группе студентов удалось создать вполне конкурентоспособный процессор, то их инженерам это будет несложно. Поездка в Western Design Center в Фениксе показала инженерам Стиву Ферберу и Софи Уилсон, что им не потребуются невероятные ресурсы для осуществления этого плана.

Уилсон приступила к разработке системы команд, создавая симулятор нового процессора на компьютере BBC Micro. Это убедило инженеров Acorn, что они на верном пути. Но все же перед тем, как идти дальше, им требовалось больше ресурсов. Настало время для Уилсон подойти к директору Acorn Герману Хаузеру и объяснить, в чём же дело. После того как он дал добро, собралась небольшая команда для реализации модели Уилсон на аппаратном уровне.

Acorn RISC Machine: ARM2[править | править вики-текст]

Официальный проект Acorn RISC Machine был начат в октябре 1983 года. VLSI Technology (англ.) была выбрана в качестве поставщика кремниевых компонентов, так как она уже снабжала Acorn микросхемами ПЗУ и некоторыми нестандартными интегральными схемами. Разработку возглавили Уилсон и Фербер. Их основной целью было достижение низкой латентности обработки прерывания, как у MOS Technology 6502. Архитектура доступа к памяти, взятая от 6502, позволила разработчикам достичь хорошей производительности без использования дорогостоящего в реализации модуля DMA. Первый процессор был произведен VLSI 26 апреля 1985 года — тогда он впервые заработал и был назван ARM1. Первые серийные процессоры под названием ARM2 стали доступны в следующем году.

Его первое применение было в качестве второго процессора в BBC Micro, где он был использован при разработке программного обеспечения для моделирования, что позволило завершить работу над вспомогательными микросхемами компьютера, а также ускорить работу программного обеспечения CAD, используемого при разработке ARM2. Уилсон оптимизировала набор инструкций ARM для исполнения BBC BASIC. Изначальная цель компьютера, полностью построенного на базе ARM, была достигнута в 1987 году с выходом Acorn Archimedes.

Атмосфера вокруг проекта ARM была настолько секретна, что когда компания Olivetti вела переговоры о покупке контрольного пакета акций Acorn в 1985 году, они не стали рассказывать о развитии проекта до конца переговоров. В 1992 году Acorn ещё раз выиграл премию королевы за ARM.

В ARM2 была 32-разрядная шина данных, 26-битное адресное пространство и 16 32-разрядных регистров. Программный код должен был лежать в первых 64 мегабайтах памяти, а программный счётчик был ограничен 26 битами, так как верхние 4 и нижние 2 бита 32-битного регистра служили флагами. ARM2 стал, возможно, самым простым из популярных 32-битных процессоров в мире, имея всего лишь 30000 транзисторов (для сравнения, в сделанном на 6 лет раньше процессоре Motorola 68000 было около 70000 транзисторов). Многое из этой простоты обусловлено отсутствием микрокода (который в процессоре 68000 занимает от одной четверти до одной трети площади кристалла), и отсутствием кэша, как и в многих процессорах того времени. Эта простота привела к низким затратам энергии, в то время как ARM был гораздо более производителен, чем Intel 80286.[7] У его преемника — процессора ARM3 — уже был кэш 4 кб, что ещё больше увеличило производительность

Apple, DEC, Intel: ARM6, StrongARM, XScale[править | править вики-текст]

В конце 1980-х годов Apple Computer и VLSI Technology начали работать с Acorn Computers над новыми версиями ядра ARM. Работа была настолько важна, что Acorn преобразовала команду разработчиков в 1990 году в новую компанию под названием Advanced RISC Machines. По этой причине ARM иногда расшифровывают как Advanced RISC Machines вместо Acorn RISC Machine. Advanced RISC Machines стала ARM, когда её родительская компания ARM Holdings вышла на Лондонскую фондовую биржу и NASDAQ в 1998 году.

Новая работа Apple-ARM в конечном итоге превратилась в ARM6, впервые выпущенный в 1992 году. Apple использовала основанный на базе ARM6 процессор ARM610 в качестве основы для своего продукта Apple Newton PDA. В 1994 году Acorn стала использовать ARM610 как главный процессор в своих компьютерах RISC PC. Компания DEC также купила лицензию на архитектуру ARM6 (чем вызвала небольшую путаницу, поскольку они так же производили процессоры Alpha) и начала производить StrongARM. На 233МГц этот процессор требовал всего 1 Вт мощности (более поздние версии требовали гораздо меньше). Позднее Intel получил права на эту работу в результате судебного процесса. Intel воспользовалась возможностью дополнить их устаревшую линейку I960 процессором StrongARM и, позднее, разработала свою версию ядра под торговой маркой XScale, которую они впоследствии продали компании Marvell.

Ядро ARM сохранило все тот же размер после всех этих изменений. У ARM2 было 30000 транзисторов, в то время как ARM6 дорос всего лишь до 35000.

Влияние ARM-технологии на рынок[править | править вики-текст]

В основном процессоры семейства завоевали сегмент массовых мобильных продуктов (сотовые телефоны, карманные компьютеры) и встраиваемых систем средней и высокой производительности (от сетевых маршрутизаторов и точек доступа до телевизоров). Отдельные компании заявляют о разработках эффективных серверов на базе кластеров ARM процессоров[8], но пока это только экспериментальные проекты с 32-битной архитектурой[9].

Процессоры ARM[править | править вики-текст]

В настоящее время значимыми являются несколько семейств процессоров ARM:

  • ARM7 (с тактовой частотой до 60-72 МГц), предназначенные, например, для недорогих мобильных телефонов и встраиваемых решений средней производительности. В настоящее время активно вытесняется новым семейством Cortex.
  • ARM9 (англ.)русск., ARM11 (с частотами до 1 ГГц) для продвинутых телефонов, карманных компьютеров и встраиваемых решений высокой производительности.
  • Cortex A — новое семейство процессоров на смену ARM9 и ARM11.
  • Cortex M — новое семейство процессоров на смену ARM7, также призванное занять новую для ARM нишу встраиваемых решений низкой производительности. В семействе присутствуют три значимых ядра: Cortex M0, Cortex M3 и Cortex M4.

В 2010 году производитель анонсировал процессоры Cortex-A15 под кодовым названием Eagle, ARM утверждает, что ядро Cortex A15 на 40 процентов производительнее на той же частоте, чем ядро Cortex-A9 при одинаковом числе ядер на чипе.[10] Изделие, изготовленное по 28-нанометровому техпроцессу, имеет 4 ядра, может функционировать на частоте до 2,5 ГГц и будет поддерживаться многими современными операционными системами[11][12].

Популярное семейство микропроцессоров xScale фирмы Marvell (до 27 июня 2007 года — Intel[13]), в действительности является расширением архитектуры ARM9, дополненной набором инструкций Wireless MMX, специально разработанных фирмой Intel для поддержки мультимедийных приложений.

Архитектура[править | править вики-текст]

Уже давно существует справочное руководство по архитектуре ARM, которое разграничивает все типы интерфейсов, которые поддерживает ARM, так как детали реализации каждого типа процессора могут отличаться. Архитектура развивалась с течением времени, и начиная с ARMv7 были определены 3 профиля:

  • ‘A’(application) — для устройств, требующих высокой производительности (смартфоны, планшеты)
  • ‘R’(real time) — для приложений, работающих в реальном времени,
  • ’M’(microcontroller) — для микроконтроллеров и недорогих встраиваемых устройств.[2]

Профили могут поддерживать меньшее количество команд (команды определенного типа).

Режимы[править | править вики-текст]

Процессор может находиться в одном из следующих операционных режимов:

  • User mode — обычный режим выполнения программ. В этом режиме выполняется большинство программ.
  • Fast Interrupt (FIQ) — режим быстрого прерывания (меньшее время срабатывания)
  • Interrupt (IRQ) — основной режим прерывания.
  • System mode — защищённый режим для использования операционной системой.
  • Abort mode — режим, в который процессор переходит при возникновении ошибки доступа к памяти (доступ к данным или к инструкции на этапе prefetch конвейера).
  • Supervisor mode — привилегированный пользовательский режим.
  • Undefined mode — режим, в который процессор входит при попытке выполнить неизвестную ему инструкцию.
  • Thumb — режим с улучшенной плотностью кода.

Переключение режима процессора происходит при возникновении соответствующего исключения, или же модификацией регистра статуса.

Набор команд[править | править вики-текст]

Чтобы сохранить дизайн чистым, простым и быстрым, оригинальное изготовление ARM было исполнено без микрокода, как и более простой 8-разрядный процессор 6502, используемый в предыдущих микрокомпьютерах от Acorn Computers.

Набор команд ARM[править | править вики-текст]

Режим, в котором исполняется 32-битный набор команд.

Набор команд Thumb[править | править вики-текст]

Для улучшения плотности кода процессоры, начиная с ARM7TDMI, снабжены режимом «thumb». В этом режиме процессор выполняет альтернативный набор 16-битных команд. Большинство из этих 16-разрядных команд переводятся в нормальные команды ARM. Уменьшение длины команды достигается за счет сокрытия некоторых операндов и ограничения возможностей адресации по сравнению с режимом полного набора команд ARM.

В режиме Thumb меньшие коды операций обладают меньшей функциональностью. Например, только ветвления могут быть условными, и многие коды операций имеют ограничение на доступ только к половине главных регистров процессора. Более короткие коды операций в целом дают большую плотность кода, хотя некоторые операции требуют дополнительных команд. В ситуациях, когда порт памяти или ширина шины ограничены 16 битами, более короткие коды операций режима Thumb становятся гораздо производительнее по сравнению с обычным 32-битным ARM кодом, так как меньший программный код придется загружать в процессор при ограниченной пропускной способности памяти.

Аппаратные средства типа Game Boy Advance, как правило, имеют небольшой объём оперативной памяти доступной с полным 32-битным информационным каналом. Но большинство операций выполняется через 16-битный или более узкий информационный канал. В этом случае имеет смысл использовать Thumb код и вручную оптимизировать некоторые тяжелые участки кода, используя переключение в режим полных 32-битных инструкций ARM.

Первым процессором с декодером Thumb команд был ARM7TDMI. Все процессоры семейства ARM9, а также XScale, имели встроенный декодер Thumb команд.

Набор команд Thumb-2[править | править вики-текст]

Thumb-2 — технология, стартовавшая с ARM1156 core, анонсированного в 2003 году. Он расширяет ограниченный 16-битный набор команд Thumb дополнительными 32-битными командами, чтобы задать набору команд дополнительную ширину. Цель Thumb-2 — достичь плотности кода как у Thumb, и производительности как у набора команд ARM на 32 битах. Можно сказать, что в ARMv7 эта цель была достигнута.

Thumb-2 расширяет как команды ARM, так и команды Thumb ещё большим количеством команд, включая управление битовым полем, табличное ветвление, условное исполнение. Новый язык «Unified Assembly Language» (UAL) поддерживает создание команд как для ARM, так и для Thumb из одного и того же исходного кода. Версии Thumb на ARMv7 выглядят как код ARM. Это требует осторожности и использования новой команды if-then, которая поддерживает исполнение до 4 последовательных команд испытываемого состояния. Во время компиляции в ARM код она игнорируется, но во время компиляции в код Thumb-2 генерирует команды. Например:

; if (r0 == r1)
CMP r0, r1
ITE EQ ; ARM: no code ... Thumb: IT instruction
; then r0 = r2;
MOVEQ r0, r2 ; ARM: conditional; Thumb: condition via ITE 'T' (then)
; else r0 = r3;
MOVNE r0, r3 ; ARM: conditional; Thumb: condition via ITE 'E' (else)
; recall that the Thumb MOV instruction has no bits to encode "EQ" or "NE"

Все чипы ARMv7 поддерживают набор команд Thumb-2, а некоторые чипы, вроде Cortex-m3, поддерживают только Thumb-2. Остальные чипы Cortex и ARM11 поддерживают наборы команд как Thumb-2, так и ARM.

Набор команд Jazelle[править | править вики-текст]

Jazelle — это технология, которая позволяет байткоду Java исполняться прямо в архитектуре ARM в качестве 3-го состояния исполнения (и набора команд) наряду с обычными командами ARM и режимом Thumb. Поддержка технологии Jazelle обозначается буквой «J» в названии процессора — например, ARMv5TEJ. Данная технология поддерживается начиная с архитектуры ARMv6, хотя новые ядра содержат лишь ограниченные реализации, которые не поддерживают аппаратного ускорения.

ARMv8 и набор команд ARM 64 бит[править | править вики-текст]

В конце 2011 года была опубликована новая версия архитектуры, ARMv8. В ней появилось определение архитектуры AArch64, в которой исполняется 64-битный набор команд A64. Поддержка 32-битных команд получила название A32 и исполняется на архитектурах AArch32. Инструкции Thumb поддерживаются в режиме T32, только при использовании 32-битных архитектур. Допускается исполнение 32-битных приложений в 64-битной ОС, и запуск виртуализованной 32-битной ОС при помощи 64-битного гипервизора.[47] Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM и другие заявили о планах по использованию ARMv8. Ядра Cortex-A53 и Cortex-A57, поддерживающие ARMv8, были представлены компанией ARM 30 октября 2012 года.[48]

Как AArch32, так и AArch64, поддерживают VFPv3, VFPv4 и advanced SIMD (NEON). Также добавлены криптографические инструкции для работы с AES, SHA-1 и SHA-256.

Особенности AArch64:

  • Новый набор команд A64
  • 31 регистр общего назначения, каждый длиной 64 бита
  • Отдельные регистры SP и PC
  • Инструкции имеют размер 32 бита и многие совпадают с командами A32
  • Большинство инструкций работают как с 32 так и с 64 битными аргументами
  • Адреса имеют размер 64 бита
  • Улучшения Advanced SIMD (NEON) enhanced
  • С 16 до 32 увеличено количество 128-битных регистров, доступных через NEON, VFPv4, криптоинструкции AES, SHA
  • Поддерживает вычисления с числами с плавающей запятой двойной точности (64-бит double)
  • Полная совместимость с IEEE 754
  • Новая система исключений
  • Трансляция виртуальных адресов из 48-битного формата работает с помощью существующих механизмов LPAE

Функции RISC[править | править вики-текст]

Архитектура ARM обладает следующими особенностями RISC:

  • Архитектура загрузки/хранения
  • Нет поддержки нелинейного (не выровненного по словам) доступа к памяти (теперь поддерживается в процессорах ARMv6 за некоторыми исключениями и полностью в ARMv7)
  • Равномерный 16х32-битный регистровый файл
  • Фиксированная длина команд (32 бита) для упрощения декодирования за счет снижения плотности кода. Позднее режим Thumb повысил плотность кода.
  • Одноцикловое исполнение

Чтобы компенсировать простой дизайн, в сравнении с современными процессорами вроде Intel 80286 или Motorola 68020 были использованы некоторые особенности дизайна:

  • Арифметические инструкции заменяют условные коды только когда это необходимо
  • 32-битное многорегистровое циклическое сдвиговое устройство, которое может быть использовано без потерь производительности в большинстве арифметических инструкций и адресных расчетов.
  • Мощные индексированные адресные режимы
  • Регистр ссылок для быстрого вызова функций листьев
  • Простые, но быстрые, с двумя уровнями приоритетов подсистемы прерываний с включенными банками регистров.

Условное исполнение[править | править вики-текст]

Одним из существенных отличий архитектуры ARM от других архитектур ЦПУ является так называемая предикация — возможность условного исполнения команд. Под «условным исполнением» здесь понимается то, что команда будет выполнена или проигнорирована в зависимости от текущего состояния флагов состояния процессора.

В то время как для других архитектур таким свойством, как правило, обладают только команды условных переходов, в архитектуру ARM была заложена возможность условного исполнения практически любой команды. Это было достигнуто добавлением в коды их инструкций особого 4-битового поля (предиката). Одно из его значений зарезервировано на то, что инструкция должна быть выполнена безусловно, а остальные кодируют то или иное сочетание условий (флагов). С одной стороны, с учётом ограниченности общей длины инструкции, это сократило число бит, доступных для кодирования смещения в командах обращения к памяти, но с другой — позволило избавляться от инструкций ветвления при генерации кода для небольших if-блоков.

Пример, обычно рассматриваемый для иллюстрации — основанный на вычитании алгоритм Евклида. В языке C он выглядит так:

    while (i != j)
    {
       if (i > j)
           i -= j;
       else
           j -= i;
    }

А на ассемблере ARM — так:

loop CMP Ri, Rj; set condition «NE» if (i != j),
                            ;               "GT" if (i > j),
                            ;            or "LT" if (i < j)
        SUBGT  Ri, Ri, Rj   ; if "GT" (greater than), i = i-j;
        SUBLT  Rj, Rj, Ri   ; if "LT" (less than), j = j-i;
        BNE    loop         ; if "NE" (not equal), then loop

Из кода видно, что использование предикации позволило полностью избежать ветвления в операторах else и then. Заметим, что если Ri и Rj равны, то ни одна из SUB инструкций не будет выполнена, полностью убирая необходимость в ветке, реализующей проверку while при каждом начале цикла, что могло быть реализовано, например, при помощи инструкции SUBLE (меньше либо равно).

Один из способов, которым уплотнённый (Thumb) код достигает большей экономии объёма — это именно удаление 4-битового предиката из всех инструкций, кроме ветвлений.

Другие особенности[править | править вики-текст]

Другая особенность набора команд это возможность соединять сдвиги и вращения в инструкции «обработки информации» (арифметическую, логическую, движение регистр-регистр) так, что, например выражение С:

 a += (j << 2);

может быть преобразовано в команду из одного слова и одного цикла в ARM:

ADD Ra, Ra, Rj, LSL #2

Это приводит к тому, что типичные программы ARM становятся плотнее, чем обычно, с меньшим доступом к памяти. Таким образом, конвейер используется гораздо более эффективно. Даже несмотря на то, что ARM работает на скоростях, которые многие бы сочли низкими, он довольно-таки легко конкурирует с многими более сложными архитектурами ЦПУ.

ARM процессор также имеет некоторые особенности, редко встречающиеся в других архитектурах RISC — такие, как адресация относительно счетчика команд (на самом деле счетчик команд ARM является одним из 16 регистров), а также пре- и пост-инкрементные режимы адресации.

Другая особенность, которую стоит отметить, это то, что некоторые ранние ARM процессоры (до ARM7TDMI), например, не имеют команд для хранения 2-байтных чисел. Таким образом, строго говоря, для них невозможно сгенерировать эффективный код, который бы вел себя так, как ожидается от объектов С, типа «volatile int16_t».

Конвейер и другие аспекты реализации[править | править вики-текст]

ARM7 и более ранние версии имеют трехступенчатый конвейер. Это ступени переноса, декодирования и исполнения. Более производительные архитектуры, типа ARM9, имеют более сложные конвейеры. Cortex-a8 имеет 13-ступенчатый конвейер.

Сопроцессоры[править | править вики-текст]

Архитектура предоставляет способ расширения набора команд, используя сопроцессоры, которые могут быть адресованы, используя MCR, MRC, MRRC, MCRR и похожие команды. Пространство сопроцессора логически разбито на 16 сопроцессоров с номерами от 0 до 15, причем 15-й зарезервирован для некоторых типичных функций управления, типа управления кэш-памятью и операции блока управления памятью (на процессорах, в которых они есть).

В машинах на основе ARM периферийные устройства обычно подсоединяются к процессору путем сопоставления их физических регистров в памяти ARM или в памяти сопроцессора, или путем присоединения к шинам, которые в свою очередь подсоединяются к процессору. Доступ к сопроцессорам имеет большее время ожидания, поэтому некоторые периферийные устройства проектируются для доступа в обоих направлениях. В остальных случаях разработчики чипов лишь пользуются механизмом интеграции сопроцессора. Например, движок обработки изображений должен состоять из малого ядра ARM7TDMI, совмещенного с сопроцессором, который поддерживает примитивные операции по обработке элементарных кодировок HDTV.

Усовершенствованный SIMD (NEON)[править | править вики-текст]

Расширение усовершенствованного SIMD, также называемое технологией NEON — это комбинированный 64- и 128-битный набор команд SIMD (single instruction multiple data), который обеспечивает стандартизованное ускорение для медиа приложений и приложений обработки сигнала. NEON может выполнять декодирование аудио формата mp3 на частоте процессора в 10 МГц, и может работать с речевым кодеком GSM AMR (adaptive multi-rate) на частоте более 13МГц. Он обладает внушительным набором команд, отдельными регистровыми файлами, и независимой системой исполнения на аппаратном уровне. NEON поддерживает 8-, 16-, 32-, 64-битную информацию целого типа, одинарной точности и с плавающей запятой, и работает в операциях SIMD по обработке аудио и видео (графика и игры). В NEON SIMD поддерживает до 16 операций единовременно.

VFP[править | править вики-текст]

Технология VFP (Vector Floating Point, вектора чисел с плавающей запятой) — расширение сопроцессора в архитектуре ARM. Она производит низкозатратные вычисления над числами с плавающей запятой одинарной/двойной точности, в полной мере соответствующие стандарту ANSI/IEEE Std 754—1985 Standard for Binary Floating-Point Arithmetic. VFP производит вычисления с плавающей запятой, подходящие для широкого спектра приложений — например, для КПК, смартфонов, сжатие звука, трёхмерной графики и цифрового звука, а также принтеров и телеприставок. Архитектура VFP также поддерживает исполнение коротких векторных команд. Но, поскольку процессор выполняет операции последовательно над каждым элементом вектора, то VFP нельзя назвать истинным SIMD набором инструкций. Этот режим может быть полезен в графике и приложениях обработки сигнала, так как он позволяет уменьшить размер кода и выработку команд.

Другие сопроцессоры с плавающей запятой и/или SIMD, находящиеся в ARM процессорах включают в себя FPA, FPE, iwMMXt. Они обеспечивают ту же функциональность, что и VFP, но не совместимы с ним на уровне опкодов.

Расширения безопасности[править | править вики-текст]

Расширения безопасности, позиционируемые как TrustZone Technology, находятся в ARMv6KZ и других, более поздних, профилированных на приложениях архитектурах. Оно обеспечивает низкозатратную альтернативу добавлению специального ядра безопасности, обеспечивая 2 виртуальных процессора, поддерживаемых аппаратным контролем доступа. Это позволяет ядру приложения переключаться между двумя состояниями, называемыми «миры» (чтобы избежать путаницы с названиями возможных доменов), чтобы не допустить утечку информации из более важного мира в менее важный. Этот переключатель миров обычно ортогонален всем другим возможностям процессора. Таким образом, каждый мир может работать независимо от других миров, используя одно и то же ядро. Память и периферия соответственно изготавливаются с учетом особенностей мира ядра, и могут использовать это, чтобы получить контроль доступа к секретам и кодам ядра. Типичные приложения TrustZone Technology должны запускать полноценную операционную систему в менее важном мире, и компактный, специализированный на безопасности, код в более важном мире, позволяя Digital Rights Management’у намного точнее контролировать использование медиа на устройствах на базе ARM, и предотвращая несанкционированный доступ к устройству.

На практике же, так как конкретные детали реализации TrustZone остаются собственностью компании и не разглашаются, остается неясным, какой уровень безопасности гарантируется для данной модели угрозы.

Отладка[править | править вики-текст]

Все современные процессоры ARM включают аппаратные средства отладки, так как без них отладчики ПО не смогли бы выполнить самые базовые операции типа остановки, отступа, установка контрольных точек после перезагрузки.

Архитектура ARMv7 определяет базовые средства отладки на архитектурном уровне. К ним относятся точки останова, точки просмотра и выполнение команд в режиме отладки. Такие средства были также доступны с модулем отладки EmbeddedICE. Поддерживаются оба режима — остановки и обзора. Реальный транспортный механизм, который используется для доступа к средствам отладки, не специфицирован архитектурно, но реализация, как правило, включает поддержку JTAG.

Существует отдельная архитектура отладки «с обзором ядра», которая не требуется архитектурно процессорами ARMv7.

Регистры[править | править вики-текст]

ARM предоставляет 31 регистр общего назначения разрядностью 32 бит. В зависимости от режима и состояния процессора пользователь имеет доступ только к строго определённому набору регистров. В ARM state разработчику постоянно доступны 17 регистров:

  • 13 регистров общего назначения (r0..r12).
  • Stack Pointer (r13) — содержит указатель стека выполняемой программы.
  • Link register (r14) — содержит адрес возврата в инструкциях ветвления.
  • Program Counter (r15) — биты [31:1] содержат адрес выполняемой инструкции.
  • Current Program Status Register (CPSR) — содержит флаги, описывающие текущее состояние процессора. Модифицируется при выполнении многих инструкций: логических, арифметических, и др.

Во всех режимах, кроме User mode и System mode, доступен также Saved Program Status Register (SPSR). После возникновения исключения регистр CPSR сохраняется в SPSR. Тем самым фиксируется состояние процессора (режим, состояние; флаги арифметических, логических операций, разрешения прерываний) на момент непосредственно перед прерыванием.[49]

usr sys svc abt und irq fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8 R8_fiq
R9 R9_fiq
R10 R10_fiq
R11 R11_fiq
R12 R12_fiq
R13 R13_svc R13_abt R13_und R13_irq R13_fiq
R14 R14_svc R14_abt R14_und R14_irq R14_fiq
R15
CPSR
SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

Работа с памятью[править | править вики-текст]

Поддерживаемые системы ввода-вывода[править | править вики-текст]

В большинстве существующих моделей микропроцессоров реализована шина PCI и возможность работы с внешней динамической оперативной памятью (DRAM). В процессорах, предназначенных для потребительских устройств, также обычно интегрируются: контроллеры шин USB, IIC, AC’97-совместимое звуковое устройство, устройство для работы с флэш-носителями стандарта SD и MMC, контроллер последовательного порта.

Все процессоры имеют линии ввода-вывода общего назначения (GPIO). В потребительских устройствах к ним могут быть подключены кнопки «быстрого запуска», сигнальные светодиоды, колесо прокрутки (JogDial), клавиатура.

Процесс запуска ОС на ARM-машинах[править | править вики-текст]

Архитектура ARM поддерживается множеством операционных систем. Наиболее широко используемые: Linux (в том числе, Android), iOS, Windows Phone. Подробнее:Список операционных систем с поддержкой процессоров ARM.

Работать на системах с ARM процессором могут различные Unix и Unix-подобные ОС: Linux (многие дистрибутивы), iOS, Android, BSD (FreeBSD, NetBSD, OpenBSD), QNX, Plan 9, Inferno, OpenSolaris (2008—2009[50]), Firefox OS.

Также на платформе запускаются отдельные варианты семейства Windows: Windows CE, Windows Phone, Windows RT.

Кроме того ARM поддерживают: ReactOS[51][52], FreeRTOS, Nucleus, Symbian OS, RISC OS, RISC iX.

Примечания[править | править вики-текст]

  1. Компания ARM Limited занимается исключительно разработкой ядер и инструментов для них (компиляторы, средства отладки и т. п.), зарабатывая на лицензировании архитектуры сторонним производителям.
  2. 1 2 Д.Козлов-Кононов. Процессорные ядра семейства Cortex. Сочетание высокой производительности и низкого энергопотребления, журнал Электроника, вып. #8/2010
  3. Ознакомительное руководство по ARM-микроконтроллерам Cortex-M3
  4. «ARMed for the living room».
  5. «An interview with Steve Furber» // Communications of the ACM, May 2011, Vol. 54 No. 5, Pages 34-39, doi:10.1145/1941487.1941501
  6. Manners, David. ARM's way, Electronics Weekly (29 апреля 1998). Архивировано из первоисточника 29 июля 2012. Проверено 26 октября 2012.
  7. Santanu Chattopadhyay Embedded System Design. — PHI Learning Pvt. Ltd.. — P. 9. — ISBN 978-81-203-4024-4.
  8. Apache Benchmarks for Calxeda’s 5-Watt Web Server — ARM Servers, Now!
  9. Cloudy with a chance of ARM. What the Microserver Market Means for Semiconductor Vendors // Oppenheimer & Co. Inc, March 30, 2012
  10. Exclusive : ARM Cortex-A15 «40 Per Cent» Faster Than Cortex-A9
  11. Cortex-A15 Processor (англ.). ARM. — Презентация процессоров семейства ARM CortexA15 MPCore на сайте производителя. Проверено 20 апреля 2012. Архивировано из первоисточника 30 мая 2012.
  12. ARM Cortex-A15 — процессор с тактовой частотой до 2,5 ГГц, не только для смартфонов. Ferra.ru (10 сентября 2010). Проверено 20 апреля 2012. Архивировано из первоисточника 30 мая 2012.
  13. Intel Newsroom | Top headlines, breaking news and current events from Intel
  14. «ARM810 — Dancing to the Beat of a Different Drum» ARM Holdings presentation at Hot Chips 1996-08-07.
  15. Register 13, FCSE PID register ARM920T Technical Reference Manual
  16. Neo1973: GTA01Bv4 versus GTA02 comparison. Проверено 15 ноября 2007. Архивировано из первоисточника 13 марта 2012.
  17. S3C2410. Проверено 13 января 2010. Архивировано из первоисточника 13 марта 2012.
  18. Rockbox Samsung SA58xxx series. Проверено 22 февраля 2008. Архивировано из первоисточника 13 марта 2012.
  19. Rockbox Meizu M6 Port – Hardware Information. Проверено 22 февраля 2008. Архивировано из первоисточника 13 марта 2012.
  20. Datasheets — Magic Lantern Firmware Wiki
  21. STR9 – STR912 – STR912FW44 microcontroller – documents and files download page(недоступная ссылка — история). Mcu.st.com. Проверено 18 апреля 2009. Архивировано из первоисточника 10 февраля 2007.
  22. Starlet.
  23. Benchmarks – Albatross(недоступная ссылка — история). Albatross-uav.org (18 июня 2005). Проверено 18 апреля 2009. Архивировано из первоисточника 16 октября 2008.
  24. ARM1136J(F)-S – ARM Processor. Arm.com. Проверено 18 апреля 2009. Архивировано из первоисточника 13 марта 2012.
  25. Qualcomm chips kernel ARM - from phones to laptops. xi0.info. Проверено 8 мая 2010. Архивировано из первоисточника 13 марта 2012.
  26. Qualcomm MSM7227 RISC Chipset. pdadb.net. Проверено 8 мая 2010. Архивировано из первоисточника 13 марта 2012.
  27. GoForce 6100. Nvidia.com. Проверено 18 апреля 2009. Архивировано из первоисточника 13 марта 2012.
  28. Mediatek MT6573. http://www.mediatek.com.&#32;Проверено 18 апреля 2009. Архивировано из первоисточника 6 июня 2012.
  29. Samsung S3C6410 and S3C6430 Series ARM Proccessors. Samsung. Проверено 8 октября 2009., and the Qualcomm MSM7627 as seen in the Palm Pixi and Motorola Calgary/Devour
  30. Merrit, Rick "ARM stretches out with A5 core, graphics, FPGAs". EE Times (21 октября 2009). Проверено 28 октября 2009. Архивировано из первоисточника 13 марта 2012.
  31. Clarke, Peter ARM tips plans for Swift and Sparrow processor cores. EE Times (3 февраля 2009). Проверено 18 апреля 2009. Архивировано из первоисточника 13 марта 2012.
  32. Segan, Sascha ARM's Multicore Chips Aim for Netbooks. PC Magazine (9 апреля 2009). Проверено 18 апреля 2009. Архивировано из первоисточника 13 марта 2012.
  33. 1 2 3 4 http://pc.watch.impress.co.jp/video/pcw/docs/423/409/p1.pdf
  34. Cortex-A15 Processor — ARM
  35. Cortex-A7 Processor — ARM
  36. Benz, Benjamin Cortex Nachwuchs bei ARM. Heise.de (2 февраля 2010). Проверено 3 мая 2010. Архивировано из первоисточника 13 марта 2012.
  37. Clarke, Peter ARM preps tiny core for low-power microcontrollers. EE Times (23 февраля 2009). Проверено 30 ноября 2009. Архивировано из первоисточника 13 марта 2012.
  38. Walko, John NXP first to demo ARM Cortex-M0 silicon. EE Times (23 марта 2009). Проверено 29 июня 2009. Архивировано из первоисточника 13 марта 2012.
  39. ARM Powered VCAs " Triad Semiconductor
  40. Cortex-M0 used in low power touch controller — 10/06/2009 — Electronics Weekly
  41. Chungbuk Technopark Chooses ARM Cortex-M0 Processor
  42. Google Translate
  43. Austriamicrosystems Chooses ARM Cortex-M0 Processor For Mixed Signal Applications
  44. «ARM Extends Cortex Family with First Processor Optimized for FPGA», ARM press release, March 19, 2007. Retrieved April 11, 2007.
  45. «ARM Cortex-M1», ARM product website. Retrieved April 11, 2007.
  46. ARM Extends Cortex Family with First Processor Optimized for FPGA.
  47. http://www.arm.com/files/downloads/ARMv8_Architecture.pdf
  48. ARM Launches Cortex-A50 Series, the World’s Most… - ARM. Проверено 17 апреля 2013. Архивировано из первоисточника 20 апреля 2013.
  49. ARM7TDMI (rev 3) Technical Reference Manual (англ.). Проверено 22 августа 2009. Архивировано из первоисточника 13 марта 2012.
  50. OpenSolaris Project: ARM Platform Port. Sun Microsystems. Архивировано из первоисточника 13 марта 2012.
  51. ARM Port — ReactOS
  52. ReactOS Portable Systems Group — ReactOS

Ссылки[править | править вики-текст]