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

advertisement
Реферат на тему:
ARM (архитектура)
План:
Введение


























1 История
2 Режимы
3 Acorn RISC Machine:ARM2
4 Apple, DEC, Intel:ARM6, StrongARM, XScale
5 Рост патентования
6 Процессоры ARM
7 Архитектура
8 Набор команд
9 Функции RISC
10 Условное исполнение
11 Другие особенности
12 Конвейер и другие аспекты реализации
13 Сопроцессоры
14 Большой палец/Тумба (Thumb)
15 Отладка
16 Jazelle
17 Thumb-2
18 Усовершенствованный SIMD(NEON)
19 VFP
20 Расширения безопасности
21 ARM лицензиаты и приблизительная стоимость лицензии
22 Регистры
23 Работа с памятью
24 Поддерживаемые системы ввода-вывода
25 Процесс запуска ОС на ARM-машинах
26 Поддержка Unix-подобными системами
o 26.1 Linux
o 26.2 BSD
o 26.3 Solaris
o 26.4 Поддержка других операционных систем
Примечания
Введение
ARM процессор производства Conexant, устанавливается в основном в маршрутизаторах
Архитектура ARM (ранее Advanced RISC Machine — усовершенствованная RISCмашина, предшественник — Acorn RISC Machine) — 32-битная архитектура набора
команд с сокращённым набором команд, разрабатываемая ARM Limited. Данные
процессоры имеют низкое энергопотребление, поэтому находят широкое применение во
встраиваемых системах и доминируют на рынке мобильных устройств, для которых
важно низкое энергопотребление.
В 2007 году около 98 процентов из более чем миллиарда мобильных телефонов,
продаваемых ежегодно, были оснащены по крайней мере одним процессором ARM. По
состоянию на 2009 на процессоры ARM приходится до 90% всех встроенных 32разрядных RISC процессоров. Процессоры ARM широко используются в потребительской
электронике — в том числе КПК, мобильных телефонах, цифровых носителях и плеерах,
портативных игровых консолях, калькуляторах и компьютерных периферийных
устройствах, таких как жесткие диски или маршрутизаторы.
Процессоры с этой архитектурой набора команд разрабатываются компанией ARM
Limited и ее лицензиатами: Analog Devices, Atmel, Cirrus Logic (англ.), Intel (до 27 июня
2006 года[1]), Marvell (англ.), NXP, STMicroelectronics, Samsung, Qualcomm, Sony Ericsson,
Texas Instruments, nVidia, Freescale, Миландр. Значимые семейства процессоров: ARM7,
ARM9, ARM11 и Cortex. Процессоры разработанные основными лицензиатами: DEC
StrongARM, Freescale i.MX, Marvell (ранее Intel) XScale, NVIDIA Tegra, ST-Ericsson
Nomadik, Qualcomm Snapdragon и Texas Instruments OMAP.
1. История
После достижения некоторых успехов с компьютером BBC Micro, Acorn придумала, как
уйти от относительно простых процессоров MOS Technology 6502, нацелившись на
бизнес-рынок, как и IBM PC, запущенный в 1981 году (который в скором времени его и
занял). План Acorn Business Computer(ABC) предусматривал создание ряда процессоров
для работы с платформой BBC Micro, но такие процессоры как Motorola 68000 и 32016
National Semiconductor были для этого непригодны, а 6502 был недостаточно мощным,
чтобы поддерживать графический пользовательский интерфейс.
Компании была нужна совершенно новая архитектура после того, как она протестировала
все доступные ей процессоры и сочла их неэффективными. Acorn серьезно настроился на
разработку собственного процессора, и их инженеры начали изучать документацию
проекта RISC разработанного в университете Беркли. Они подумали, что раз уж группе
студентов удалось создать вполне конкурентоспособный процессор, то их инженерам это
будет раз плюнуть. Поездка в Western Design Center в Фениксе показала инженерам Стиву
Ферберу и Софи Уилсон, что им не потребуются невероятные количества ресурсов для
осуществления этого плана.
Уилсон приступила к разработке набора команд, моделируя процессор на основе BBC
micro c сопроцессором 6502. Это убедило инженеров ACORN, что они на верном пути. Но
все же перед тем, как они пойдут дальше, им потребовалось бы больше ресурсов. Настало
время для Уилсон подойти к директору Acorn Герману Гаузеру и объяснить, в чем же
дело. После того как он дал добро, собралась небольшая команда для реализации модели
Уилсон на аппаратном уровне.
2. Режимы
Процессор может находиться в одном из следующих операционных режимов:







User mode — обычный режим выполнения программ. В этом режиме выполняется
большинство программ.
Fast Interrupt (FIQ) — режим быстрого прерывания (меньшее время срабатывания)
Interrupt (IRQ) — основной режим прерывания.
System mode — защищённый режим для использования операционной системой.
Abort mode — режим, в который процессор переходит при возникновении ошибки
доступа к памяти (доступ к данным или к инструкции на этапе prefetch конвейера).
Supervisor mode — привилегированный пользовательский режим.
Undefined mode — режим, в который процессор входит при попытке выполнить
неизвестную ему инструкцию.
Переключение режима процессора происходит при возникновении соответствующего
исключения, или же модификацией регистра статуса.
3. Acorn RISC Machine:ARM2
Официальный проект Acorn RISC Machine был начат в октябре 1983 года. VLSI
Technology была выбрана в качестве поставщика кремниевых компонентов, так как она
уже снабжала Acorn ROM и некоторыми нестандартными чипами. Разработку возглавили
Уилсон и Фербер; основной их целью было достижение низкой задержки
ввода/вывода(прерывания) обработки, как у MOS Technology 6502 (уже используемой в
существующих разработках Acorn). Архитектура доступа к памяти, взятая от 6502,
позволила разработчикам производить быстрые машины без использования
дорогостоящих аппаратных средств доступа к памяти. Первый процессор был произведен
VLSI 26 апреля 1985 года — тогда он впервые заработал и был назван ARM1. Первые
«реальные» производственные системы ARM2 стали доступны в следующем году. Его
первое применение было в качестве второго процессора с BBC Micro, где он был
использован при разработке программного обеспечения для моделирования, чтобы
завершить работу по поддержке чипов (VIDC, IOC, MEMC), а также ускорить работу
программного обеспечения CAD, используемого при разработке ARM2. Уилсон
впоследствии закодировала BBC Basic в ассемблере ARM, а знания, полученные от
разработки набора команд позволили создать наиболее полный код, сделав ARM BBC
Basic невероятно хорошим тестом для любого эмулятора ARM. Изначальная цель
компьютера, полностью построенного на базе 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. У его преемника —
процессора ARM3 — кэш был уже 4 кб, что еще сильнее увеличило производительность.
4. Apple, DEC, Intel:ARM6, StrongARM, XScale
В конце 1990-х Apple Computer и VLSI Technology начали работать с Acorn над новыми
версиями ядра 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 процессор ARM 610 в
качестве основы для своего продукта Apple Newton PDA. В 1994 году Acorn стала
использовать ARM 610 как главный центропроцессор в своих компьютерах RISC PC.
Компания DEC запатентовала архитектуру ARM6 (чем вызвала небольшую путаницу,
поскольку они так же производили процессоры Alpha) и начала производить StrongARM.
На 233МГц этот процессор требовал всего 1 Вт мощности (более поздние версии
требовали гораздо меньше). Эта работа позднее перекочевала в Intel в рамках судебного
процесса, и Intel воспользовалась возможностью дополнить их устаревшую линейку I960
процессором Strong ARM. Intel позднее разработали свое собственное
высокопроизводительное устройство XScale, которое они впоследствии продали
компании Marvell.
5. Рост патентования
Ядро ARM сохранило все тот же размер после всех этих изменений. У ARM2 было 30,000
транзисторов, в то время как ARM6 дорос всего лишь до 35,000. Бизнесом компании ARM
всегда была продажа IP ядер, которые их лицензиаты использовали для создания
микропроцессоров и микроконтроллеров на их основе. Самым успешным продуктом,
продажи которого достигли сотен миллионов штук, был ARM7TDMI. Идея заключается в
том, что производитель комбинировал ядро ARM с некоторыми дополнительными
частями, получая готовый процессор, который вполне мог бы быть собран даже на старых
фабриках полупроводников и все равно показывать отличную производительность при
низкой стоимости.
Под лицензией ARM в 2005 году было произведено около 1,6 миллиардов ядер. В 2005
году около миллиарда ядер ARM пошло на мобильные телефоны. По состоянию на январь
2008 года было произведено более 10 миллиардов ядер, а iSuppli прогнозирует, что к 2011
году будут производиться 5 миллиардов ядер ежегодно.
Архитектура, которую поддерживают смартфоны, КПК и другие портативные устройства
— это ARMv5. Процессоры XScale и ARM926 (ARMv5TE) сейчас более многочисленны в
высокотехничных устройствах, чем, например, процессоры StrongARM и процессоры
ARMv4 на базе ARM9TDMI и ARM7TDMI, но менее сложные приборы могут
использовать старые версии с меньшей лицензионной стоимостью. Процессоры ARMv6
по своей производительности на голову выше, чем стандартные ARMv5, и используются в
некоторых случаях, но процессоры Cortex(ARMv7) теперь показывают большую
производительность и экономичность, чем все предыдущие поколения. Cortex-A нужен
специально для смартфонов, которые раньше использовали ARM9 и ARM11. Cortex-R
созданы для приложений, работающих в реальном времени, а Cortex-M — для
микроконтроллеров.
В 2009 году некоторые производители представили нетбуки, работающие на процессорах
с архитектурой ARM, которые станут прямыми конкурентами нетбуков на основе Intel
Atom.
6. Процессоры ARM
Семейство
ARM1
Версия
архитектуры
ARMv1
(устаревшая)
Ядро
ARM7
Типичная
МГ
Нет
ARM1
ARM2
ARMv2a
(устаревшая)
ARM250
Встроенный MEMC
(MMU), графический
процессор. В
Нет, MEMC1a
архитектуру 2
добавлены команды
SWP и SWPB (swap).
7 MIPS @ 1
ARMv2a
(устаревшая)
ARM2a
Первое
использование кэша
на процессоре ARM.
12 MIPS @
0.50 DMIPS
ARM60
Архитектура v3
первая начала
поддерживать
Нет
адресное 32-битное
пространство памяти
(а не 26-битное)
10 MIPS @
ARM600
как ARM60, кэш и
шина сопроцессора
(для сопроцессора
математики с
плавающей запятой
FPA10).
4 КБ общий
28 MIPS @
ARM610
Как ARM60, кэш, без
4 КБ общий
шины сопроцессора.
17 MIPS @
0.65 DMIPS
ARM700
8 КБ общий
40 МГц
ARM2
ARM6
Кэш (I/D)/MMU
В архитектуру 2
добавлена команда
MUL (умножение)
ARMv2
(устаревшая)
ARM3
Функции
ARMv3
(устаревшая)
ARMv3
(устаревшая)
Нет
4 КБ общий
4 MIPS @ 8
0.33 DMIPS
ARM710
Как ARM700
8 КБ общий
40 МГц
ARM710a
Как ARM700
8 КБ общий
40 МГц
0.68 DMIPS
ARM7100
Как ARM710a,
8 КБ общий
интегрированная SoC.
18 МГц
ARM7500
Как ARM710a,
4 КБ общий
интегрированная SoC.
40 МГц
ARM7500FE
Как ARM7500, «FE»
добавлены FPA и
EDO контроллеры
памяти.
56 МГц
0.73 DMIPS
ARM7TDMI(-S)
3-стадийный конвеер,
Нет
режим Thumb
ARM710T
Как ARM7TDMI, кэш
ARM720T
8 КБ общий,
MMU с
расширением
быстрого
Как ARM7TDMI, кэш переключения
контекстов
(англ. Fast
Context Switch
Extension)
ARM740T
As ARM7TDMI, кэш
ARM7EJ-S
5-stage pipeline,
Thumb, Jazelle DBX,
none
усовершенствованные
команды DSP
ARMv4T
ARM7TDMI
ARMv5TEJ
SA-110
4 КБ общий
8 КБ общий,
MMU
15 MIPS @
63 DMIPS @
36 MIPS @
60 MIPS @
MPU
16 KB/16 KB,
MMU
203 MHz
1.0 DMIPS/M
SA-1100
As SA-110,
16 KB/8 KB,
интегрированная SoC MMU
203 MHz
SA-1110
As SA-110,
16 KB/8 KB,
интегрированная SoC MMU
206 MHz
StrongARM ARMv4
ARM8
ARMv4
ARM810[2]
5-stage pipeline, static
branch prediction,
8 KB unified,
double-bandwidth
MMU
memory
ARM9TDMI
5-stage pipeline,
Thumb
ARM920T
16 KB/16 KB,
MMU with FCSE
200 MIPS @
As ARM9TDMI, cache (Fast Context
180 MHz
Switch
Extension)[3]
ARM922T
As ARM9TDMI, кэш
8 KB/8 KB,
MMU
ARM940T
As ARM9TDMI, кэш
4 KB/4 KB, MPU
ARM946E-S
variable, tightly
Thumb, Enhanced DSP
coupled
instructions, caches
memories, MPU
ARM966E-S
Thumb, Enhanced DSP
no cache, TCMs
instructions
ARM968E-S
As ARM966E-S
no cache, TCMs
ARM926EJ-S
Thumb, Jazelle DBX,
Enhanced DSP
instructions
variable, TCMs,
MMU
ARM9TDMI ARMv4T
84 MIPS @
1.16 DMIPS
none
ARMv5TE
ARM9E
ARMv5TEJ
220 MIPS @
200 MHz,
ARMv5TE
ARM10E
ARM996HS
Clockless processor, as no caches, TCMs,
ARM966E-S
MPU
ARM1020E
6-stage pipeline,
32 KB/32 KB,
Thumb, Enhanced DSP
MMU
instructions, (VFP)
ARM1022E
As ARM1020E
ARMv5TE
16 KB/16 KB,
MMU
ARMv5TEJ
ARM1026EJ-S
Thumb, Jazelle DBX,
Enhanced DSP
instructions, (VFP)
variable, MMU
or MPU
I/O Processor, Thumb,
80200/IOP310/IOP315 Enhanced DSP
instructions
80219
400/600 MH
IOP321
600 BogoMi
600 MHz
IOP33x
IOP34x
1-2 core, RAID
Acceleration
PXA210/PXA250
Applications processor,
7-stage pipeline
PXA210: 13
200 MHz, PX
200, 300, and
400 MHz
32KB/32KB,
MMU
PXA255
XScale
32K/32K L1,
512K L2, MMU
400 BogoMi
400 MHz; 37
MIPS @ 400
ARMv5TE
PXA263
200, 300 and
PXA26x
default 400 M
to 624 MHz
PXA27x
Applications processor
32 KB/32 KB,
MMU
800 MIPS @
624 MHz
PXA800(E)F
У PXA31x имеется
PXA3XX (codenamed аппаратный
«Monahans»)
графический
ускоритель
32KB/32KB L1, 800 MIPS @
TCM, MMU
624 MHz
PXA900
Control Plane
Processor
IXC1100
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x
ARM11
ARMv6
ARM1136J(F)-S
[12]
8-stage pipeline,
SIMD, Thumb, Jazelle
variable, MMU
DBX, (VFP), Enhanced
DSP instructions
740 @ 532—
(i.MX31 SoC
528 MHz
Семейство
Cortex
ARMv6T2
ARM1156T2(F)-S
9-stage pipeline,
SIMD, Thumb-2,
variable, MPU
(VFP), Enhanced DSP
instructions
ARMv6KZ
ARM1176JZ(F)-S
As ARM1136EJ(F)-S
ARMv6K
ARM11 MPCore
As ARM1136EJ(F)-S,
variable, MMU
1-4 core SMP
Версия
Архитектуры
Ядро
Функции
variable,
MMU+TrustZone
Кэш (I/D)/MMU
Типичная
MH
Cortex-A5
VFP, NEON, Jazelle
RCT and DBX,
variable (L1),
up to 1500 (1
Thumb-2, 8-stage
MMU+TrustZone DMIPS/MHz
pipeline, 1-4 core SMP
Cortex-A8
VFP, NEON, Jazelle
RCT, Thumb-2, 13stage superscalar
pipeline
ARMv7-A
up to 2000 (2
variable (L1+L2), DMIPS/MHz
MMU+TrustZone from 600 MH
greater than
ARMv7-R
ARMv7-ME
ARMv7-M
Cortex-A9
Application profile,
(VFP), (NEON),
Jazelle RCT and DBX,
MMU+TrustZone 2.5 DMIPS/M
Thumb-2, Out-of-order
speculative issue
superscalar
Cortex-A9 MPCore
10,000 DMIP
2GHz on Per
As Cortex-A9, 1-4 core
MMU+TrustZone Optimized T
SMP
(quad core?)
DMIPS/MHz
Cortex-R4(F)
Embedded profile,
Thumb-2, (FPU)
variable cache,
MPU optional
600 DMIPS
475 MHz
Cortex-M4
(codenamed
«Merlin»)[20]
Microcontroller profile,
both Thumb and
Thumb-2, FPU.
MPU optional.
Hardware MAC, SIMD
and divide instructions.
1.25 DMIPS
Cortex-M3
Microcontroller profile,
Thumb-2 only.
no cache, MPU
Hardware divide
optional.
instruction.
125 DMIPS
100 MHz
Cortex-M0
(codenamed
«Swift»)[21]
Microcontroller profile,
Thumb-2 subset (16-bit
Thumb instructions & No cache.
BL, MRS, MSR, ISB,
DSB, and DMB).
0.9 DMIPS/M
Cortex-M1
FPGA targeted,
Microcontroller profile,
None, tightly
Thumb-2 subset (16-bit
coupled memory
Thumb instructions &
optional.
BL, MRS, MSR, ISB,
DSB, and DMB).
Up to 136 D
170 MHz[28]
DMIPS/MHz
achievable F
dependent)
ARMv6-M
Семейство
Версия
архитектуры
Ядро
Функции
Кэш (I/D)/MMU
Типичная
MH
7. Архитектура
Уже давно существует справочное руководство по архитектуре ARM, которое
разграничивает все типы интерфейсов, которые поддерживает ARM, так как детали
реализации каждого типа процессора могут отличаться. Архитектура развивалась с
течением времени, и начиная с ARMv7 были определены 3 профиля: ‘A’(application) —
приложения, ‘R’(real time) — в реальном времени,’M’(microcontroller) —
микроконтроллер.
Профили могут поддерживать меньшее количество команд (команды определенного
типа).
8. Набор команд
Чтобы сохранить дизайн чистым, простым и быстрым, оригинальное изготовление ARM
было исполнено без микрокода, как и более простой 8-разрядный процессор 6502,
используемый в предыдущих микрокомпьютерах от Acorn.
9. Функции RISC
Архитектура ARM содержит следующие особенности RISC:





Архитектура загрузки/хранения
Нет поддержки нелинейного (не выровненного по словам) доступа к памяти
(теперь поддерживается в процессорах ARMv6 за некоторыми исключениями)
Равномерный 16х32-битный регистровый файл
Фиксированная длина команд (32 бита) для упрощения декодирования за счет
снижения плотности кода. Позднее режим Thumb повысил плотность кода.
Одноцикловое исполнение
Чтобы компенсировать простой дизайн, в сравнении с современными процессорами вроде
Intel 80286 или Motorola 68020 были использованы некоторые особенности дизайна:





Арифметические инструкции заменяют условные коды только когда это
необходимо
32-битное многорегистровое циклическое сдвиговое устройство, которое может
быть использовано без потерь производительности в большинстве арифметических
инструкций и адресных расчетов.
Мощные индексированные адресные режимы
Регистр ссылок для быстрого вызова функций листьев
Простые, но быстрые, с двумя уровнями приоритетов подсистемы прерываний с
включенными банками регистров.
10. Условное исполнение
Одним из существенных отличий архитектуры 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-битового предиката из всех инструкций, кроме
ветвлений.
11. Другие особенности
Другая особенность набора команд это возможность соединять сдвиги и вращения в
инструкции «обработки информации» (арифметическую, логическую, движение регистррегистр) так, что, например выражение С:
a += (j << 2);
может быть преобразовано в команду из одного слова и одного цикла в ARM:
ADD Ra, Ra, Rj, LSL #2
Это приводит к тому, что типичные программы ARM становятся плотнее, чем обычно, с
меньшим доступом к памяти. Таким образом, конвейер используется гораздо более
эффективно. Даже несмотря на то, что ARM работает на скоростях, которые многие бы
сочли низкими, он довольно-таки легко конкурирует с многими более сложными
архитектурами ЦПУ.
ARM процессор также имеет некоторые особенности, редко встречающиеся в других
архитектурах RISC — такие, как адресация относительно счетчика программ (на самом
деле счетчик команд ARM является одним из 16 регистров), а также пре- и постинкрементные режимы адресации.
Другая особенность, которую стоит отметить, это то, что некоторые ранние ARM
процессоры (до ARM7TDMI), например, не имеют команд для хранения 2-байтных чисел.
Таким образом, строго говоря, для них невозможно сгенерировать эффективный код,
который бы вел себя так, как ожидается от объектов С, типа «volatile int16_t».
12. Конвейер и другие аспекты реализации
ARM7 и более ранние версии имеют трехступенчатый конвейер. Это ступени переноса,
декодирования и исполнения. Более производительные архитектуры, типа ARM9, имеют
более сложные конвейеры. Cortex-a8 имеет 13-ступенчатый конвейер.
13. Сопроцессоры
Архитектура предоставляет способ расширения набора команд, используя сопроцессоры,
которые могут быть адресованы, используя MCR, MRC, MRRC, MCRR и похожие
команды. Пространство сопроцессора логически разбито на 16 сопроцессоров с номерами
от 0 до 15, причем 15й зарезервирован для некоторых типичных функций управления,
типа управления кэш-памятью и MMUоперации (на процессорах, в которых они есть).
В машинах на основе ARM периферийные устройства обычно подсоединяются к
процессору путем сопоставления их физических регистров в памяти ARM или в памяти
сопроцессора, или путем присоединения к шинам, которые в свою очередь
подсоединяются к процессору. Доступ к сопроцессорам имеет большее время ожидания,
поэтому некоторые периферийные устройства проектируются для доступа в обоих
направлениях. В остальных случаях разработчики чипов лишь пользуются механизмом
интеграции сопроцессора. Например, движок обработки изображений должен состоять из
малого ядра ARM7TDMI, совмещенного с сопроцессором, который поддерживает
примитивные операции по обработке элементарных кодировок HDTV.
14. Большой палец/Тумба (Thumb)
Для улучшения компилируемой плотности кода, процессоры, начиная с ARM7TDMI,
снабжены режимом «тумбы» — в оригинале обыграны слова «arm» (рука) и «thumb»
(большой палец). В этом режиме процессор выполняет 16-разрядные команды.
Большинство из этих 16-разрядных команд тумбы переводятся в нормальные команды
ARM. Экономия пространства происходит за счет сокрытия некоторых операндов и
ограничения возможностей по сравнению с режимом полного набора команд ARM.
В режиме тумбы меньшие коды операций обладают меньшей функциональностью.
Например, только ветвления могут быть условными, и многие коды операций имеют
ограничение на доступ только к половине главных регистров процессора. Более короткие
коды операций в целом дают большую плотность кода, хотя некоторые операции требуют
дополнительных команд. В ситуациях, когда порт памяти или ширина шины ограничены
32 битами, более короткие коды операций режима тумбы становятся гораздо
производительнее по сравнению с обычным 32-битным ARM кодом, так как меньший
программный код придется загружать в процессор при ограниченной пропускной
способности памяти.
Аппаратные средства типа Game Boy Advance, как правило, имеют небольшой объем
оперативной памяти доступной с полным 32-битным информационным каналом. Но
большинство операций выполняется через 16-битный или более узкий информационный
канал. В этом случае имеет смысл использовать тумбовый код и вручную оптимизировать
некоторые интенсивные для ЦПУ секции, используя полные 32-битные инструкции ARM.
Первым процессором с декодером тумбовых команд был ARM7TDMI. Все процессоры
семейства ARM9, а также XScale, имели встроенный декодер тумбовых команд.
15. Отладка
Все современные процессоры ARM включают аппаратные средства отладки, так как без
них отладчики ПО не смогли бы выполнить самые базовые операции типа остановки,
отступа, установка контрольных точек после перезагрузки.
Архитектура ARMv7 определяет базовые средства отладки на архитектурном уровне. К
ним относятся точки останова, точки просмотра и выполнение команд в режиме отладки.
Такие средства были также доступны с модулем отладки EmbeddedICE. Поддерживаются
оба режима — остановки и обзора. Реальный транспортный механизм, который
используется для доступа к средствам отладки, не специфицирован архитектурно, но
реализация, как правило, включает поддержку JTAG.
Существует отдельная архитектура отладки «с обзором ядра», которая не требуется
архитектурно процессорами ARMv7.
16. Jazelle
Jazelle — это метод, который позволяет байткоду Java исполняться прямо в архитектуре
ARM в качестве 3го состояния исполнения (и набора команд) наряду с обычными
командами ARM и режимом бегунка. Поддержка этого свойства обозначается буквой «J»
в названии процессора — например, ARMv5TEJ. Необходимость такой поддержки
появляется начиная с процессоров ARMv6, хотя новые ядра лишь содержат тривиальные
реализации, которые не поддерживают аппаратного ускорения.
17. 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. Это требует осторожности и использования новой команды ifthen, которая поддерживает исполнение до 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, а некоторые чипы, вроде Cortexm3, поддерживают только Thumb-2. Остальные чипы Cortex и ARM11 поддерживают
наборы команд как Thumb-2, так и ARM.
18. Усовершенствованный 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 операций
единовременно.
19. VFP
Технология VFP (Vector Floating Point, вектора чисел с плавающей запятой) — это
расширение сопроцессора в архитектуре ARM. Она производит низкозатратные
вычисления над числами с плавающей запятой одинарной двойной точности, в полной
мере соответствующие стандарту ANSI/IEEE Std 754—1985 Standard for Binary FloatingPoint Arithmetic.VFP производит вычисления с плавающей точкой, подходящие для
широкого спектра приложений — например, для КПК, смартфонов, сжатие звука, 3дграфики и цифрового звука, а также принтеров и телеприставок. Архитектура VFP также
поддерживает исполнение коротких векторных команд. Но, поскольку процессор
выполняет операции последовательно над каждым элементом вектора, то VFP нельзя
назвать истинным SIMD набором инструкций. Этот режим может быть полезен в графике
и приложениях обработки сигнала, так как он позволяет уменьшить размер кода и
выработку команд.
Другие сопроцессоры с плавающей точкой и/или SIMD, находящиеся в ARM процессорах
включают в себя FPA, FPE, iwMMXt. Они обеспечивают ту же функциональность, что и
VFP, но не совместимы с ним на уровне опкода.
20. Расширения безопасности
Расширения безопасности, позиционируемые как TrustZone Technology, находятся в
ARMv6KZ и других, более поздних, профилированных на приложениях архитектурах.
Оно обеспечивает низкозатратную альтернативу добавлению специального ядра
безопасности, обеспечивая 2 виртуальных процессора, поддерживаемых аппаратным
контролем доступа. Это позволяет ядру приложения переключаться между двумя
состояниями, называемыми «миры» (чтобы избежать путаницы с названиями возможных
доменов), чтобы не допустить утечку информации из более важного мира в менее важный.
Этот переключатель миров обычно ортогонален всем другим возможностям процессора.
Таким образом, каждый мир может работать независимо от других миров, используя одно
и то же ядро. Память и периферия соответственно изготавливаются с учетом особенностей
мира ядра, и могут использовать это, чтобы получить контроль доступа к секретам и
кодам ядра. Типичные приложения TrustZone Technology должны запускать полноценную
операционную систему в менее важном мире, и компактный, специализированный на
безопасности, код в более важном мире, позволяя Digital Rights Management’у намного
точнее контролировать использование медиа на устройствах на базе ARM, и
предотвращая несанкционированный доступ к устройству.
На практике же, так как конкретные детали реализации TrustZone остаются
собственностью компании и не разглашаются, остается неясным, какой уровень
безопасности гарантируется для данной модели угрозы.
21. ARM лицензиаты и приблизительная стоимость
лицензии
ARM не производит и не продает процессоры, сделанные по своим разработкам, но зато
дает лицензии на процессоры заинтересованным партнерам. ARM предлагает широкий
выбор условий лицензирования, различающихся по стоимости и деталям. Для всех
владельцев лицензии ARM поставляет описание аппаратной части ядра, а также полный
набор средств разработки программного обеспечения (компилятор, отладчик), а также
право продавать произведенные процессоры ARM. Некоторые клиенты занимаются
производством процессоров для сторонних компаний.
Годовой отчет ARM за 2006 год сообщает что в результате лицензирования 2,5
миллиардов единиц (процессоров) был выручен 161 миллион долларов. Это эквивалентно
0.067 доллара за единицу. Однако это очень усредненный показатель — ведь сюда входят
и лицензии на очень дорогие новейшие процессоры, и старые дешевые процессоры.
22. Регистры
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. Тем
самым фиксируется состояние процессора (режим, состояние; флаги арифметических,
логических операций, разрешения прерываний) на момент непосредственно перед
прерыванием.[31]
23. Работа с памятью
24. Поддерживаемые системы ввода-вывода
В большинстве существующих моделей микропроцессоров реализована шина PCI и
возможность работы с внешней динамической оперативной памятью (DRAM). В
процессорах, предназначенных для потребительских устройств, также обычно
интегрируются: контроллеры шин USB, IIC, AC’97-совместимое звуковое устройство,
устройство для работы с флэш-носителями стандарта SD и MMC, контроллер
последовательного порта.
Все процессоры имеют линии ввода-вывода общего назначения (GPIO). В
потребительских устройствах к ним могут быть подключены кнопки «быстрого запуска»,
сигнальные светодиоды, колесо прокрутки (JogDial), клавиатура.
25. Процесс запуска ОС на ARM-машинах
26. Поддержка Unix-подобными системами
Архитектура ARM поддерживается Unix и Unix-подобными ОС GNU/Linux, BSD, QNX,
Plan 9, Inferno, Solaris, iPhone OS, WebOS и Android.
26.1. Linux
Следующие дистрибутивы Linux поддерживают процессоры ARM:

















ALT Linux[32]
Ångström
Chrome OS
Debian[33]
ELinOS[34]
Fedora[35]
Gentoo[36]
GoboLinux[37]
iPodLinux
Maemo
MeeGo
MontaVista[38]
Slackware[39]
T2 SDE[40]
Ubuntu[41][42]
webOS
Wind River Linux[43]
26.2. BSD
Следующие производные от BSD поддерживают процессоры ARM:





RISC iX (Acorn ARM2/ARM3-based systems only)
FreeBSD[44]
NetBSD[45]
OpenBSD[46]
iOS
26.3. Solaris

OpenSolaris[47]
26.4. Поддержка других операционных систем
Операционные системы, которые работают на ARM: ReactOS[48][49], FreeRTOS, Nucleus,
Symbian OS, Windows CE, RISC OS, Windows 8[50], .NET Micro Framework
Примечания
1. Intel News Release → Marvell To Purchase Intel’s Communications And Application
Processor Business For $600 Million www.intel.com/pressroom/archive/releases/20060627corp.htm (англ.). Intel (27 июня
2006).
2. «ARM810 — Dancing to the Beat of a Different Drum» www.hotchips.org/archives/hc8/2_Mon/HC8.S4/HC8.4.1.pdf ARM Holdings
presentation at Hot Chips 1996-08-07.
3. Register 13, FCSE PID register infocenter.arm.com/help/topic/com.arm.doc.ddi0151c/I47491.html ARM920T Technical
Reference Manual
4. Neo1973: GTA01Bv4 versus GTA02 comparison wiki.openmoko.org/wiki/Neo1973:_GTA01Bv4_versus_GTA02_comparison.
5. S3C2410 - elink28.
6. Rockbox Samsung SA58xxx series www.rockbox.org/twiki/bin/view/Main/SamsungSA58.
7. Rockbox Meizu M6 Port – Hardware Information www.rockbox.org/twiki/bin/view/Main/MeizuM6Port.
8. Datasheets — Magic Lantern Firmware Wiki - magiclantern.wikia.com/wiki/Datasheets
9. STR9 – STR912 – STR912FW44 microcontroller – documents and files download page mcu.st.com/mcu/modules.php?name=mcu&file=devicedocs&DEV=STR912FW44&FA
M=101. Mcu.st.com.
10. Starlet - wiibrew.org/wiki/Starlet.
11. Benchmarks – Albatross - www.albatross-uav.org/index.php/Benchmarks. Albatrossuav.org (2005-06-18).
12. ARM1136J(F)-S – ARM Processor - www.arm.com/products/CPUs/ARM1136JFS.html. Arm.com.
13. Qualcomm chips kernel ARM - from phones to laptops - xi0.info/qualcomm-chipskernel-arm-phones_7000.html. xi0.info.
14. Qualcomm MSM7227 RISC Chipset pdadb.net/index.php?m=cpu&id=a7227&c=qualcomm_msm7227. pdadb.net.
15. GoForce 6100 - www.nvidia.com/page/goforce_6100.html. Nvidia.com.
16. Samsung S3C6410 and S3C6430 Series ARM Proccessors www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&partnu
m=S3C6410. Samsung. , and the Qualcomm MSM7627 as seen in the Palm Pixi and
Motorola Calgary/Devour
17. Merrit, Rick "ARM stretches out with A5 core, graphics, FPGAs" www.eetimes.com/showArticle.jhtml?articleID=220700447. EE Times (2009-10-21).
18. Clarke, Peter ARM tips plans for Swift and Sparrow processor cores www.eetimes.com/news/semi/rss/showArticle.jhtml?articleID=213000665&cid=RSSfeed
_eetimes_semiRSS. EE Times (2009-02-03).
19. Segan, Sascha ARM's Multicore Chips Aim for Netbooks www.pcmag.com/article2/0,2817,2341032,00.asp. PC Magazine (2009-04-09).
20. Benz, Benjamin Cortex Nachwuchs bei ARM www.heise.de/newsticker/meldung/Cortex-Nachwuchs-bei-ARM-936412.html. Heise.de
(2010-02-02).
21. Clarke, Peter ARM preps tiny core for low-power microcontrollers www.eetimes.com/news/design/rss/showArticle.jhtml?articleID=214502333. EE Times
(2009-02-23).
22. Walko, John NXP first to demo ARM Cortex-M0 silicon www.eetimes.com/news/design/rss/showArticle.jhtml?articleID=216200026. EE Times
(2009-03-23).
23. ARM Powered VCAs " Triad Semiconductor - www.triadsemi.com/services/armpowered-vcas/
24. Cortex-M0 used in low power touch controller — 10/06/2009 — Electronics Weekly www.electronicsweekly.com/Articles/2009/06/10/46252/cortex-m0-used-in-low-powertouch-controller.htm
25. Chungbuk Technopark Chooses ARM Cortex-M0 Processor - www.designreuse.com/news/22137/arm-cortex-m0-processor.html
26. Google Translate - translate.google.co.uk/translate?hl=en&sl=zhTW&u=http://www.nuvoton.com/hq/enu/NewsAndEvents/News/MediaCoverage/200910
05.htm
27. Austriamicrosystems Chooses ARM Cortex-M0 Processor For Mixed Signal
Applications - www10.edacafe.com/nbc/articles/view_article.php?articleid=752000
28. «ARM Extends Cortex Family with First Processor Optimized for FPGA» www.arm.com/news/17017.html, ARM press release, March 19, 2007. Retrieved April
11, 2007.
29. «ARM Cortex-M1» - www.arm.com/products/CPUs/ARM_Cortex-M1.html, ARM
product website. Retrieved April 11, 2007.
30. ARM Extends Cortex Family with First Processor Optimized for FPGA www.arm.com/news/17017.html.
31. ARM7TDMI (rev 3) Technical Reference Manual infocenter.arm.com/help/topic/com.arm.doc.ddi0029g/DDI0029.pdf (англ.).
32. ALT Linux поддерживает архитектуру ARM - www.altlink28 (2010-07-28).
33. Debian GNU/Linux on ARM - www.debian.org/ports/arm/.
34. ELinOS supported boards - www.sysgo.com/products/board-support-packages/elinos/.
35. Architectures/ARM - fedoraproject.org/wiki/Architectures/ARM.
36. Gentoo Linux ARM Development - www.gentoo.org/proj/en/base/arm/index.xml.
37. New release for ARM cpus - lists.gobolink28 (2007-01-25).
38. Platform Support for MontaVista Linux - www.mvista.com/boards.php.
39. Slackware Linux for ARM - www.armedslack.org/.
40. T2 SDE - www.t2-project.org/.
41. Ubuntu on Arm - www.ubuntu.com/products/whatisubuntu/arm. Canonical Ltd. (2009).
42. ARM.
43. Wind River - Board Support Packages windriver.com/products/bsp_web/bsp_platform.html?platform=Wind River link28.
44. FreeBSD/ARM Project - www.freelink29.
45. Hardware supported by NetBSD - www.netlink29.
46. OpenBSD/armish - www.openlink29.
47. OpenSolaris Project: ARM Platform Port - www.openlink30. Sun Microsystems.
48. ARM Port — ReactOS - www.reactos.org/wiki/ARM_Port
49. ReactOS Portable Systems Group — ReactOS www.reactos.org/ReactOS_Portable_Systems_Group
50. CES 2011: Windows 8 получит поддержку процессоров ARM soft.compulenta.ru/586446/
Download