• #64/32位架构
  • #32位架构(Cortex)
  • #32位架构(旧有架构)
  • #ARM CPU 模式
  • #用户模式
  • #系统模式
  • #Supervisor (svc) 模式
  • #Abort 模式
  • #未定义模式
  • #干预模式
  • #快速干预模式
  • #Hyp 模式
  • #ARM 寄存器

嵌入式CPU架构汇总,在产品选型时,第一就要考虑的是就是CPU。本篇文章汇总当前流行的arm芯片。

#ARM 历史

arm 芯片历史架构处理器家族 ARMv1ARM1ARMv2ARM2、ARM3ARMv3ARM6、ARM7ARMv4StrongARM、ARM7TDMI、ARM9TDMI ARMv5ARM7EJ、ARM9E、ARM10E、XScaleARMv6ARM11、ARM Cortex-MARMv7ARM Cortex-A、ARM Cortex-M、ARM Cortex-RARMv8Cortex-A35、Cortex-A50系列、Cortex-A72、Cortex-A73

#ARM架构 (Advanced RISC Machine)

#64/32位架构

64/32位架构推出年份 2011年最新架构版本 ARMv8-A、ARMv8.1-A、ARMv8.2-A字节序 可配置大小端序(默认小端序)指令编码长度

T32(Thumb-2):16或32位

兼容ARMv7用户空间[1]扩展指令集Thumb-2、NEON、Jazelle、VFPv4-D16、VFPv4通用寄存器 31个64位整数寄存器[1]浮点寄存器

#32位架构(Cortex)

32位架构(Cortex)最新架构版本 ARMv8-R、ARMv8-M、ARMv7-A、ARMv7-R、ARMv7E-M、ARMv7-M、ARMv6-M字节序

但Cortex-M不能在指令运行时调整指令编码长度

Thumb-2:16或32位扩展指令集 Thumb-2、NEON、Jazelle、DSP、Saturated、FPv4-SP、FPv5通用寄存器

R15是程序计数器(在较老的架构设计中为26位定址)

R14作为链接寄存器(link register)浮点寄存器

#32位架构(旧有架构)

32位架构(旧有架构)最新架构版本 ARMv6、ARMv5、ARMv4T、ARMv3、ARMv2字节序 ARMv3开始为可配置大小端序(默认小端序)指令编码长度

Thumb:16或32位扩展指令集Thumb、Jazelle通用寄存器

R15是程序计数器(在较老的架构设计中为26位定址)

R14作为链接寄存器(link register)

#ARM CPU 模式

ARM架构指定了以下的CPU模式。在任何时刻,CPU只可处于某一种模式,但可由于外部事件(中断)或编程方式进行模式切换。

#用户模式

仅非特权模式。

#系统模式

仅无需例外进入的特权模式。仅以执行明确写入CPSR的模式位的指令进入。

#Supervisor (svc) 模式

在CPU被重置或者SWI指令被执行时进入的特权模式。

#Abort 模式

预读取中断或数据中断异常发生时进入的特权模式。

#未定义模式

未定义指令异常发生时进入的特权模式。

#干预模式

处理器接受一条IRQ干预时进入的特权模式。

#快速干预模式

处理器接受一条IRQ干预时进入的特权模式。

#Hyp 模式

armv-7a为cortex-A15处理器提供硬件虚拟化引进的管理模式。

#ARM 寄存器

寄存器 R0-R7 对于所有CPU模式都是相同的,它们不会被分块。

对于所有的特权CPU模式,除了系统CPU模式之外,R13和R14都是分块的。也就是说,每个因为一个异常(exception)而可以进入模式,有其自己的R13和R14。这些寄存器通常分别包含堆栈指针和函数调用的返回地址。

寄存器,对于所有CPU模式 usrsyssvcabtundirqfiq R0 R1 R2 R3 R4 R5 R6 R7 R8R8_fiq R9R9_fiq R10R10_fiq R11R11_fiq R12R12_fiq R13R13_svcR13_abtR13_undR13_irqR13_fiq R14R14_svcR14_abtR14_undR14_irqR14_fiq R15 CPSR SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq

同名的名称:

R13 也被指为 SP(Stack Pointer) R14 也被指为 LR(Link Register) R15 也被指为 PC(Program Counter)

#ARM A系列

ARM A

Application ARM-based chips

Application

processors

(32-bit)

Cortex-A5

ATM702x

  • Amlogic M805/S805, T82x
  • Atmel SAMA5D3
  • InfoTM iMAPx820, iMAPx15
  • Qualcomm Snapdragon S4 Play, 200
  • RDA RDA8810PL
  • Telechips TCC892x

Cortex-A7

  • Allwinner A2x, A3x, A83T, H3, H8
  • NXP i.MX7
  • Broadcom VideoCore BCM2836, BCM23550
  • NXP Semiconductors QorIQ LS10xx
  • Leadcore LC1813, LC1860/C, LC1913, LC1960
  • Marvell Armada PXA1920, 1500 mini plus
  • MediaTek MT65xx
  • Qualcomm Snapdragon 200, 400

Cortex-A8

  • Allwinner A1x
  • Apple A4
  • Freescale i.MX5
  • Rockchip RK291x
  • Samsung Exynos 3110(S5PC110), S5PV210
  • Texas Instruments OMAP 3
  • Texas Instruments Sitara AM3xxx
  • Texas Instruments DM38x
  • ZiiLABS ZMS-08

Cortex-A9

  • Actions f="https://http://zhuanlan.zhihu.com/wiki/Actions_Semiconductor#Products">ATM702x, ATM703x
  • Altera Cyclone V, Arria V/10
  • Amlogic AML8726, MX, M6x, M801, M802/S802, S812, T86x
  • Apple A5, A5X
  • Broadcom VideoCore BCM21xxx, BCM28xxx
  • Freescale i.MX6
  • HiSilicon K3V2, 910's
  • InfoTM iMAPx912
  • Leadcore LC1810, LC1811
  • Marvell Armada 1500 mini
  • MediaTek MT65xx
  • Nvidia Tegra, 2, 3, 4i
  • Nufront NuSmart 2816M, NS115, NS115M
  • Renesas EMMA EV2, R-Car H1, RZ/A
  • Rockchip ef="https://zhuanhttp://lan.zhihu.com/wiki/Rockchip#RK292x_series">RK292x, RK30xx, RK31xx
  • Samsung Exynos 4 421x, 441x
  • ST-Ericsson NovaThor
  • Telechips TCC8803
  • Texas Instruments OMAP 4
  • Texas Instruments Sitara AM4xxx
  • VIA WonderMedia WM88x0, 89x0
  • Xilinx Zynq-7000
  • ZiiLABS ZMS-20, ZMS-40

Cortex-A15

  • Allwinner A80
  • HiSilicon K3V3
  • MediaTek MT8135/V
  • Nvidia Tegra 4, K1
  • Renesas R-Car H2
  • Samsung Exynos 5 52xx, 54xx
  • Texas Instruments OMAP 5, DRA7xx, AM57xx
  • Texas Instruments Sitara AM5xxx

Cortex-A17

  • MediaTek MT6595, MT5595
  • Mstar 6A928
  • Rockchip RK3288

ARMv7-A

compatible

  • Apple A6, A6X, S1, S1P, S2, S3
  • Broadcom Brahma-B15
  • Marvell P4J
  • Qualcomm Snapdragon S1, S2, S3, S4 Plus, S4 Pro, 600, 800 (Scorpion, Krait)

Others

  • Enhanced Cortex-A8
  • Enhanced Cortex-A9
  • Cortex-A12
  • Cortex-A32

Application

processors

(64-bit)

Cortex-A35

  • NXP i.MX8X
  • MediaTek MT8516

Cortex-A53

  • Actions GT7, S900, V700
  • Allwinner A64, H5, H64, R18
  • Altera Stratix 10
  • Amlogic S9 Family, T96x
  • Broadcom BCM2837
  • EZchip TILE-Mx100
  • HiSilicon Kirin 620, href="https://zhuanlan.zhihu.com/wiki/HiSilicon#Kirin_650_and_655">65x, href="https://zhuanlan.zhihu.com/wiki/HiSilicon#Kirin_930_and_93x">93x
  • Marvell Armada PXA1928, Mobile PXA1908/PXA1936
  • MediaTek MT673x, MT675x, MT6795, MT873x, MT8752, MT8163
  • NXP ARM S32
  • Qualcomm Snapdragon href="https://zhuanlhttp://an.zhihu.com/wiki/List_of_Qualcomm_Snapdragon_devices">41x, 42x, 43x, 61x, 62x
  • Rockchip RK3328, RK3368
  • Samsung Exynos 7 75xx, 78xx
  • Spreadtrum SC9860/GV, SC9836
  • Xilinx ZynqMP
  • NXP Semiconductors QorIQ LS1088
  • NXP i.MX8M

Cortex-A57

  • AMD Opteron A1100-series
  • NXP Semiconductors QorIQ LS20xx
  • Nvidia Tegra X1
  • Qualcomm Snapdragon 808, 810
  • Samsung Exynos 7 5433, 7420

Cortex-A72

  • HiSilicon "https://zhuanlan.zhihu.com/wiki/HiSilicon#Kirin_950_and_955">Kirin 95x
  • MediaTek "https://zhuanlan.zhihu.com/wiki/MediaTek#Octa-_and_deca-core">Helio X2x, ef="https://zhuanlan.zhihu.com/wiki/MediaTek#Standalone_application_and_tablet_processors">MT817x
  • Mstar 6A938
  • Qualcomm Snapdragon href="https://zhuanlan.zhihu.com/wiki/List_of_Qualcomm_Snapdragon_devices#Snapdragon_650,_652_and_653">65x
  • Rockchip RK3399
  • NXP Semiconductors QorIQ LS2088
  • NXP Semiconductors QorIQ LS1046A
  • NXP i.MX8

Cortex-A73

  • HiSilicon Kirin 960, Kirin 970
  • MediaTek Helio X30

Cortex-A75

  • Qualcomm Snapdragon 710, Snapdragon 845

Cortex-A76

  • HiSilicon Kirin 980
  • Qualcomm Snapdragon 855
  • Samsung Exynos 9820

ARMv8-A

compatible

  • Apple A7, A8, A8X, A9, A9X, A10, A10X, A11, A12
  • Applied Micro X-Gene
  • Cavium ThunderX, ThunderX2
  • Nvidia Tegra K1 (Project Denver)
  • Samsung Mongoose
  • Qualcomm Kryo, Falkor

#ARM M 系列

ARM M

  • ARM-based chips

Cortex-M0

  • Cypress PSoC 4000, 4100, 4100M, 4200, 4200DS, 4200L, 4200M
  • Infineon XMC1000
  • Nordic nRF51
  • NXP LPC1100, LPC1200
  • nuvoTon NuMicro
  • Sonix SN32F700
  • STMicroelectronics STM32 F0
  • Toshiba TX00
  • Vorago VA108x0

Cortex-M0+

  • Cypress PSoC 4000S, 4100S, 4100S+, 4100PS, 4700S, FM0+
  • Holtek HT32F52000
  • Microchip (Atmel) SAM C2, D0, D1, D2, DA, L2, R2, R3
  • NXP LPC800, LPC11E60, LPC11U60
  • NXP (Freescale) Kinetis E, EA, L, M, V1, W0
  • Renesas Synergy S1
  • Silicon Labs (Energy Micro) EFM32 Zero, Happy
  • STMicroelectronics STM32 L0

Cortex-M1

  • Altera FPGAs Cyclone-II, Cyclone-III, Stratix-II, Stratix-III
  • Microsemi (Actel) FPGAs Fusion, IGLOO/e, ProASIC3L, ProASIC3/E
  • Xilinx FPGAs Spartan-3, Virtex-2-3-4

Cortex-M3

  • Actel SmartFusion, SmartFusion 2
  • Analog Devices ADuCM300
  • Cypress PSoC 5000, 5000LP, FM3
  • Fujitsu FM3
  • Holtek HT32F
  • Microchip (Atmel) SAM 3A, 3N, 3S, 3U, 3X
  • NXP LPC1300, LPC1700, LPC1800
  • ON Semiconductor Q32M210
  • Silicon Labs Precision32
  • Silicon Labs (Energy Micro) EFM32 Tiny, Gecko, Leopard, Giant
  • STMicroelectronics STM32 F1, F2, L1
  • Texas Instruments F28, LM3, TMS470, OMAP 4
  • Toshiba TX03

Cortex-M4

  • Microchip (Atmel) SAM 4L, 4N, 4S
  • NXP (Freescale) Kinetis K, W2

Cortex-M4F

  • Cypress 6200, FM4
  • Infineon XMC4000
  • Microchip (Atmel) SAM 4C, 4E, D5, E5, G5
  • Microchip CEC1302
  • Nordic nRF52
  • NXP LPC4000, LPC4300
  • NXP (Freescale) Kinetis K, V3, V4
  • Renesas Synergy S3, S5, S7
  • Silicon Labs (Energy Micro) EFM32 Wonder
  • STMicroelectronics STM32 F3, F4, L4, L4+, WB
  • Texas Instruments LM4F/TM4C, MSP432
  • Toshiba TX04

Cortex-M7F

  • Microchip (Atmel) SAM E7, S7, V7
  • NXP (Freescale) Kinetis KV5x
  • STMicroelectronics STM32 F7, H7

Cortex-M23

  • Microchip (Atmel) SAM L10, L11