ARM的原称是Acorn RISC Machine。后来称为Advanced RISC Machine。ARM指令集属于RISC精简指令集。ARM架构从ARMv1一直发展到现在的ARMv8。这里有3个术语要注意区分:
ARM architecture:架构,指令级的。
ARM core:CPU核。MMU、Cache等术语core的范畴。
ARM family:处理器家族。
了解ARM的发展史,需要结合上述3种术语一起了解,他们是紧密结合的。
ARM官方称为Classic Processors。包括ARM11及之前的处理器。ARM1到ARM6属于上古时代的处理器,现在已经没有应用了。ARM7到ARM11虽然发布时间也有10多年到20多年了,生产了大约200亿设备。但是现在仍然有应用。现代操作系统对ARMv4及以后架构都有良好的支持。
在1983到1985年间设计,其没有商业产品。其架构为ARMv1。支持的指令集如下:
基本数据处理指令(不包括乘法指令)
基于字节、字和多字的读取和写入指令
BL等跳转指令
软中断指令SWI
ARMv1的寻址空间为26位。但是数据总线为32位。
ARM1存在严重的不足是不支持乘法运算。ARM2添加了MUL和MLA两条指令。同时ARM2也添加了硬件协处理器的支持,并准备后续添加FPA(Floating point accelerator),但最终没有FPA,第一款支持硬件FP的机器是采用ARM3 core的A5000。同时R8和R9两个寄存器被添加到快速中断模式中。
由于缺乏操作系统的支持,第一台ARM2电脑在1987年才发布。ARM2的架构为ARMv2,寻址空间仍然为26位。
需要提到ARM250,其架构为ARMv2a,添加了SWP和SWPB指令,同时集成了MMU,图形和I/O处理器。ARM3 core第一次发布时间是在1989年,其架构为ARMv2a。ARM3是第一款支持cache的ARM处理器。
在1991年发布ARM3之后,ARM更名为ARM Ltd (Advanced RISC Machines)。命名直接跳过了ARM4和ARM5。ARM6最重要的改变是支持32位寻址。同时引入如下重要更新:
添加两种新的处理器模式:内存读取错误和未定义指令
添加CPSR和SPSR两个寄存器
增加MRS和MSR指令,用于访问上述两个寄存器
ARM6的架构为ARMv3。第一款使用ARM6的处理器是ARM610,1993用在苹果设备上。
ARM7,1993年首次发布,仍然使用ARMv3的架构。但是后来的ARM7T,首次引入了
T.D.M.I
Thumb support, debug support, enhanced multiplication, and in-circuit emulation
架构也升级为ARMv4T。技术特点为:增强的乘法、cache和MMU,以及Thumb指令的引入。
使用ARMv4T架构。1997年首次发布,是应用最为广泛的ARM处理器。ARM9E使用ARMv5TE和ARMv5TEJ架构。首次引入哈佛架构。
使用ARMv6架构。
Cortex系列分为M、R和A3类。
架构与核对应关系表
Architecture  | Cores  | 
ARMv1  | ARM1  | 
ARMv2  | ARM2, ARM250, ARM3  | 
ARMv3  | ARM6, ARM7  | 
ARMv4  | ARM8  | 
ARMv4T  | ARM7TDMI, ARM9TDMI, SecurCore SC100  | 
ARM5vTE  | ARM7EJ, ARM9E, ARM10E  | 
ARMv6  | ARM11  | 
ARMv6-M  | Cortex-M0/0+/1, SecurCore SC000  | 
ARMv7-M  | Cortex-M3, SecurCore SC300  | 
ARMv7E-M  | Cortex-M4/7  | 
ARMv8-M  | Cortex-M23/33  | 
ARMv7-R  | Cortex-R4/5/7/8  | 
ARMv8-R  | Cortex-R52  | 
ARMv7-A  | Cortex-A5/7/8/9/12/15/17  | 
ARMv8-A  | Cortex-A32  | 
ARMv8-A (64/32)  | Cortex-A35/53/57/72/73  | 
ARM官方技术图
经典处理器时间线
| Year | ARM7 | ARM8 | ARM9 | ARM10 | ARM11 | 
| 1993 | ARM700 | ||||
| 1994 |  ARM710 ARM7DI  | ||||
| 1995 |  ARM710a | ||||
| 1996 | ARM810 | ||||
| 1997 |  ARM720T ARM740T  | ||||
| 1998 |  ARM7TDMI ARM710T  |  ARM9TDMI ARM940T  | |||
| 1999 |  ARM9E-S ARM966E-S  | ||||
| 2000 |  ARM920T ARM922T ARM946E-S  | ARM1020T | |||
| 2001 |  ARM7TDMI-S ARM7EJ-S  |  ARM9EJ-S ARM926EJ-S  |  ARM1020E ARM1022E  | ||
| 2002 | ARM1026EJ-S | ARM1136J(F)-S | |||
| 2003 | ARM968E-S |  ARM1156T2(F)-S ARM1176JZ(F)-S  | |||
| 2004 | |||||
| 2005 | ARM11MPCore | ||||
| 2006 | ARM996HS | 
Cortex时间线
| Year | microcontroller | real-time | application (32bit) | application (64bit) | 
| 2004 | Cortex-M3 | |||
| 2005 | Cortex-A8 | |||
| 2006 | ||||
| 2007 | Cortex-M1 | Cortex-A9 | ||
| 2008 | ||||
| 2009 | Cortex-M0 | Cortex-A5 | ||
| 2010 | Cortex-M4(F) | Cortex-A15 | ||
| 2011 | Cortex-R4/5/7 | Cortex-A7 | ||
| 2012 | Cortex-M0+ |  Cortex-A53 Cortex-A57  | ||
| 2013 | Cortex-A12 | |||
| 2014 | Cortex-M7(F) | Cortex-A17 | ||
| 2015 |  Cortex-A35 Cortex-A72  | |||
| 2016 |  Cortex-M23 Cortex-M33(F)  |  Cortex-R8 Cortex-R52  | Cortex-A32 | Cortex-A73 | 
| 2017 | 
【1】杜春雷. ARM体系结构与编程[M]. 清华大学出版社, 2003.
【2】https://www.arm.com/zh/products/processors/instruction-set-architectures/index.php
【3】http://baike.baidu.com/item/arm/7518299
【4】https://www.everything2.com/title/ARM1
【5】https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures