Список архитектур ARM
Список процессорных и микроконтроллерных микроархитектур семейства ARM, разработанных ARM Holdings и сторонними группами. Упорядочено по версии набора команд ARM.
Компания ARM предоставляла список фирм, реализовавших архитектуры ARM, самостоятельно[1]. Некоторую информацию также предоставляет компания Keil[2].
Список ядер собственной разработки ARM также опубликован на их интернет-сайте[3].
Ядра ARM
Разработанные в ARM
Семейство ARM
|
Архитектура ARM
|
Ядро
|
Дополнения
|
Кэши (I / D), MMU
|
Типичные MIPS @ МГц
|
ARM1
|
ARMv1
|
ARM1
|
Первая реализация
|
Нет
|
|
ARM2
|
ARMv2
|
ARM2
|
В ARMv2 была добавлена инструкция MUL (умножение)
|
Нет
|
4 MIPS @ 8 МГц 0,33 DMIPS/МГц
|
ARMv2a
|
ARM250
|
Встроенный MEMC (MMU), графический процессор и сопроцессор ввода-вывода. В ARMv2a добавлены инструкции SWP и SWPB (обмен)
|
Нет, MEMC1a
|
7 MIPS @ 12 МГц
|
ARM3
|
ARMv2a
|
ARM3
|
Первая интегрированная кэш память
|
4 КБ, унифицированный
|
12 MIPS @ 25 МГц 0,50 DMIPS/МГц
|
ARM6
|
ARMv3
|
ARM60
|
В ARMv3 добавлена поддержка 32-битной адресации памяти (ранее — 26 бит)
|
Нет
|
10 MIPS @ 12 МГц
|
ARM600
|
Как в ARM60, дополнительно — кэш и шина сопроцессора (для блока FPA10 обработки числе с плавающей запятой)
|
4 КБ, унифицированный
|
28 MIPS @ 33 МГц
|
ARM610
|
Как в ARM60, кэш, без шины сопроцессора
|
4 КБ, унифицированный
|
17 MIPS @ 20 МГц 0,65 DMIPS/МГц
|
ARM7
|
ARMv3
|
ARM700
|
|
8 КБ, унифицированный
|
40 МГц
|
ARM710
|
Как ARM700, без шины сопроцессора
|
8 КБ, унифицированный
|
40 МГц
|
ARM710a
|
Как ARM710
|
8 КБ, унифицированный
|
40 МГц 0,68 DMIPS/МГц
|
ARM7TDMI
|
ARMv4T
|
ARM7TDMI(-S)
|
3-стадийный конвейер, Thumb. В ARMv4 отказались от 26-битной адресации
|
Нет
|
15 MIPS @ 16,8 МГц 63 DMIPS @ 70 МГц
|
ARM710T
|
Как ARM7TDMI, дополнительно имеет кэш
|
8 КБ, унифицированный, MMU
|
36 MIPS @ 40 МГц
|
ARM720T
|
Как ARM7TDMI, имеет кэш
|
8 КБ, унифицированный, MMU (с FCSE — Fast Context Switch Extension)
|
60 MIPS @ 59,8 МГц
|
ARM740T
|
Как ARM7TDMI, имеет кэш
|
MPU
|
|
ARM7EJ
|
ARMv5TEJ
|
ARM7EJ-S
|
5-стадийный конвейер, Thumb, Jazelle DBX, Расширенные DSP-команды
|
Нет
|
|
ARM8
|
ARMv4
|
ARM810[4][5]
|
5-стадийный конвейер, статический предсказатель ветвлений, удвоение пропускной способности памяти
|
8 КБ, унифицированный, MMU
|
84 MIPS @ 72 МГц 1,16 DMIPS/МГц
|
ARM9TDMI
|
ARMv4T
|
ARM9TDMI
|
5-стадийный конвейер, Thumb
|
Нет
|
|
ARM920T
|
Как ARM9TDMI, кэши
|
16 КБ / 16 КБ, MMU с FCSE (Fast Context Switch Extension)[6]
|
200 MIPS @ 180 МГц
|
ARM922T
|
Как ARM9TDMI, кэши
|
8 КБ / 8 КБ, MMU
|
|
ARM940T
|
Как ARM9TDMI, кэши
|
4 КБ / 4 КБ, MPU
|
|
ARM9E
|
ARMv5TE
|
ARM946E-S
|
Thumb, DSP, кэши
|
Различные, тесно связанная память (TCM), MPU
|
|
ARM966E-S
|
Thumb, DSP
|
Без кэша и памяти TCM
|
|
ARM968E-S
|
Как ARM966E-S
|
Без кэша и TCM
|
|
ARMv5TEJ
|
ARM926EJ-S
|
Thumb, Jazelle DBX, DSP
|
Различные, TCM, MMU
|
220 MIPS @ 200 МГц
|
ARMv5TE
|
ARM996HS
|
Процессор без тактовой частоты, остальное как у ARM966E-S
|
Без кэша, TCM, MPU
|
|
ARM10E
|
ARMv5TE
|
ARM1020E
|
6-стадийный конвейер, Thumb, DSP, (VFP)
|
32 КБ / 32 КБ, MMU
|
|
ARM1022E
|
Как ARM1020E
|
16 КБ / 16 КБ, MMU
|
|
ARMv5TEJ
|
ARM1026EJ-S
|
Thumb, Jazelle DBX, DSP, (VFP)
|
Различные, MMU или MPU
|
|
ARM11
|
ARMv6
|
ARM1136J(F)-S[7]
|
8-стадийный конвейер, SIMD, Thumb, Jazelle DBX, (VFP), DSP
|
Различные, MMU
|
740 @ 532—665 МГц (i.MX31 SoC), 400—528 МГц
|
ARMv6T2
|
ARM1156T2(F)-S
|
8-стадийный конвейер, SIMD, Thumb-2, (VFP), DSP
|
Различные, MPU
|
|
ARMv6Z
|
ARM1176JZ(F)-S
|
Как ARM1136EJ(F)-S
|
Различные, MMU + TrustZone
|
965 DMIPS @ 772 МГц, до 2600 DMIPS с 4 процессорами[8]
|
ARMv6K
|
ARM11 MPCore
|
Как ARM1136EJ(F)-S, SMP с 1-4 ядрами
|
Различные, MMU
|
|
SecurCore
|
ARMv6-M
|
SC000
|
|
|
0,9 DMIPS/МГц
|
ARMv4T
|
SC100
|
|
|
|
ARMv7-M
|
SC300
|
|
|
1,25 DMIPS/МГц
|
Cortex-M
|
ARMv6-M
|
Cortex-M0[9]
|
Microcontroller profile, Thumb + Thumb-2 subset (BL, MRS, MSR, ISB, DSB, DМB),[10] аппаратное умножение, опциональный системный таймер и память «bit-banding»
|
Опциональный кэш, без TCM, без MPU
|
0,84 DMIPS/МГц
|
Cortex-M0+[11]
|
Микроконтроллер, подмножество Thumb и Thumb-2 (BL, MRS, MSR, ISB, DSB, DМB),[10] аппаратное умножение, опциональный системный таймер и память «bit-banding»
|
Опциональный кэш, без TCM, опциональный MPU на 8 регионов
|
0,93 DMIPS/МГц
|
Cortex-M1[12]
|
Микроконтроллер, подмножество Thumb и Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] аппаратное умножение, опция SVC / банк для указателя стека, опциональный системный таймер, без памяти «bit-banding»
|
Опциональный кэш, 0-1024 КБ I-TCM, 0-1024 КБ D-TCM, без MPU
|
136 DMIPS @ 170 МГц,[13] (0,8 DMIPS/МГц FPGA-dependent)[14]
|
ARMv7-M
|
Cortex-M3[15]
|
Микроконтроллер, Thumb / Thumb-2, аппаратные умножение и деление, опциональная память «bit-banding»
|
Опциональный кэш, без TCM, опциональный MPU на 8 регионов
|
1,25 DMIPS/МГц
|
ARMv7E-M
|
Cortex-M4[16]
|
Микроконтроллер, Thumb / Thumb-2 / DSP / опциональное расширение FPv4 для одинарной точности, аппаратные умножение и деление, опциональная память «bit-banding»
|
Опциональный кэш, без TCM, опциональный MPU на 8 регионов
|
1,25 DMIPS/МГц (1,27 с FPU FPv4)
|
ARMv7E-M
|
Cortex-M7[17]
|
Микроконтроллер, Thumb / Thumb-2 / DSP / опциональный блок FPU для чисел одинарной и двойной точности, аппаратные умножение и деление
|
0-64 КБ I-кэш, 0-64 КБ D-кэш, 0-16 МБ I-TCM, 0-16 МБ D-TCM (все — с опциональным ECC), Опциональный MPU на 8 или 16 регионов
|
2,14 DMIPS/МГц
|
ARMv8-M Baseline
|
Cortex-M23
|
ARM TrustZone
|
|
0,98 DMIPS/МГц
2,5 CoreMark/МГц
|
ARMv8-M Mainline
|
Cortex-M33
|
ARM TrustZone
|
|
1,5 DMIPS/МГц
3,86 CoreMark/МГц
|
Cortex-R
|
ARMv7-R
|
Cortex-R4[18]
|
Профиль реального времени, Thumb / Thumb-2 / DSP / опциональный VFPv3 FPU, аппаратные умножение и опциональное деление, опциональные четность и ECC для внутренних шин, кэша, TCM, 8-стадийный конвейер, два ядра в режиме «lockstep» с логикой обработки ошибок
|
0-64 КБ / 0-64 КБ, 0-2 из 0-8 МБ TCM, опционально MPU на 8 или 12
|
|
Cortex-R5 (MPCore)[19]
|
Профиль реального времени, Thumb / Thumb-2 / DSP / опциональный VFPv3 FPU, аппаратные умножение и опциональное деление, опциональные четность и ECC для внутренних шин, кэша, TCM, 8-стадийный конвейер, два ядра в режиме «lockstep» с логикой обработки ошибок. Опционально допускается работа двух ядер как независимых. Периферийный порт с низкими задержками (LLPP), порт когерентности для ускорителя (ACP)[20]
|
0-64 КБ / 0-64 КБ, 0-2 из 0-8 МБ TCM, опц. MPU на 12 или 16
|
|
Cortex-R7 (MPCore)[21]
|
Профиль реального времени, Thumb / Thumb-2 / DSP / опциональный VFPv3 FPU, аппаратные умножение и опциональное деление, опциональные четность и ECC для внутренних шин, кэша, TCM, 11-стадийный конвейер, два ядра в режиме «lockstep» с логикой обработки ошибок. Ядра out-of-order, с динамическим переименованием регистров. Опционально допускается работа двух ядер как независимых. Периферийный порт с низкими задержками (LLPP), порт когерентности для ускорителя (ACP)[20]
|
0-64 КБ / 0-64 КБ, ? из 0-128 КБ TCM, опц. MPU на 16
|
|
Cortex-A
|
ARMv7-A
|
Cortex-A5[22]
|
Профиль «Application», ARM / Thumb / Thumb-2 / DSP / SIMD / опциональный VFPv4-D16 FPU / опциональный NEON / Jazelle RCT и DBX, 1-4 ядро, опционально MPCore, блок управления снупированием (SCU, snoop control unit), контроллер общих прерываний (GIC), порт когерентности для ускорителя (ACP)
|
4-64 КБ / 4-64 КБ L1, MMU + TrustZone
|
1,57 DMIPS/МГц на ядро
|
Cortex-A7 MPCore[23]
|
Профиль «Application», ARM / Thumb / Thumb-2 / DSP / VFPv4-D16 FPU / NEON / Jazelle RCT и DBX / аппаратная виртуализация, очередное исполнение команд (in-order), суперскаляр, SMP на 1-4 ядра, Large Physical Address Extensions (LPAE), блок управления снупированием (SCU), контроллер общих прерываний (GIC), порт когерентности для ускорителя (ACP). Архитектура и набор расширений совпадают с Cortex-A15. 8-10 стадий в конвейере, пониженное энергопотребление[24]
|
32 КБ / 32 КБ L1, 0-4 МБ L2, MMU + TrustZone
|
1,9 DMIPS/МГц на ядро
|
Cortex-A8[25]
|
Профиль «Application», ARM / Thumb / Thumb-2 / VFPv3 FPU / NEON / Jazelle RCT и DAC, 13-стадийный суперскаляр
|
16-32 КБ / 16-32 КБ L1, 0-1 МБ L2 опц. ECC, MMU + TrustZone
|
до 2000 (2,0 DMIPS/МГц с частотами от 600 МГц до превышающих 1 ГГц)
|
Cortex-A9 MPCore[26]
|
Профиль «Application», ARM / Thumb / Thumb-2 / DSP / опционально VFPv3 FPU / опционально NEON / Jazelle RCT и DBX, внеочередное исполнение (out-of-order) со спекулятивностью, суперскаляр, SMP на 1-4 ядра, блок управления снупированием (SCU), контроллер общих прерываний (GIC), порт когерентности для ускорителя (ACP).
|
16-64 КБ / 16-64 КБ L1, 0-8 МБ L2 опц. контроль четности, MMU + TrustZone
|
2,5 DMIPS/МГц на ядро, 10,000 DMIPS @ 2 ГГц на техпроцессе TSMC 40G (два ядра)
|
Cortex-A12[27] позже объединен с A17
|
Профиль «Application», ARM / Thumb-2 / DSP / VFPv4 FPU / NEON / аппаратная виртуализация, внеочередное спекулятивное исполнение, суперскаляр, SMP на 1-4 ядра, Large Physical Address Extensions (LPAE), блок управления снупированием (SCU), контроллер общих прерываний (GIC), порт когерентности для ускорителя (ACP).
|
32-64 КБ / 32 КБ L1, 256 КБ-8 МБ L2
|
3,0 DMIPS/МГц на ядро
|
Cortex-A15 MPCore[28]
|
Профиль «Application», ARM / Thumb / Thumb-2 / DSP / VFPv4 FPU / NEON / целочисленное деление / MAC (объединенное умножение-сложение) / Jazelle RCT / аппаратная вирутализация, внеочередное спекулятивное исполнение, суперскаляр, SMP на 1-4 ядра, Large Physical Address Extensions (LPAE), блок управления снупированием (SCU), контроллер общих прерываний (GIC), порт когерентности для ускорителя (ACP). 15-24 стадийный конвейер[24]
|
32 КБ с четностью / 32 КБ с ECC L1, 0-4 МБ L2 с ECC, MMU + TrustZone
|
Не менее 3,5 DMIPS/МГц на ядро (до 4,01 DMIPS/МГц в зависимости от реализации)[29]
|
Cortex-A17 MPCore
|
Профиль «Application», ARM / Thumb / Thumb-2 / DSP / VFPv4 FPU / NEON / целочисленное деление / MAC (объединенное умножение-сложение) / Jazelle RCT / аппаратная виртуализация, внеочередное спекулятивное исполнение, суперскаляр, SMP на 1-4 ядра, Large Physical Address Extensions (LPAE), блок управления снупированием (SCU), контроллер общих прерываний (GIC), порт когерентности для ускорителя (ACP).
|
MMU + TrustZone
|
|
Cortex-A50
|
ARMv8-A
|
Cortex-A53[30]
|
Профиль «Application», AArch32 и AArch64, SMP на 1-4 ядра, Trustzone, улучшенный NEON SIMD, VFPv4, аппаратная виртуализация, запуск до двух команд в цикл, очередное (in-order) конвейерное исполнение
|
8-64 КБ с четностью / 8-64 КБ с ECC L1 на каждое ядро, 128 КБ-2 МБ общий L2, 40-битные физические адреса
|
2,3 DMIPS/МГц
|
Cortex-A57[31]
|
Профиль «Application», AArch32 и AArch64, SMP на 1-4 ядра, Trustzone, улучшенный NEON SIMD, VFPv4, аппаратная виртуализация, запуск множества команд в цикл, глубокое внеочередное исполнение
|
48 КБ с двойной четностью (DED) / 32 КБ L1 с ECC на ядро, 512 КБ-2 МБ общий L2, 44-битные физ. адреса
|
Не менее 4,1 DMIPS/МГц на ядро (до 4,76 DMIPS/МГц в зависимости от реализации)
|
Cortex-A72[32]
|
|
|
|
Семейство ARM
|
Архитектура ARM
|
Ядро
|
Дополнения
|
Кэши (I / D), MMU
|
Типичные MIPS @ МГц
|
Разработки других групп
Разработаны сторонними компаниями, владевшими архитектурной лицензией от ARM, которая разрешала реализацию запатентованных инструкций.
Семейство
|
Набор команд
|
Микроархитектура
|
Набор расширение
|
Кэш I / D), MMU
|
Типичные Typical MIPS @ МГц
|
StrongARM
|
ARMv4
|
SA-110
|
5-стадийный конвейер
|
16 КБ / 16 КБ, MMU
|
100-206 МГц 1,0 DMIPS/МГц
|
SA-1100
|
Развитие SA-110
|
16 КБ / 8 КБ, MMU
|
|
Faraday[33]
|
ARMv4 |
FA510 |
6-стадийный конвейер |
До 32 КБ / 32 КБ кэш, MPU |
1,26 DMIPS/МГц 100—200 МГц
|
FA526 |
До 32 КБ / 32 КБ кэш, MMU |
1,26 MIPS/МГц 166—300 МГц
|
FA626 |
8-стадийный конвейер |
32 КБ / 32 КБ кэш, MMU |
1,35 DMIPS/МГц 500 МГц
|
ARMv5TE |
FA606TE |
5-стадийный конвейер |
Без кэша, без MMU |
1,22 DMIPS/МГц 200 МГц
|
FA626TE |
8-стадийный конвейер |
32 КБ / 32 КБ кэш, MMU |
1,43 MIPS/МГц 800 МГц
|
FMP626TE |
8-стадийный конвейер, SMP |
1,43 MIPS/МГц 500 МГц
|
FA726TE |
13-стадийный конвейер, запуск двух инструкций в такт |
2,4 DMIPS/МГц 1000 МГц
|
XScale
|
ARMv5TE
|
XScale
|
7-стадийный конвейер, Thumb, DSP
|
32 КБ / 32 КБ, MMU
|
133-400 МГц
|
Bulverde
|
Дополнительно: расширения WMMX, Wireless SpeedStep
|
32 КБ / 32 КБ, MMU
|
312-624 МГц
|
Monahans[34]
|
Дополнительно: расширение WMMX2
|
32 КБ / 32 КБ (L1), опциональный L2 кэш до 512 КБ, MMU
|
Up to 1,25 ГГц
|
Marvell Sheeva
|
ARMv5 |
Feroceon |
5-8 стадий конвейера, запуск одной инструкции за цикл |
16 КБ / 16 КБ, MMU |
600-2000 МГц
|
Jolteon |
5-8 стадий конвейера, запуск двух инструкций за цикл |
32 КБ / 32 КБ, MMU
|
PJ1 (Mohawk) |
5-8 стадий конвейера, запуск двух инструкций за цикл, WMMX2 |
32 КБ / 32 КБ, MMU |
1,46 DMIPS/МГц 1,06 ГГц
|
ARMv6 / ARMv7-A |
PJ4 |
6-9 стадий конвейера, запуск двух инструкций за цикл, WMMX2, SMP |
32 КБ / 32 КБ, MMU |
2,41 DMIPS/МГц 1,6 ГГц
|
Snapdragon
|
ARMv7-A
|
Scorpion[35]
|
1 или 2 ядра. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv3 FPU / NEON (ширина 128-бит)
|
256 КБ L2 на ядро
|
2,1 DMIPS/МГц на ядро
|
Krait[35]
|
1, 2, или 4 ядра. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON (ширина 128-бит)
|
4 КБ / 4 КБ L0, 16 КБ / 16 КБ L1, 512 КБ L2 на ядро
|
3,3 DMIPS/МГц на ядро
|
Apple A6, Apple A6X
|
ARMv7-A
|
Swift[36]
|
2 ядра. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON
|
L1: 32 КБ / 32 КБ, L2: 1 МБ
|
3,5 DMIPS/МГц на ядро
|
Apple A7
|
ARMv8-A |
Cyclone |
2 ядра. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON / TrustZone / AArch64 |
L1: 64 КБ / 64 КБ, L2: 1 МБ |
1,3 ГГц
|
Apple A8
|
ARMv8-A |
Cyclone |
2 ядра. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON / TrustZone / AArch64 |
L1: (н/у);КБ, L2: (н/у);МБ |
1,4 ГГц
|
X-Gene
|
ARMv8-A |
X-Gene |
64-разрядный, запуск до 4 инструкций за цикл, SMP, 64 ядра[37] |
кэш, MMU, виртуализация |
3 ГГц
|
Denver
|
ARMv8-A |
Denver |
64-разрядный, 2 ядра SMP, аппаратный декодер до 2 инструкций за цикл, либо программная динамическая рекомпиляция в широкие инструкции |
128 КБ I / 64 КБ D |
до 2,5 ГГц
|
ThunderX
|
ARMv8-A |
ThunderX |
64-разрядный, 2 модели: 8-16 или 24-48 ядер (возможно объединение двух чипов) |
|
До 2,5 ГГц
|
См. также
Примечания
Литература
- Digital Signal Processing and Applications Using the ARM Cortex M4; 1st Edition; Donald Reay; Wiley; 250 pages; 2014; ISBN 978-1118859049.
- Assembly Language Programming : ARM Cortex-M3; 1st Edition; Vincent Mahout; Wiley-ISTE; 256 pages; 2012; ISBN 978-1848213296.
- The Definitive Guide to the ARM Cortex-M3 and Cortex-M4 Processors; 3rd Edition; Joseph Yiu; Newnes; 600 pages; 2013; ISBN 978-0124080829.
- The Definitive Guide to the ARM Cortex-M0; 1st Edition; Joseph Yiu; Newnes; 552 pages; 2011; ISBN 978-0-12-385477-3. [2]
|
|