ARM (архитектура)
ARM | |
---|---|
Разработчик | ARM Limited |
Разрядность | ARMv7 64/32 бита, до ARMv8 только 64 бита |
Представлена | 1985 |
Архитектура | RISC |
Тип | Регистр-регистр |
Кодирование СК |
ARMv8: фиксированное (64 бита), кроме режима совместимости с ARMv7 кодом ARMv7/6: смешанное (32 и 16 бит выровнено) ARMv3/2: фиксированное (32 бита) |
Реализация переходов | по флагам условий |
Порядок байтов | Переключаемый (big-endian), обычно — от младшего к старшему (little-endian) |
Расширения |
NEON, Thumb-2 (обязательно начиная с ARMv7), Jazelle, VFPv4-D16, VFPv4 (все обязательны в ARMv8) В микроконтроллерах: FPv4-SP |
Медиафайлы на Викискладе |
Архитектура ARM (от англ. Advanced RISC Machine — усовершенствованная RISC-машина; иногда — Acorn RISC Machine) — система команд и семейство описаний и готовых топологий 32-битных и 64-битных микропроцессорных/микроконтроллерных ядер, разрабатываемых компанией ARM Limited[1].
Среди лицензиатов готовых топологий ядер ARM — компании AMD, Apple, Analog Devices, Atmel, Xilinx, Cirrus Logic, Intel (до 27 июня 2006 года), Marvell, NXP, STMicroelectronics, Samsung, LG, MediaTek, Qualcomm, Sony, Texas Instruments, Nvidia, Freescale, Миландр, ЭЛВИС[2], HiSilicon, Байкал электроникс.
Значимые семейства процессоров: ARM7, ARM9, ARM11 и Cortex[3][4].
Многие лицензиаты проектируют собственные топологии ядер на базе системы команд ARM: DEC StrongARM, Freescale i.MX, Intel XScale, NVIDIA Tegra, ST-Ericsson Nomadik[англ.], Krait и Kryo в Qualcomm Snapdragon, Texas Instruments OMAP, Samsung Hummingbird, LG H13, Apple A6 и HiSilicon K3.
Популярность
[править | править код]В 2006 году около 98 % из более чем миллиарда мобильных телефонов, продававшихся ежегодно, были оснащены, по крайней мере, одним процессором ARM[5]. По состоянию на 2009 на процессоры ARM приходилось до 90 % всех встроенных 32-разрядных процессоров[6]. Процессоры ARM широко используются в потребительской электронике — в том числе смартфонах, мобильных телефонах и плеерах, портативных игровых консолях, калькуляторах, умных часах и компьютерных периферийных устройствах, таких, как жесткие диски или маршрутизаторы.
Эти процессоры имеют низкое энергопотребление, поэтому находят широкое применение во встраиваемых системах и преобладают на рынке мобильных устройств, для которых данный фактор критически важен.
История
[править | править код]После достижения некоторых успехов с компьютером BBC Micro британская компания Acorn Computers задумалась над переходом от относительно слабых процессоров MOS Technology 6502 к более производительным решениям и выходу на рынок бизнес-компьютеров с той же платформой BBC Micro. Такие процессоры, как Motorola 68000 и 32016 от National Semiconductor, были для этого непригодны, а 6502 был недостаточно мощным, чтобы поддерживать графический пользовательский интерфейс[7].
Компании была нужна совершенно новая архитектура после того, как она протестировала все доступные ей процессоры и сочла их неэффективными. Acorn серьёзно настроился на разработку собственного процессора, и их инженеры начали изучать документацию проекта RISC, разработанного в Университете Калифорнии в Беркли. Они подумали, что раз уж группе студентов удалось создать вполне конкурентоспособный процессор, то их инженерам это будет несложно. Поездка в Western Design Center (Аризона) показала инженерам Стиву Ферберу и Софи Уилсон (на тот момент известной под именем Роджер[8]), что им не потребуются невероятные ресурсы для осуществления этого плана.
Уилсон приступила к разработке системы команд, создавая симулятор нового процессора на компьютере 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-битных процессоров в мире, имея всего лишь 30 тысяч транзисторов (для сравнения, в сделанном на 6 лет раньше процессоре Motorola 68000 было 68 тысяч транзисторов). Многое из этой простоты обусловлено отсутствием микрокода (который в процессоре 68000 занимает от одной четверти до одной трети площади кристалла) и отсутствием кэша, как и во многих процессорах того времени. Эта простота привела к низким затратам энергии, в то время как ARM был гораздо более производителен, чем Intel 80286[9]. У его преемника — процессора 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 было 30 тысяч транзисторов.
Влияние ARM-технологии на рынок
[править | править код]В основном процессоры семейства завоевали сегмент массовых мобильных продуктов (сотовые телефоны, карманные компьютеры) и встраиваемых систем средней и высокой производительности (от сетевых маршрутизаторов и точек доступа до телевизоров). Отдельные компании заявляют о разработках эффективных серверов на базе кластеров ARM-процессоров[10], но пока это только экспериментальные проекты с 32-битной архитектурой[11].
Предыдущий лидер списка — суперкомпьютер Summit (OLCF-4), разработанный совместно компаниями IBM (серверные узлы), Mellanox (межсоединение) и Nvidia (графические ускорители), и установленный в Ок-Риджской национальной лаборатории — стал вторым, уступив почетное первое место новой японской топ-системе Fugaku (рус. Фугаку), которая показала результат High Performance/Highly Parallel Linpack (HPL), равный 415,5 петафлопс. Данный показатель превосходит возможности Summit в 2,8 раза. Fugaku оснащен 48-ядерным процессором A64FX SoC фирмы Fujitsu, таким образом, японская разработка стала первой в истории системой № 1 в списке ТOP500, при этом оснащенной процессорами ARM. При одинарной или более низкой точности, которая часто используется для задач машинного обучения и искусственного интеллекта, пиковая производительность Fugaku составляет более 1000 петафлопс (1 экзафлопс). Новая система установлена в Центре вычислительных наук RIKEN (R-CCS) в Кобе, Япония.
Процессоры ARM
[править | править код]В настоящее время значимыми являются несколько семейств процессоров ARM:
- ARM7 (с тактовой частотой до 60-72 МГц), предназначенные, например, для недорогих мобильных телефонов и встраиваемых решений средней производительности. В настоящее время активно вытесняется новым семейством Cortex.
- ARM9, ARM11 (с частотами до 1 ГГц) для более мощных телефонов, карманных компьютеров и встраиваемых решений высокой производительности.
- Cortex A — новое семейство процессоров на смену ARM9 и ARM11.
- Cortex M — новое семейство процессоров на смену ARM7, также призванное занять новую для ARM нишу встраиваемых решений низкой производительности. В семействе присутствуют четыре значимых ядра:
- Cortex-M0, Cortex-M0+ (более энергоэффективное) и Cortex-M1 (оптимизировано для применения в ПЛИС) с архитектурой ARMv6-M;
- Cortex-M3 с архитектурой ARMv7-M;
- Cortex-M4 (добавлены SIMD-инструкции, опционально FPU) и Cortex-M7 (FPU с поддержкой чисел одинарной и двойной точности) с архитектурой ARMv7E-M;
- Cortex-M23 и Cortex-M33 с архитектурой ARMv8-M ARMv8-M .
В 2010 году производитель анонсировал процессоры Cortex-A15 под кодовым названием Eagle, ARM утверждает, что ядро Cortex A15 на 40 процентов производительнее на той же частоте, чем ядро Cortex-A9 при одинаковом числе ядер на чипе[12]. Изделие, изготовленное по 28-нанометровому техпроцессу, имеет 4 ядра, может функционировать на частоте до 2,5 ГГц и будет поддерживаться многими современными операционными системами[13][14].
Популярное семейство микропроцессоров xScale фирмы Marvell (до 27 июня 2007 года — Intel[15]) в действительности является расширением архитектуры ARM9, дополненной набором инструкций Wireless MMX, специально разработанных фирмой Intel для поддержки мультимедийных приложений.
Семейство ядер | Версия архитектуры | Ядро | Функции | Кэш (I/D)/MMU | Типичная MIPS @ МГц | Использование |
---|---|---|---|---|---|---|
ARM1 | ARMv1 (устаревшая) | ARM1 | Нет | ARM Evaluation System процессор BBC Micro | ||
ARM2 | ARMv2 (устаревшая) | ARM2 | Добавлена команда MUL (умножение) | Нет | 4 MIPS @ 8 МГц 0.33 DMIPS/МГц |
Acorn Archimedes, Chessmachine |
ARMv2a (устаревшая) | ARM250 | Встроенный MEMC (MMU), графический процессор, добавлены команды SWP и SWPB (swap) | Нет, MEMC1a | 7 MIPS @ 12 МГц | Acorn Archimedes | |
ARM3 | ARMv2a (устаревшая) | ARM2a | Впервые использован кэш | 4 КБ общий | 12 MIPS @ 25 МГц 0.50 DMIPS/МГц |
Acorn Archimedes |
ARM6 | ARMv3 (устаревшая) | ARM60 | Впервые введено 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 МГц |
Game Boy Advance, Nintendo DS, Apple iPod, Lego NXT, Atmel AT91SAM7, Juice Box, NXP Semiconductors LPC2000 and LH754xx, Actel's 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 МГц | Zipit Wireless Messenger, NXP Semiconductors LH7952x | ||
ARM740T | Как ARM7TDMI, кэш | MPU | ||||
ARMv5TEJ | ARM7EJ-S | 5-ступенчатый конвейер, 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 | Как SA-110, интегрированная SoC | 16 KB/8 KB, MMU | 203 MHz | Psion netBook | ||
SA-1110 | Как 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[16] | 5-ступенчатый конвейер, 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-ступенчатый конвейер, Thumb | none | ||
ARM920T | Как ARM9TDMI, кэш | 16 KB/16 KB, MMU with FCSE (Fast Context Switch Extension)[17] | 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[18]), Samsung S3C2410 (TomTom navigation devices)[19] | ||
ARM922T | Как ARM9TDMI, кэш | 8 KB/8 KB, MMU | NXP Semiconductors LH7A40x | |||
ARM940T | Как ARM9TDMI, кэш | 4 KB/4 KB, MPU | GP2X (второе ядро), Meizu M6 Mini Player[20][21] | |||
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[22], Conexant 802.11 chips, Samsung S5L2010 | |
ARM966E-S | Thumb, Enhanced DSP instructions | no cache, TCMs | STM STR91xF, includes Ethernet[23] | |||
ARM968E-S | Как ARM966E-S | no cache, TCMs | NXP Semiconductors LPC2900 | |||
ARMv5TEJ | ARM926EJ-S | Thumb, Jazelle DBX, Enhanced DSP instructions | variable, TCMs, MMU | 220 MIPS @ 200 MHz, | Mobile phones: Sony Ericsson (K, W series); Siemens and Benq (x65 series and newer); LG Arena, LG Cookie Fresh; TI OMAP1710… OMAP1612, OMAP-L137, OMAP-L138; Qualcomm MSM6100…MSM6800; Freescale i.MX21, i.MX27, Atmel AT91SAM9, NXP Semiconductors LPC3000, GPH Wiz, NEC C10046F5-211-PN2-A SoC — undocumented core in the ATi Hollywood graphics chip used in the Wii,[24] 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, как ARM966E-S | no caches, TCMs, MPU | |||
ARM10E | ARMv5TE | ARM1020E | 6-ступенчатый конвейер, Thumb, улучшенные DSP-инструкции, (VFP) | 32 KB/32 KB, MMU | ||
ARM1022E | Как 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
| ||||
IOP321 | 600 BogoMips @ 600 MHz | Iyonix | ||||
IOP33x | ||||||
IOP34x | 1-2 core, RAID Acceleration | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | Applications processor, 7-ступенчатый конвейер | 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[25] | 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 | Gumstix verdex, «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[26] | 8-ступенчатый конвейер, SIMD, Thumb, Jazelle DBX, (VFP), улучшенные DSP-инструкции | variable, MMU | 740 @ 532—665 MHz (i.MX31 SoC), 400—528 MHz | TI OMAP2420 (Nokia E90, Nokia N93, Nokia N95, Nokia N82), Zune, BUGbase[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 / MSM7227T, HTC Legend, HTC Wildfire S, LG P500, LG GT540,[27][28] |
ARMv6T2 | ARM1156T2(F)-S | 9-ступенчатый конвейер, SIMD, Thumb-2, (VFP), улучшенные DSP-инструкции | variable, MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | Как 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[29]; Mediatek MT6573[30]; Telechips TCC9101, TCC9201, TCC8900, Fujitsu MB86H60, Samsung S3C6410 (e.g. Samsung Moment), S3C6430[31] | ||
ARMv6K | ARM11 MPCore | Как 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-ступенчатый конвейер, In-order, 1-4 core SMP | variable (L1), MMU+TrustZone | up to 1500 (1.5 DMIPS/MHz) | «Sparrow» (ARM code name)[32][33][34] |
Cortex-A8 | VFP, NEON, Jazelle RCT, Thumb-2; 13-ступенчатый конвейер, In-order, 2 декодера[35] | variable (L1+L2), MMU+TrustZone | up to 2000 (2.0 DMIPS/MHz in speed from 600 MHz to greater than 1 GHz) | TI 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, Boxchip A13 | ||
Cortex-A9 | Application profile, (VFP), (NEON), Jazelle RCT and DBX, Thumb-2, Out-of-order speculative issue superscalar (2 декодера); 9-12[35] стадий конвейера | MMU+TrustZone | 2.5 DMIPS/MHz | Apple iPhone 4S, Apple iPad 2 (Apple A5), MediaTek MT6575/6515M, iconBIT NetTAB SKY 3G | ||
Cortex-A9 MPCore | Как 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) | PlayStation® Vita, TI OMAP4430/4440, ST-Ericsson U8500, Nvidia Tegra2, Samsung Exynos 4210, MediaTek MT6577/6517 | ||
Cortex-A15 MPCore | 1-32 core SMP; Out-of-order superscalar (3 декодера); 15+ ступеней конвейера[35]; VFPv4, NEON[36] | MMU, LPAE | 3.5 DMIPS/MHz/Core; 1.0 GHz — 2.5 GHz (@ 28 nm[35]) | |||
Cortex-A7 MPCore[37] | FPU,NEON; In-order (1 декодер); 8 стадий конвейера. | MMU, LPAE | 1.9 DMIPS/MHz/CPU; 0.8-1.5 GHz (@28 nm) | (Broadcom, Freescale, HiSilicon, LG, Samsung, STEricsson, TexasInstruments, MediaTek) | ||
ARMv7-R | Cortex-R4(F) | Embedded profile, Thumb-2, (FPU) | variable cache, MPU optional | 600 DMIPS @ 475 MHz | Broadcom is a user, TI TMS570 | |
ARMv7-ME | Cortex-M4 (codenamed «Merlin»)[38] | Microcontroller profile, both Thumb and Thumb-2, FPU. Hardware MAC, SIMD and divide instructions | MPU optional | 1.25 DMIPS/MHz | NXP Semiconductors, STM32, TI Stellaris LM4F | |
ARMv7-M | Cortex-M3 | Microcontroller profile, Thumb-2 only. Hardware divide instruction | no cache, MPU optional | 125 DMIPS @ 100 MHz | TI Stellaris, STM STM32, NXP LPC1700, Toshiba TMPM330FDFG, Ember's EM3xx Series, Atmel AT91SAM3, Europe Technologies EasyBCU, Energy Micro's EFM32, Actel's SmartFusion, Миландр 1986ВЕ91Т [2] | |
ARMv6-M | Cortex-M0 (codenamed «Swift»)[39] | Microcontroller profile, Thumb-2 subset (16-bit Thumb instructions & BL, MRS, MSR, ISB, DSB, and DMB) | No cache | 0.9 DMIPS/MHz | NXP Semiconductors NXP LPC1100[40], Triad Semiconductor[41], Melfas[42], Chungbuk Technopark[43], Nuvoton[44], austriamicrosystems[45], Миландр К1986ВЕ2Т [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[46] (0.8 DMIPS/MHz,[47] MHz achievable FPGA-dependent) | Actel ProASIC3, ProASIC3L, IGLOO and Fusion PSC devices, Altera Cyclone III, other FPGA products are also supported e.g. Synplicity | ||
Семейство ядер | Версия архитектуры | Ядро | Функции | Кэш (I/D)/MMU | Типичная MIPS @ MHz | Приложения |
Архитектура
[править | править код]Уже давно существует справочное руководство по архитектуре ARM, которое разграничивает все типы интерфейсов, которые поддерживает ARM, так как детали реализации каждого типа процессора могут различаться. Архитектура развивалась с течением времени и, начиная с ARMv7, были определены 3 профиля:
- A (application) — для устройств, требующих высокой производительности (смартфоны, планшеты);
- R (real time) — для приложений, работающих в реальном времени;
- M (microcontroller) — для микроконтроллеров и недорогих встраиваемых устройств[3].
Профили могут поддерживать меньшее количество команд (команды определенного типа).
Режимы
[править | править код]Процессор может находиться в одном из следующих операционных режимов:
- User mode — обычный режим выполнения программ. В этом режиме выполняется большинство программ.
- Fast Interrupt (FIQ) — режим быстрого прерывания (меньшее время срабатывания).
- Interrupt (IRQ) — основной режим прерывания.
- System mode — защищённый режим для использования операционной системой.
- Abort mode — режим, в который процессор переходит при возникновении ошибки доступа к памяти (доступ к данным или к инструкции на этапе prefetch конвейера).
- Supervisor mode — привилегированный пользовательский режим.
- Undefined mode — режим, в который процессор входит при попытке выполнить неизвестную ему инструкцию.
Переключение режима процессора происходит при возникновении соответствующего исключения или же модификацией регистра статуса.
Набор команд
[править | править код]Чтобы сохранить устройство чистым, простым и быстрым, оригинальное изготовление ARM было исполнено без микрокода, как и более простой 8-разрядный процессор 6502, используемый в предыдущих микрокомпьютерах от Acorn Computers.
Набор команд ARM
[править | править код]Режим, в котором исполняется 32-битный набор команд.
ARM Base Instruction Set:[49]
ADC, ADD, AND, B/BL, BIC, CMN, CMP, EOR, LDM, LDR/LDRB, MLA, MOV, MUL, MVN, ORR, RSB, RSC, SBC, STM, STR/STRB, SUB, SWI, SWP, TEQ, TST
Набор команд 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-битного гипервизора[50]. Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM и другие заявили о планах по использованию ARMv8. Ядра Cortex-A53 и Cortex-A57, поддерживающие ARMv8, были представлены компанией ARM 30 октября 2012 года[51].
Как 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 (изначальная архитектура) от других архитектур ЦПУ является так называемая предикация — возможность условного исполнения команд. Под «условным исполнением» здесь понимается то, что команда будет выполнена или проигнорирована в зависимости от текущего состояния флагов состояния процессора. В Thumb и Arm 64 предикация не используется — в первом режиме для неё нет места в команде (всего 16 бит), а во втором — предикация бессмысленна[источник не указан 3733 дня] и сложна для реализации на суперскалярных архитектурах.
В то время как для других архитектур таким свойством, как правило, обладают только команды условных переходов, в архитектуру 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 операций единовременно.
Одним из недостатков (или, скажем, особенностью) усовершенствованного SIMD является то, что сопроцессор выполняет команды усовершенствованного SIMD с достаточно значительной задержкой относительно кода основного процессора, задержка достигает двух десятков тактов и более (зависит от архитектуры и конкретных условий). По этой причине при попытке основного процессора воспользоваться результатами вычисления сопроцессора исполнение будет заморожено на значительное время.
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. Тем самым фиксируется состояние процессора (режим, состояние; флаги арифметических, логических операций, разрешения прерываний) на момент непосредственно перед прерыванием[52].
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 |
Псевдонимы регистров:
рег. | функц. | args | vars | GCC | Comment |
---|---|---|---|---|---|
R0 | a1 | aN - аргумент функции | |||
R1 | a2 | ||||
R2 | a3 | ||||
R3 | a4 | ||||
R4 | v1 | vN - регистр-переменная | |||
R5 | v2 | ||||
R6 | v3 | ||||
R7 | v4 | ||||
R8 | v5 | ||||
R9 | SB | v6 | SB - Статический базовый регистр | ||
R10 | v7 | SL | SL - ? | ||
R11 | v8 | FP | FP - Адрес стекового кадра ? | ||
R12 | IP | IP - Intra-procedure call scratch register | |||
R13 | SP | Stack pointer | |||
R14 | LR | Link register | |||
R15 | PC | Program counter |
Работа с памятью
[править | править код]Этот раздел не завершён. |
Архитектура ARM использует единое адресное пространство[53]. На практике такая схема означает, что адрес может указывать на память (RAM или ROM) или порты ввода-вывода, в противовес схеме, при которой порты ввода-вывода имеют собственное адресное пространство.
Поддерживаемые системы ввода-вывода
[править | править код]Большинство существующих продуктов с использованием архитектуры ARM представляет собой законченные системы на кристалле, имеющие возможность работы с внешней динамической оперативной памятью (DRAM) и содержащие в себе контроллеры множества периферийных шин, в частности USB, IIC (I2C), звуковые устройства, контроллеры для работы с флэш-носителями стандартов SD и MMC, контроллеры дисплеев и цифровых камер (MIPI).
Все процессоры имеют линии ввода-вывода общего назначения (GPIO). В потребительских устройствах к ним могут быть подключены кнопки «быстрого запуска» и регуляции громкости, сигнальные светодиоды, клавиатура и т. п.
Процесс запуска ОС на ARM-машинах
[править | править код]После включения системы на базе ARM-процессора из ROM-памяти загружается начальный загрузчик и адрес его точки входа. Начальный загрузчик проводит предварительную инициализацию системы, исполняя тем самым ту же роль, которую исполняет BIOS на системах x86, после чего может загрузить либо системный загрузчик, либо напрямую ОС.
Единого стандарта на начальный загрузчик не существует. Может применяться загрузчик U-Boot, а для 64-разрядной ARMv8 часто используется UEFI. Во многих применениях используются собственные загрузчики.
ОС, поддерживающие ARM
[править | править код]Архитектура ARM поддерживается множеством операционных систем. Наиболее широко используемые: Linux (в том числе Android), iOS, Windows Phone.
Работать на системах с ARM-процессором могут различные Unix и Unix-подобные ОС: Linux (многие дистрибутивы), iOS, Android, BSD (FreeBSD, NetBSD, OpenBSD), QNX, Plan 9, Inferno, OpenSolaris (2008—2009[54]), Firefox OS, macOS Big Sur, MINIX 3.
Также на платформе запускаются отдельные варианты семейства Windows: Windows CE, Windows Phone, Windows RT, Windows 10, Windows 11.
Кроме того, ARM поддерживают: A2, FreeRTOS, Nucleus, Symbian OS, RISC OS, RISC iX.
См. также
[править | править код]- OpenRISC — архитектура 2000 года с GPL-реализацией or1k
- LEON — свободные реализации (GPL, LGPL) архитектуры SPARC V8, появившиеся в 1997 году
- OpenSPARC — свободная (GPL) реализация архитектуры SPARC V9 от 2005 года
- OpenPOWER — архитектура IBM Power, основанная в 2013 году IBM, Google, Mellanox, NVIDIA
- RISC-V — свободная и открытая архитектура и система команд для микропроцессоров и микроконтроллеров, созданная в 2010 году
- MIPS — наборы команд и архитектура MIPS
Примечания
[править | править код]- ↑ Компания ARM Limited занимается исключительно разработкой ядер и инструментов для них (компиляторы, средства отладки и т. п.), зарабатывая на лицензировании архитектуры сторонним производителям.
- ↑ Система на кристалле 1892ВМ14Я . multicore.ru. Дата обращения: 28 декабря 2018. Архивировано 29 декабря 2018 года.
- ↑ 1 2 Д.Козлов-Кононов. Процессорные ядра семейства Cortex. Сочетание высокой производительности и низкого энергопотребления Архивная копия от 24 ноября 2013 на Wayback Machine, журнал Электроника, вып. #8/2010
- ↑ Ознакомительное руководство по ARM-микроконтроллерам Cortex-M3 . Дата обращения: 29 сентября 2013. Архивировано 27 сентября 2013 года.
- ↑ «ARMed for the living room» Архивная копия от 9 ноября 2012 на Wayback Machine.
- ↑ «An interview with Steve Furber» Архивная копия от 27 июля 2011 на Wayback Machine // Communications of the ACM, May 2011, Vol. 54 No. 5, Pages 34-39, doi:10.1145/1941487.1941501
- ↑ Manners, David (1998-04-29). "ARM's way". Electronics Weekly. Архивировано из оригинала 29 июля 2012. Дата обращения: 26 октября 2012.
- ↑ Sophie Wilson — CHM . Дата обращения: 4 апреля 2019. Архивировано 4 апреля 2019 года.
- ↑ Santanu Chattopadhyay. Embedded System Design (неопр.). — PHI Learning Pvt. Ltd., 2010. — С. 9. — ISBN 978-81-203-4024-4. Архивировано 27 февраля 2017 года.
- ↑ Apache Benchmarks for Calxeda’s 5-Watt Web Server — ARM Servers, Now! Дата обращения: 26 ноября 2012. Архивировано из оригинала 30 октября 2012 года.
- ↑ Cloudy with a chance of ARM. What the Microserver Market Means for Semiconductor Vendors Архивная копия от 2 декабря 2012 на Wayback Machine // Oppenheimer & Co. Inc, March 30, 2012
- ↑ Exclusive : ARM Cortex-A15 «40 Per Cent» Faster Than Cortex-A9 . Дата обращения: 5 октября 2013. Архивировано 21 июля 2011 года.
- ↑ Cortex-A15 Processor (англ.). ARM. — Презентация процессоров семейства ARM CortexA15 MPCore на сайте производителя. Дата обращения: 20 апреля 2012. Архивировано 30 мая 2012 года.
- ↑ ARM Cortex-A15 — процессор с тактовой частотой до 2,5 ГГц, не только для смартфонов . Ferra.ru (10 сентября 2010). Дата обращения: 20 апреля 2012. Архивировано 26 апреля 2012 года.
- ↑ Intel Newsroom | Top headlines, breaking news and current events from Intel . Дата обращения: 4 октября 2013. Архивировано из оригинала 6 марта 2009 года.
- ↑ «ARM810 — Dancing to the Beat of a Different Drum» Архивная копия от 10 сентября 2008 на Wayback Machine Архивировано 23 июля 2011 года. ARM Holdings presentation at Hot Chips 1996-08-07.
- ↑ Register 13, FCSE PID register Архивная копия от 7 июля 2011 на Wayback Machine ARM920T Technical Reference Manual
- ↑ Neo1973: GTA01Bv4 versus GTA02 comparison . Дата обращения: 15 ноября 2007. Архивировано 13 марта 2012 года.
- ↑ S3C2410 . Дата обращения: 13 января 2010. Архивировано 13 марта 2012 года.
- ↑ Rockbox Samsung SA58xxx series . Дата обращения: 22 февраля 2008. Архивировано 13 марта 2012 года.
- ↑ Rockbox Meizu M6 Port – Hardware Information . Дата обращения: 22 февраля 2008. Архивировано 13 марта 2012 года.
- ↑ Datasheets — Magic Lantern Firmware Wiki . Дата обращения: 6 июня 2010. Архивировано 18 июля 2011 года.
- ↑ STR9 – STR912 – STR912FW44 microcontroller – documents and files download page . Mcu.st.com. Дата обращения: 18 апреля 2009. Архивировано 10 февраля 2007 года.
- ↑ Starlet Архивная копия от 10 октября 2018 на Wayback Machine.
- ↑ Benchmarks – Albatross . Albatross-uav.org (18 июня 2005). Дата обращения: 18 апреля 2009. Архивировано 16 октября 2008 года.
- ↑ ARM1136J(F)-S – ARM Processor . Arm.com. Дата обращения: 18 апреля 2009. Архивировано 13 марта 2012 года.
- ↑ Qualcomm chips kernel ARM - from phones to laptops . xi0.info. Дата обращения: 8 мая 2010. Архивировано 13 марта 2012 года.
- ↑ Qualcomm MSM7227 RISC Chipset . pdadb.net. Дата обращения: 8 мая 2010. Архивировано 13 марта 2012 года.
- ↑ GoForce 6100 . Nvidia.com. Дата обращения: 18 апреля 2009. Архивировано 13 марта 2012 года.
- ↑ Mediatek MT6573 . http://www.mediatek.com.+Дата обращения: 18 апреля 2009. Архивировано 6 июня 2012 года.
- ↑ Samsung S3C6410 and S3C6430 Series ARM Proccessors . Samsung. Дата обращения: 8 октября 2009. Архивировано из оригинала 1 сентября 2009 года., and the Qualcomm MSM7627 as seen in the Palm Pixi and Motorola Calgary/Devour
- ↑ Merrit, Rick "ARM stretches out with A5 core, graphics, FPGAs" . EE Times (21 октября 2009). Дата обращения: 28 октября 2009. Архивировано 13 марта 2012 года.
- ↑ Clarke, Peter ARM tips plans for Swift and Sparrow processor cores . EE Times (3 февраля 2009). Дата обращения: 18 апреля 2009. Архивировано 13 марта 2012 года.
- ↑ Segan, Sascha ARM's Multicore Chips Aim for Netbooks . PC Magazine (9 апреля 2009). Дата обращения: 18 апреля 2009. Архивировано 13 марта 2012 года.
- ↑ 1 2 3 4 標æº- Архивная копия от 29 июля 2013 на Wayback Machine Архивировано 29 июля 2013 года.
- ↑ Cortex-A15 Processor — ARM . Дата обращения: 24 октября 2012. Архивировано 30 мая 2012 год��.
- ↑ Cortex-A7 Processor — ARM . Дата обращения: 24 октября 2012. Архивировано 31 мая 2016 года.
- ↑ Benz, Benjamin Cortex Nachwuchs bei ARM . Heise.de (2 февраля 2010). Дата обращения: 3 мая 2010. Архивировано 13 марта 2012 года.
- ↑ Clarke, Peter ARM preps tiny core for low-power microcontrollers . EE Times (23 февраля 2009). Дата обращения: 30 ноября 2009. Архивировано 13 марта 2012 года.
- ↑ Walko, John NXP first to demo ARM Cortex-M0 silicon . EE Times (23 марта 2009). Дата обращения: 29 июня 2009. Архивировано 13 марта 2012 года.
- ↑ ARM Powered VCAs " Triad Semiconductor Архивная копия от 16 июля 2011 на Wayback Machine Архивировано 16 июля 2011 года.
- ↑ Cortex-M0 used in low power touch controller — 10/06/2009 — Electronics Weekly . Дата обращения: 6 июня 2010. Архивировано 16 августа 2011 года.
- ↑ Chungbuk Technopark Chooses ARM Cortex-M0 Processor . Дата обращения: 6 июня 2010. Архивировано 7 октября 2010 года.
- ↑ Google Translate . Дата обращения: 3 мая 2022. Архивировано 22 января 2020 года.
- ↑ Austriamicrosystems Chooses ARM Cortex-M0 Processor For Mixed Signal Applications . Дата обращения: 6 июня 2010. Архивировано 22 июля 2011 года.
- ↑ «ARM Extends Cortex Family with First Processor Optimized for FPGA» Архивная копия от 5 мая 2007 на Wayback Machine, ARM press release, March 19, 2007. Retrieved April 11, 2007.
- ↑ «ARM Cortex-M1» Архивная копия от 1 апреля 2007 на Wayback Machine, ARM product website. Retrieved April 11, 2007.
- ↑ ARM Extends Cortex Family with First Processor Optimized for FPGA Архивная копия от 5 мая 2007 на Wayback Machine.
- ↑ Category:Opcodes - ARMwiki (англ.). www.heyrick.co.uk. Дата обращения: 6 августа 2018. Архивировано 6 августа 2018 года.
- ↑ ARM . Дата обращения: 15 апреля 2013. Архивировано из оригинала 10 июня 2018 года.
- ↑ ARM Launches Cortex-A50 Series, the World’s Most… - ARM . Дата обращения: 17 апреля 2013. Архивировано 20 апреля 2013 года.
- ↑ ARM7TDMI (rev 3) Technical Reference Manual (англ.). Дата обращения: 22 августа 2009. Архивировано 13 марта 2012 года.
- ↑ http://www.peter-cockerell.net/aalp/html/ch-2.html Архивная копия от 8 декабря 2015 на Wayback Machine «Input and output devices are memory mapped. There is no concept of a separate I/O address space. Peripheral chips are read and written as if they were areas of memory. This means that in practical ARM systems, the memory map is divided into three areas: RAM, ROM, and input/output devices (probably in decreasing order of size).»
- ↑ OpenSolaris Project: ARM Platform Port . Sun Microsystems. Архивировано 13 марта 2012 года.
Ссылки
[править | править код]- ARM Cortex — A9 white paper (англ.)
- Архитектура и система команд RISС-процессоров семейства ARM (рус.)
- Форум по ARM-микроконтроллерам (рус.)
- Статья о WinCE и ARM в журнале Phrack (англ.)
- Рейтинг производительности ARM процессоров (рус.)
- Цикл статей по программированию ARM микроконтроллеров (рус.)
- Реверс инжиниринг ARM1