Shvsmizmailovo.ru

Анапестический ресурс

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

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

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

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

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

Значимые семейства процессоров: ARM7, ARM9, ARM11 и Cortex. Многие лицензиаты делают собственные версии ядер на базе ARM: DEC StrongARM, Freescale i.MX, Intel XScale, NVIDIA Tegra, ST-Ericsson Nomadik, Qualcomm Snapdragon, Texas Instruments OMAP, Samsung Hummingbird и Apple A4/A5.

Содержание

История

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

Компании была нужна совершенно новая архитектура после того, как она протестировала все доступные ей процессоры и сочла их неэффективными. 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[источник не указан 422 дня]. У его преемника — процессора ARM3 — уже был кэш 4 кб, что еще больше увеличило производительность.

Apple, DEC, Intel: ARM6, StrongARM, XScale

В конце 1990-х годов 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. Intel позднее разработал свою версию ядра под торговой маркой XScale, которую они впоследствии продали компании Marvell.

Рост патентования

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

Под лицензией ARM к 2005 году было произведено около 1,6 миллиардов ядер. В 2005 году около миллиарда ядер ARM пошло на мобильные телефоны. По состоянию на январь 2008 года было произведено более 10 миллиардов ядер, а iSuppli прогнозирует, что к 2011 году будут производиться 5 миллиардов ядер ежегодно.[источник не указан 422 дня]

Современные смартфоны, КПК и другие портативные устройства используют в основном версию ядра ARMv5. Процессоры XScale и ARM926 (ARMv5TE) сейчас более многочисленны в высокотехничных устройствах, чем, например, процессоры StrongARM и процессоры ARMv4 на базе ARM9TDMI и ARM7TDMI[источник не указан 422 дня], но менее сложные приборы могут использовать старые версии с меньшей лицензионной стоимостью. Процессоры ARMv6 по своей производительности на голову выше, чем стандартные ARMv5.[источник не указан 422 дня] Cortex-A создан специально для смартфонов, которые раньше использовали ARM9 и ARM11. Cortex-R созданы для приложений, работающих в реальном времени, а Cortex-M — для микроконтроллеров.

В 2009 году некоторые производители представили нетбуки, работающие на процессорах с архитектурой ARM, которые станут прямыми конкурентами нетбуков на основе Intel Atom.

Процессоры ARM

Семейство Версия архитектуры Ядро Функции Кэш (I/D)/MMU Типичная MIPS @ МГц Использование
ARM1 ARMv1 (устаревшая) ARM1 Нет ARM Evaluation System 2й процессор BBC Micro
ARM2 ARMv2 (устаревшая) ARM2 В архитектуру 2 добавлена команда MUL (умножение) Нет 4 MIPS @ 8 МГц
0.33 DMIPS/МГц
Acorn Archimedes, Chessmachine
ARMv2a (устаревшая) ARM250 Встроенный MEMC (MMU), графический процессор. В архитектуру 2 добавлены команды SWP и SWPB (swap). Нет, MEMC1a 7 MIPS @ 12 МГц Acorn Archimedes
ARM3 ARMv2a (устаревшая) ARM2a Первое использование кэша на процессоре ARM. 4 КБ общий 12 MIPS @ 25 МГц
0.50 DMIPS/МГц
Acorn Archimedes
ARM6 ARMv3 (устаревшая) ARM60 Архитектура v3 первая начала поддерживать адресное 32-битное пространство памяти (а не 26-битное) Нет 10 MIPS @ 12 МГц 3DO Interactive Multiplayer, Zarlink GPS Receiver
ARM600 как ARM60, кэш и шина сопроцессора (для сопроцессора математики с плавающей запятой FPA10). 4 КБ общий 28 MIPS @ 33 МГц
ARM610 Как ARM60, кэш, без шины сопроцессора. 4 КБ общий 17 MIPS @ 20 МГц
0.65 DMIPS/МГц
Acorn Risc PC 600, Apple Newton 100 series
ARM7 ARMv3 (устаревшая) ARM700 8 КБ общий 40 МГц Acorn Risc PC прототип карты CPU
ARM710 Как ARM700 8 КБ общий 40 МГц Acorn Risc PC 700
ARM710a Как ARM700 8 КБ общий 40 МГц
0.68 DMIPS/МГц
Acorn Risc PC 700, Apple eMate 300
ARM7100 Как ARM710a, интегрированная SoC. 8 КБ общий 18 МГц Psion Series 5
ARM7500 Как ARM710a, интегрированная SoC. 4 КБ общий 40 МГц Acorn A7000
ARM7500FE Как ARM7500, «FE» добавлены FPA и EDO контроллеры памяти. 4 КБ общий 56 МГц
0.73 DMIPS/МГц
Acorn A7000+ Network Computer
ARM7TDMI ARMv4T ARM7TDMI(-S) 3-стадийный конвейер, режим Thumb Нет 15 MIPS @ 16.8 МГц
63 DMIPS @ 70 МГц
LH754xx, CoreMP7
ARM710T Как ARM7TDMI, кэш 8 КБ общий, MMU 36 MIPS @ 40 МГц Psion Series 5mx, Psion Revo/Revo Plus/Diamond Mako
ARM720T Как ARM7TDMI, кэш 8 КБ общий, MMU с расширением быстрого переключения контекстов (англ. Fast Context Switch Extension) 60 MIPS @ 59.8 МГц LH7952x
ARM740T As ARM7TDMI, кэш MPU
ARMv5TEJ ARM7EJ-S 5-stage pipeline, Thumb, Jazelle DBX, усовершенствованные команды DSP none
StrongARM ARMv4 SA-110 16 KB/16 KB, MMU 203 MHz
1.0 DMIPS/MHz
Apple Newton 2x00 series, Acorn Risc PC, Rebel/Corel Netwinder, Chalice CATS
SA-1100 As SA-110, интегрированная SoC 16 KB/8 KB, MMU 203 MHz Psion netBook
SA-1110 As SA-110, интегрированная SoC 16 KB/8 KB, MMU 206 MHz LART (computer), Intel Assabet, Ipaq H36x0, Balloon2, Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 series, Palm Zire 31
ARM8 ARMv4 ARM810[1] 5-stage pipeline, static branch prediction, double-bandwidth memory 8 KB unified, MMU 84 MIPS @ 72 MHz
1.16 DMIPS/MHz
Acorn Risc PC прототип карты CPU
ARM9TDMI ARMv4T ARM9TDMI 5-stage pipeline, Thumb none
ARM920T As ARM9TDMI, cache 16 KB/16 KB, MMU with FCSE (Fast Context Switch Extension)[2] 200 MIPS @ 180 MHz Armadillo, Atmel AT91SAM9, GP32, GP2X (first core), Tapwave Zodiac (Motorola i. MX1), Hewlett Packard HP-49/50 Calculators, Sun SPOT, Cirrus Logic EP9302, EP9307, EP9312, EP9315, Samsung S3C2442 (HTC TyTN, FIC Neo FreeRunner[3]), Samsung S3C2410 (TomTom navigation devices)[4]
ARM922T As ARM9TDMI, кэш 8 KB/8 KB, MMU LH7A40x
ARM940T As ARM9TDMI, кэш 4 KB/4 KB, MPU GP2X (второе ядро), Meizu M6 Mini Player[5][6]
ARM9E ARMv5TE ARM946E-S Thumb, Enhanced DSP instructions, caches variable, tightly coupled memories, MPU Nintendo DS, Nokia N-Gage, Canon PowerShot A470, Canon EOS 5D Mark II[7], Conexant 802.11 chips, Samsung S5L2010
ARM966E-S Thumb, Enhanced DSP instructions no cache, TCMs ST Micro STR91xF, includes Ethernet[8]
ARM968E-S As ARM966E-S no cache, TCMs LPC2900
ARMv5TEJ ARM926EJ-S Thumb, Jazelle DBX, Enhanced DSP instructions variable, TCMs, MMU 220 MIPS @ 200 MHz, Mobile phones: LPC3000, GPH Wiz, NEC C10046F5-211-PN2-A SoC — undocumented core in the ATi Hollywood graphics chip used in the Wii,[9] Samsung S3C2412 used in Squeezebox Duet's Controller. Squeezebox Radio; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live (NAS); Telechips TCC7801, TCC7901;ZiiLABS' ZMS-05 system on a chip; Western Digital MyBook I World Edition.
ARMv5TE ARM996HS Clockless processor, as ARM966E-S no caches, TCMs, MPU
ARM10E ARMv5TE ARM1020E 6-stage pipeline, Thumb, Enhanced DSP instructions, (VFP) 32 KB/32 KB, MMU
ARM1022E As ARM1020E 16 KB/16 KB, MMU
ARMv5TEJ ARM1026EJ-S Thumb, Jazelle DBX, Enhanced DSP instructions, (VFP) variable, MMU or MPU Western Digital MyBook II World Edition;Conexant so4610 and so4615 ADSL SoC
XScale ARMv5TE 80200/IOP310/IOP315 I/O Processor, Thumb, Enhanced DSP instructions
80219 400/600 MHz Thecus N2100
  • Процессор Intel 80219 включает высокоскоростное 32-разрядное ядро XScale с частотой 400 или 600 МГц с 64-разрядным интерфейсом PCI-X, контроллер памяти DDR SDRAM с частотой 200 МГц и кодом коррекции ошибок ECC, а также возможность поддержки до 1 ГБ 64-разрядной памяти типа DDR SDRAM. В этом процессоре также имеется программируемая 32-разрядная внутренняя шина, которая обеспечивает гибкое соединение с периферийными компонентами не в стандарте PCI, включая специализированные интегральные схемы, устройства флэш-памяти, а также процессоры обработки цифровых сигналов.
  • Шина PCI/ PCI-X позволяет также подключать такие периферийные устройства, как гигабитные контроллеры Ethernet.
IOP321 600 BogoMips @ 600 MHz Iyonix
IOP33x
IOP34x 1-2 core, RAID Acceleration 32K/32K L1, 512K L2, MMU
PXA210/PXA250 Applications processor, 7-stage pipeline PXA210: 133 and 200 MHz, PXA250: 200, 300, and 400 MHz Zaurus SL-5600, iPAQ H3900, Sony CLIÉ NX60, NX70V, NZ90
PXA255 32KB/32KB, MMU 400 BogoMips @ 400 MHz; 371—533 MIPS @ 400 MHz[10] Gumstix basix & connex, Palm Tungsten E2, Zaurus SL-C860, Mentor Ranger & Stryder, iRex ILiad
PXA263 200, 300 and 400 MHz Sony CLIÉ NX73V, NX80V
PXA26x default 400 MHz, up to 624 MHz Palm Tungsten T3
PXA27x Applications processor 32 KB/32 KB, MMU 800 MIPS @ 624 MHz «Trizeps-Modules» PXA270 COM, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50, and x51 series, Motorola Q, Balloon3, Trolltech Greenphone, Palm TX, Motorola Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Toshiba Portégé G900, Trēo 650-755p, Zipit Z2, HP iPaq 614c Business Navigator.
PXA800(E)F
PXA3XX (codenamed «Monahans») У PXA31x имеется аппаратный графический ускоритель 32KB/32KB L1, TCM, MMU 800 MIPS @ 624 MHz Highscreen alex
PXA900 Blackberry 8700, Blackberry Pearl (8100)
IXC1100 Control Plane Processor
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x NSLU2 IXP460/IXP465
ARM11 ARMv6 ARM1136J(F)-S[11] 8-stage pipeline, SIMD, Thumb, Jazelle DBX, (VFP), Enhanced DSP instructions variable, MMU 740 @ 532—665 MHz (i.MX31 SoC), 400—528 MHz Texas Instruments [1], Nokia N800, Nokia N810, Qualcomm MSM7200 (with integrated ARM926EJ-S Coprocessor@274 MHz, used in Eten Glofiish, HTC TyTN II, HTC Nike), Freescale i.MX31 (used in the original Zune 30gb and Toshiba Gigabeat S), Freescale MXC300-30 (Nokia E63, Nokia E71, Nokia E72, Nokia 5800, Nokia E51, Nokia 6700 Classic, Nokia 6120 Classic, Nokia 6210 Navigator, Nokia 6220 Classic, Nokia 6290, Nokia 6710 Navigator, Nokia 6720 Classic, Nokia E75, Nokia N97, Nokia N81), Qualcomm MSM7201A as seen in the HTC Dream, HTC Magic, Motorola ZN5, Motorola E8, Motorola VE66, Motorola Z6, HTC Hero, & Samsung SGH-i627 (Propel Pro), Qualcomm MSM7227 used in ZTE Link, HTC Legend, HTC Wildfire S, LG P500, LG GT540,[12][13]
ARMv6T2 ARM1156T2(F)-S 9-stage pipeline, SIMD, Thumb-2, (VFP), Enhanced DSP instructions variable, MPU
ARMv6KZ ARM1176JZ(F)-S As ARM1136EJ(F)-S variable, MMU+TrustZone Apple iPhone (original and 3G), Apple iPod touch (1st and 2nd Generation), Conexant CX2427X, Motorola RIZR Z8, Motorola RIZR Z10, NVIDIA GoForce 6100[14]; Mediatek MT6573[15]; Telechips TCC9101, TCC9201, TCC8900, Fujitsu MB86H60, Samsung S3C6410 (e.g. Samsung Moment), S3C6430[16]
ARMv6K ARM11 MPCore As ARM1136EJ(F)-S, 1-4 core SMP variable, MMU Nvidia APX 2500
Семейство Версия Архитектуры Ядро Функции Кэш (I/D)/MMU Типичная MIPS @ MHz Приложения
Cortex ARMv7-A Cortex-A5 VFP, NEON, Jazelle RCT and DBX, Thumb-2, 8-stage pipeline, 1-4 core SMP variable (L1), MMU+TrustZone up to 1500 (1.5 DMIPS/MHz) «Sparrow» (ARM code name)[17][18][19]
Cortex-A8 VFP, NEON, Jazelle RCT, Thumb-2, 13-stage superscalar pipeline variable (L1+L2), MMU+TrustZone up to 2000 (2.0 DMIPS/MHz in speed from 600 MHz to greater than 1 GHz) Texas Instruments OMAP3xxx series, SBM7000, Oregon State University OSWALD, Gumstix Overo Earth, Pandora, Apple iPhone 3GS, Apple iPod touch (3rd Generation), Apple iPad (Apple A4 processor), Apple iPhone 4 (Apple A4 processor), Archos 5, Archos 101, FreeScale i.MX51-SOC, BeagleBoard, Motorola Droid, Motorola Droid X, Palm Pre, Samsung Omnia HD, Samsung Wave S8500, Nexus S, Sony Ericsson Satio, Touch Book, Nokia N900, Meizu M9, ZiiLABS ZMS-08 system on a chip.
Cortex-A9 Application profile, (VFP), (NEON), Jazelle RCT and DBX, Thumb-2, Out-of-order speculative issue superscalar MMU+TrustZone 2.5 DMIPS/MHz Apple iPhone 4S, Apple iPad 2 (Apple A5)
Cortex-A9 MPCore As Cortex-A9, 1-4 core SMP MMU+TrustZone 10,000 DMIPS @ 2 GHz on Performance Optimized TSMC 40G (quad core?) (2.5 DMIPS/MHz per core) Texas Instruments OMAP4430/4440, ST-Ericsson U8500, Nvidia Tegra2, Samsung Exynos 4210
ARMv7-R Cortex-R4(F) Embedded profile, Thumb-2, (FPU) variable cache, MPU optional 600 DMIPS @ 475 MHz Broadcom is a user, TMS570 from Texas Instruments
ARMv7-ME Cortex-M4 (codenamed «Merlin»)[20] Microcontroller profile, both Thumb and Thumb-2, FPU. Hardware MAC, SIMD and divide instructions. MPU optional. 1.25 DMIPS/MHz NXP Semiconductors
ARMv7-M Cortex-M3 Microcontroller profile, Thumb-2 only. Hardware divide instruction. no cache, MPU optional. 125 DMIPS @ 100 MHz Stellaris microcontroller family, STM32, LPC1700, TMPM330FDFG, EasyBCU, SmartFusion, [2]
ARMv6-M Cortex-M0 (codenamed «Swift»)[21] Microcontroller profile, Thumb-2 subset (16-bit Thumb instructions & BL, MRS, MSR, ISB, DSB, and DMB). No cache. 0.9 DMIPS/MHz NXP LPC1100[3]
Cortex-M1 FPGA targeted, Microcontroller profile, Thumb-2 subset (16-bit Thumb instructions & BL, MRS, MSR, ISB, DSB, and DMB). None, tightly coupled memory optional. Up to 136 DMIPS @ 170 MHz[28] (0.8 DMIPS/MHz,[29] MHz achievable FPGA-dependent) Actel ProASIC3, ProASIC3L, IGLOO and Fusion PSC devices, Altera Cyclone III, other FPGA products are also supported e.g. Synplicity

[30]

Семейство Версия архитектуры Ядро Функции Кэш (I/D)/MMU Типичная MIPS @ MHz Приложения

Архитектура

Уже давно существует справочное руководство по архитектуре ARM, которое разграничивает все типы интерфейсов, которые поддерживает ARM, так как детали реализации каждого типа процессора могут отличаться. Архитектура развивалась с течением времени, и начиная с ARMv7 были определены 3 профиля: ‘A’(application) — приложения, ‘R’(real time) — в реальном времени,’M’(microcontroller) — микроконтроллер.

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

Режимы

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

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

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

Набор команд

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

Набор команд ARM

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

Набор команд Thumb

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

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

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

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

Набор команд 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 и режимом бегунка. Поддержка этого свойства обозначается буквой «J» в названии процессора — например, ARMv5TEJ. Необходимость такой поддержки появляется начиная с процессоров ARMv6, хотя новые ядра лишь содержат тривиальные реализации, которые не поддерживают аппаратного ускорения.

Функции RISC

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

  • Архитектура загрузки/хранения
  • Нет поддержки нелинейного (не выровненного по словам) доступа к памяти (теперь поддерживается в процессорах ARMv6 за некоторыми исключениями)
  • Равномерный 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. Тем самым фиксируется состояние процессора (режим, состояние; флаги арифметических, логических операций, разрешения прерываний) на момент непосредственно перед прерыванием.[31]

Работа с памятью

Поддерживаемые системы ввода-вывода

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

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

Процесс запуска ОС на ARM-машинах

Поддержка Unix-подобными системами

Архитектура ARM поддерживается Unix и Unix-подобными ОС GNU/Linux, BSD, QNX, Plan 9, Inferno, Solaris, MacOS, iPhone OS, WebOS и Android.

Linux

Следующие дистрибутивы Linux поддерживают процессоры ARM:

BSD

Следующие производные от BSD поддерживают процессоры ARM:

Solaris

Поддержка других операционных систем

Операционные системы, которые работают на ARM: ReactOS[48][49], FreeRTOS, Nucleus, Symbian OS, Windows CE, RISC OS, Windows 8[50], .NET Micro Framework

ARM лицензиаты и приблизительная стоимость лицензии

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

Годовой отчет ARM за 2006 год сообщает что в результате лицензирования 2,5 миллиардов единиц (процессоров) был выручен 161 миллион долларов. Это эквивалентно 0.067 доллара за единицу. Однако это очень усредненный показатель — ведь сюда входят и лицензии на очень дорогие новейшие процессоры, и старые дешевые процессоры.

Примечания

  1. «ARM810 — Dancing to the Beat of a Different Drum» ARM Holdings presentation at Hot Chips 1996-08-07.
  2. Register 13, FCSE PID register ARM920T Technical Reference Manual
  3. Neo1973: GTA01Bv4 versus GTA02 comparison. Проверено 15 ноября 2007.
  4. S3C2410. Проверено 13 января 2010.
  5. Rockbox Samsung SA58xxx series. Проверено 22 февраля 2008.
  6. Rockbox Meizu M6 Port – Hardware Information. Проверено 22 февраля 2008.
  7. Datasheets — Magic Lantern Firmware Wiki
  8. STR9 – STR912 – STR912FW44 microcontroller – documents and files download page. Mcu.st.com. Проверено 18 апреля 2009.
  9. Starlet.
  10. Benchmarks – Albatross. Albatross-uav.org (18 июня 2005). Проверено 18 апреля 2009.
  11. ARM1136J(F)-S – ARM Processor. Arm.com. Проверено 18 апреля 2009.
  12. Qualcomm chips kernel ARM - from phones to laptops. xi0.info. Проверено 8 мая 2010.
  13. Qualcomm MSM7227 RISC Chipset. pdadb.net. Проверено 8 мая 2010.
  14. GoForce 6100. Nvidia.com. Проверено 18 апреля 2009.
  15. Mediatek MT6573. http://www.mediatek.com.&#32;Проверено 18 апреля 2009.
  16. Samsung S3C6410 and S3C6430 Series ARM Proccessors. Samsung. Проверено 8 октября 2009., and the Qualcomm MSM7627 as seen in the Palm Pixi and Motorola Calgary/Devour
  17. "ARM stretches out with A5 core, graphics, FPGAs". EE Times (21 октября 2009). Проверено 28 октября 2009.
  18. ARM tips plans for Swift and Sparrow processor cores. EE Times (3 февраля 2009). Проверено 18 апреля 2009.
  19. ARM's Multicore Chips Aim for Netbooks. PC Magazine (9 апреля 2009). Проверено 18 апреля 2009.
  20. Cortex Nachwuchs bei ARM. Heise.de (2 февраля 2010). Проверено 3 мая 2010.
  21. ARM preps tiny core for low-power microcontrollers. EE Times (23 февраля 2009). Проверено 30 ноября 2009.
  22. NXP first to demo ARM Cortex-M0 silicon. EE Times (23 марта 2009). Проверено 29 июня 2009.
  23. ARM Powered VCAs " Triad Semiconductor
  24. Cortex-M0 used in low power touch controller — 10/06/2009 — Electronics Weekly
  25. Chungbuk Technopark Chooses ARM Cortex-M0 Processor
  26. Google Translate
  27. Austriamicrosystems Chooses ARM Cortex-M0 Processor For Mixed Signal Applications
  28. «ARM Extends Cortex Family with First Processor Optimized for FPGA», ARM press release, March 19, 2007. Retrieved April 11, 2007.
  29. «ARM Cortex-M1», ARM product website. Retrieved April 11, 2007.
  30. ARM Extends Cortex Family with First Processor Optimized for FPGA.
  31. ARM7TDMI (rev 3) Technical Reference Manual  (англ.). Проверено 22 августа 2009.
  32. ALT Linux поддерживает архитектуру ARM (28 июля 2010).
  33. Debian GNU/Linux on ARM. Проверено 1 июня 2009.
  34. ELinOS supported boards. Проверено 22 апреля 2010.
  35. Architectures/ARM. Проверено 1 июня 2009.
  36. Gentoo Linux ARM Development. Проверено 1 июня 2009.
  37. New release for ARM cpus (25 января 2007). Проверено 17 сентября 2009.
  38. Platform Support for MontaVista Linux. Проверено 16 февраля 2010.
  39. Slackware Linux for ARM. Проверено 1 июня 2009.
  40. T2 SDE. Проверено 12 марта 2010.
  41. Ubuntu on Arm. Canonical Ltd. (2009). Проверено 15 июня 2009.
  42. ARM. Проверено 1 июня 2009.
  43. Wind River - Board Support Packages. Проверено 16 февраля 2010.
  44. FreeBSD/ARM Project. Проверено 1 июня 2009.
  45. Hardware supported by NetBSD. Проверено 1 июня 2009.
  46. OpenBSD/armish. Проверено 1 июня 2009.
  47. OpenSolaris Project: ARM Platform Port. Sun Microsystems.
  48. ARM Port — ReactOS
  49. ReactOS Portable Systems Group — ReactOS
  50. CES 2011: Windows 8 получит поддержку процессоров ARM

Ссылки

  • Архитектура и система команд RISС-процессоров семейства ARM (RUS)
  • Форум по ARM-микроконтроллерам
  • http://phrack.org/issues.html?issue=63&id=6#article
  • Разработки ARM процессоров для серверов


Архитектура ARM.