一、ARM发展史
- ARM的前身为艾康电脑(Acorn),于1978年,于英国剑桥创立。
- 1985年开发出全球第一款商用RISC处理器,即ARM1。
- 1990年艾康电脑财务危机,受苹果和VLSI的投资,分割出独立子公司Advanced RISC Machines (ARM) ,ARM公司正式成立面世。
- 1991年,ARM推出第一款嵌入式RISC处理器,即ARM6。
- 1993年,发布ARM7。
- 1997年,发布ARM9TDMI。
- 1999年,发布ARM9E。
- 2001年,发布ARMv6架构。
- 2002年,发布ARM11微架构。
- 2004年,发布ARMv7架构的Cortex系列处理器,同时推出Cortex-M3。
- 2005年,发布Cortex-A8处理器。
- 2007年,发布Cortex-M1和Cortex-A9。
- 2009年,实现Cortex-A9、发布Cortex-M0。
- 2011年,推出Cortex-A7,ARMv8发布。
- 2012年,开始64位处理器进程。
二、ARM体系结构
1.ARM是RISC架构
- 常用ARM汇编指令只有二三十条
- ARM是低功耗CPU
- ARM的架构非常适合单片机、嵌入式,尤其是物联网领域;而服务器等高性能领域目前主导还是Intel
2.ARM是统一编址的
- 大部分ARM(M3 M4 M7 M0 ARM9 ARM11 A8 A9等)都是32位架构
- 32位ARM CPU支持的内存少于4G,通过CPU地址总线来访问
- SoC中的各种内部外设通过各自的SFR编程访问,这些SFR的访问方式类似于访问普通内存,这叫IO与内存统一编址。
3.ARM是哈佛结构的
- 常见ARM(除ARM7外)都是哈佛结构的
- 哈佛结构保证了ARM CPU运行的稳定性和安全性,因此ARM适用于嵌入式领域
- 哈佛结构也决定了ARM裸机程序(使用实地址即物理地址)的链接比较麻烦,必须使用复杂的链接脚本告知链接器如何组织程序;对于OS之上的应用(工作在虚拟地址之中)则不需考虑这么多
三、ARM处理器列表
ARM架构版本号和内核版本号是由ARM确定的,而芯片型号是由半导体公司确定的。
1.架构进化史
2.处理器内核
家族 | 架构 | 内核 | 特色 | 缓存 (I/D)/MMU | 常规 MIPS 于 MHz | 应用 |
ARM1 | ARMv1 | ARM1 | 无 | |||
ARM2 | ARMv2 | ARM2 | Architecture 2 加入了MUL(乘法)指令 | 无 | 4 MIPS @ 8MHz | Acorn Archimedes,Chessmachine |
ARMv2a | ARM250 | Integrated MEMC (MMU),图像与IO处理器。Architecture 2a 加入了SWP和SWPB(置换)指令。 | 无,MEMC1a | 7 MIPS @ 12MHz | Acorn Archimedes | |
ARM3 | ARMv2a | ARM2a | 首次在ARM架构上使用处理器缓存 | 均为4K | 12 MIPS @ 25MHz | Acorn Archimedes |
ARM6 | ARMv3 | ARM610 | v3 架构首创支援定址32位元的内存(针对26位元) | 均为4K | 28 MIPS @ 33MHz | Acorn Risc PC 600,Apple Newton |
ARM7 | ARMv3 | |||||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 三级流水线 | 无 | 15 MIPS @ 16.8 MHz | Game Boy Advance,Nintendo DS,iPod |
ARM710T | 均为8KB, MMU | 36 MIPS @ 40 MHz | Acorn Risc PC 700,Psion 5 series,Apple eMate 300 | |||
ARM720T | 均为8KB, MMU | 60 MIPS @ 59.8 MHz | Zipit | |||
ARM740T | MPU | |||||
ARMv5TEJ | ARM7EJ-S | Jazelle DBX | 无 | |||
StrongARM | ARMv4 | |||||
ARM8 | ARMv4 | |||||
ARM9TDMI | ARMv4T | ARM9TDMI | 五级流水线 | 无 | ||
ARM920T | 16KB/16KB, MMU | 200 MIPS @ 180 MHz | Armadillo,GP32,GP2X(第一颗内核), Tapwave Zodiac(Motorola i. MX1) | |||
ARM922T | 8KB/8KB, MMU | |||||
ARM940T | 4KB/4KB, MPU | GP2X(第二颗内核) | ||||
ARM9E | ARMv5TE | ARM946E-S | 可变动,tightly coupled memories, MPU | Nintendo DS,Nokia N-Gage Conexant 802.11 chips | ||
ARM966E-S | 无缓存,TCMs | ST Micro STR91xF,包含Ethernet [1] | ||||
ARM968E-S | 无缓存,TCMs | |||||
ARMv5TEJ | ARM926EJ-S | Jazelle DBX | 可变动,TCMs, MMU | 220 MIPS @ 200 MHz | 移动电话:Sony Ericsson(K, W系列),明基西门子(x65 系列和新版的) | |
ARMv5TE | ARM996HS | 无振荡器处理器 | 无缓存,TCMs, MPU | |||
ARM10E | ARMv5TE | ARM1020E | (VFP),六级流水线 | 32KB/32KB, MMU | ||
ARM1022E | (VFP) | 16KB/16KB, MMU | ||||
ARMv5TEJ | ARM1026EJ-S | Jazelle DBX | 可变动,MMU or MPU | |||
XScale | ARMv5TE | 80200/IOP310/IOP315 | I/O处理器 | |||
80219 | 400/600MHz | Thecus N2100 | ||||
IOP321 | 600 BogoMips @ 600 MHz | Iyonix | ||||
IOP33x | ||||||
IOP34x | 1-2核,RAID加速器 | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | 应用处理器,七级流水线 | Zaurus SL-5600 | ||||
PXA255 | 32KB/32KB, MMU | 400 BogoMips @ 400 MHz | Gumstix,Palm Tungsten E2 | |||
PXA26x | 可达 400 MHz | Tungsten T3 | ||||
PXA27x | 800 MIPS @ 624 MHz | HTC Universal、Zaurus SL-C1000、3000、3100、3200、Dell Axim x30、x50和 x51 系列 | ||||
PXA800(E)F | ||||||
Monahans | 1000 MIPS @ 1.25 GHz | Mavell PXA300/PXA310/PXA320, Max frequency : PXA300@624Mhz, PXA310/PXA320@806Mhz | ||||
PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
IXC1100 | Control Plane Processor | |||||
IXP2400/IXP2800 | ||||||
IXP2850 | ||||||
IXP2325/IXP2350 | ||||||
IXP42x | NSLU2 | |||||
IXP460/IXP465 | ||||||
ARM11 | ARMv6 | ARM1136J(F)-S | SIMD, Jazelle DBX, (VFP),八级流水线 | 可变动,MMU | @ 532-665MHz (i.MX31 SoC) | Nokia N93,Zune,Nokia N800 |
ARMv6T2 | ARM1156T2(F)-S | SIMD, Thumb-2, (VFP),九级流水线 | 可变动,MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | SIMD, Jazelle DBX, (VFP) | 可变动,MMU+TrustZone | |||
ARMv6K | ARM11 MPCore | 1-4核对称多处理器,SIMD, Jazelle DBX, (VFP) | 可变动,MMU | |||
Cortex-A (32 bit) | ARMv7-A | Cortex-A7 | 1.75 DMIPS/MHz 1 GHz到1.2GHz | 全志a31、MediaTek MT6589,MT6572 | ||
Cortex-A8 | Application profile, VFP, NEON, Jazelle RCT, Thumb-2, 13-stage pipeline | 可变动 (L1+L2), MMU+TrustZone | 2.0 DMIPS/MHz 从600 MHz到超过1 GHz | Texas Instruments OMAP3、Apple A4 | ||
Cortex-A9 | 2.50 DMIPS @ 1GHz | Apple A5、Apple A5X、MediaTek MT6577,MT6575、Rockchip RK3088,RK3188, VIA Elite-E1000 | ||||
Cortex-A12 | 大约3.00 DMIPS @ 1.4GHz 28nm | 预估等同Apple A6、Apple A6X水平。 | ||||
Cortex-A15 | Thumb-2 TrustZone® NEON DSP & SVFPv4 | 从3.50 DMIPS到超过4.0 DMIPS @ 从1.4MHz到超过2.5GHz | Tegra 4 Exynos5250 | |||
Cortex-A9 MPCore | ||||||
Cortex-R | ARMv7-R | Cortex-R4(F) | Embedded profile, (FPU) | 可变动缓存,MMU可选配 | 600 DMIPS | Broadcom is a user |
Cortex-M | ARMv7-M | Cortex-M3 | Microcontroller profile | 无缓存,(MPU) | 120 DMIPS @ 100MHz | Luminary Micro[2] 微控制器家族 |
ARMv6-M | Cortex-M0 | |||||
Cortex-M1 | ||||||
ARMv7-ME | Cortex-M4 | Optional 8 region MPU with sub regions and background region | 1.25 DMIPS/MHz | |||
家族 | 架构 | 内核 | 特色 | 缓存 (I/D)/MMU | 常规 MIPS 于 MHz | 应用 |
注:
MIPS(Million Instructions Per Second):单字长定点指令平均执行速度 Million Instructions Per Second的缩写,每秒处理的百万级的机器语言指令数。这是衡量CPU速度的一个指标。
DMIPS(Dhrystone Million Instructions Per Second):表示了在Dhrystone这样一种测试方法下的MIPS,Dhrystone是一种整数运算测试程序。
MMU(Memory Management Unit):内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
MPU(Memory Protection Unit):内存保护单元,MPU中一个域就是一些属性值及其对应的一片内存。这些属性包括:起始地址、长度、读写权限以及缓存等。
FPU(Float Point Unit):浮点运算单元,FPU是专用于浮点运算的处理器。
流水线:流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就像工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即取指令、译码、执行、写回结果,浮点流水又分为八级流水。
3.ARM芯片
ARM芯片 | ||
ARM架构·ARM处理器内核列表 | ||
应用处理器(32-bit) | Cortex-A5 | 炬力 ATM702x 晶晨 M805/S805 Atmel SAMA5D3 InfoTM iMAPx820, iMAPx15 高通 骁龙 Snapdragon 200 Telechips TCC892x |
Cortex-A7 | 全志 A2x, A3x, A83T, H3, H8 博通 VideoCore BCM2836, BCM23550 飞思卡尔 QorIQ LS10xx 联芯 LC1813, LC1913 Marvell Armada PXA1920 联发科 MT65xx 高通骁龙 Snapdragon 200, 高通骁龙 Snapdragon 400 | |
Cortex-A8 | 全志 A1x 苹果 A4 飞思卡尔 i.MX5x 瑞芯微电子 RK291x 三星 Exynos 3110, S5PC110, S5PV210 Texas Instruments OMAP 3 ZiiLABS ZMS-08 | |
Cortex-A9 | 炬力 ATM702x, ATM703x Altera Cyclone V, Arria V/10 晶晨 AML8726, MX, M6x, M801, M802/S802, S812, T866 苹果 A5, A5X 博通 VideoCore BCM21xxx, BCM28xxx 飞思卡尔 i.MX6x 海思 K3V2 InfoTM iMAPx912 联芯科技 LC1810, LC1811 联发科 MT65xx 英伟达 Tegra, 2, 3, 4i 新岸线 NuSmart 2816M, NS115, NS115M 瑞萨科技 EMMA EV2, R-Car H1, RZ/A 瑞芯微电子 RK292x, RK30xx, RK31xx 三星 Exynos 4 爱立信 NovaThor Telechips TCC8803 德州仪器 OMAP 4 VIA 威信科电 WonderMedia WM88x0, 89x0 Xilinx Zynq-7000 ZiiLABS ZMS-20, ZMS-40 | |
Cortex-A15 | 海思 K3V3 联发科 MT6599 英伟达 Tegra 4 三星 Exynos 5 德州仪器 OMAP 5 全志科技 A80 瑞萨科技 R-Car H2 | |
Cortex-A17 | 联发科 MT6595 瑞芯微电子 RK3288 | |
ARMv7-A兼容 | 苹果 A6, A6X 博通 Brahma-B15 Marvell P4J 高通 Snapdragon S1/S2/S3 (Scorpion) 高通 Snapdragon S4 Plus/S4 Pro (Krait) 高通 Snapdragon 600/800 (Krait 300/Krait 400) | |
应用处理器(64-bit) | Cortex-A53 | 炬力 S900 全志 A64, H64 Altera Stratix 10 晶晨 S905 EZchip TILE-Mx100 Marvell Armada PXA1928, Mobile PXA1908/PXA1936 联发科 MT673x, MT675x, MT6795, MT8732, MT8752, Helio X10 高通 骁龙 410 瑞芯微电子 RK3368 Xilinx ZynqMP Mi Surge S1 |
Cortex-A57 | AMD Opteron A1100 飞思卡尔 QorIQ LS20xx 英伟达 Tegra X1 高通 骁龙 808, 810 三星 Exynos 7 | |
Cortex-A72 | 联发科 曦力 Helio X20 高通 骁龙 650, 652 | |
ARMv8-兼容 | 苹果 A7, A8, A8X, A9, A9X, A10, A10X, A11 Applied Micro X-Gene 三星 Mongoose Cavium ThunderX CN87xx, CN88xx 英伟达 Tegra K1 (Project Denver) 高通 骁龙 820,821,835,845 (Kryo,Kryo 200) | |
实时微控制器 | Cortex-R4F | 德州仪器RM4, TMS570 |
Cortex-R5F | Scaleo OLEA | |
微控制器 | Cortex-M0 | Energy Micro EFM32 Zero NXP LPC1100, LPC1200 意法半导体 STM32 F0 |
Cortex-M0+ | 飞思卡尔 Kinetis L NXP LPC800 | |
Cortex-M1 | Actel FPGAs Altera FPGAs Xilinx FPGAs | |
Cortex-M3 | Actel SmartFusion, SmartFusion 2 Atmel AT91SAM3 Cypress PSoC 5 Energy Micro EFM32 Tiny, Gecko, Leopard, Giant 富士通 FM3 NXP LPC1300, LPC1700, LPC1800 Silicon Labs Precision32 意法半导体 STM32 F1, F2, L1, W 德州仪器 F28, LM3, TMS470, OMAP 4 东芝 TX03 | |
Cortex-M4 | Atmel AT91SAM4 飞思卡尔 Kinetis K 德州仪器 OMAP 5 | |
Cortex-M4F | Energy Micro EFM32 Wonder 飞思卡尔 Kinetis K 英飞凌 XMC4000 NXP LPC4000, LPC4300 意法半导体 STM32 F3, F4 德州仪器 LM4F |
参考资料:
- 朱老师物联网大讲堂
- https://zh.wikipedia.org/wiki/ARM處理器內核列表