ILD

ARM架构及处理器分类整理
作者:Herbert Yuan 邮箱:yuanjp89@163.com
发布时间:2017-5-20 站点:Inside Linux Development

1 前言

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种术语一起了解,他们是紧密结合的。

2 经典处理器

ARM官方称为Classic Processors。包括ARM11及之前的处理器。ARM1到ARM6属于上古时代的处理器,现在已经没有应用了。ARM7到ARM11虽然发布时间也有10多年到20多年了,生产了大约200亿设备。但是现在仍然有应用。现代操作系统对ARMv4及以后架构都有良好的支持。

2.1 ARM1

在1983到1985年间设计,其没有商业产品。其架构为ARMv1。支持的指令集如下:

ARMv1的寻址空间为26位。但是数据总线为32位。

2.2 ARM2

ARM1存在严重的不足是不支持乘法运算。ARM2添加了MUL和MLA两条指令。同时ARM2也添加了硬件协处理器的支持,并准备后续添加FPA(Floating point accelerator),但最终没有FPA,第一款支持硬件FP的机器是采用ARM3 core的A5000。同时R8和R9两个寄存器被添加到快速中断模式中。

由于缺乏操作系统的支持,第一台ARM2电脑在1987年才发布。ARM2的架构为ARMv2,寻址空间仍然为26位。

2.3 ARM3

需要提到ARM250,其架构为ARMv2a,添加了SWP和SWPB指令,同时集成了MMU,图形和I/O处理器。ARM3 core第一次发布时间是在1989年,其架构为ARMv2a。ARM3是第一款支持cache的ARM处理器。

2.4 ARM6

在1991年发布ARM3之后,ARM更名为ARM Ltd (Advanced RISC Machines)。命名直接跳过了ARM4和ARM5。ARM6最重要的改变是支持32位寻址。同时引入如下重要更新:

添加两种新的处理器模式:内存读取错误和未定义指令

添加CPSR和SPSR两个寄存器

增加MRS和MSR指令,用于访问上述两个寄存器

ARM6的架构为ARMv3。第一款使用ARM6的处理器是ARM610,1993用在苹果设备上。

2.5 ARM7

ARM7,1993年首次发布,仍然使用ARMv3的架构。但是后来的ARM7T,首次引入了

T.D.M.I

Thumb support, debug support, enhanced multiplication, and in-circuit emulation

架构也升级为ARMv4T。技术特点为:增强的乘法、cache和MMU,以及Thumb指令的引入。

2.6 ARM9

使用ARMv4T架构。1997年首次发布,是应用最为广泛的ARM处理器。ARM9E使用ARMv5TE和ARMv5TEJ架构。首次引入哈佛架构。

2.7 ARM11

    使用ARMv6架构。

3 Cortex系列

    Cortex系列分为M、R和A3类。

4 ARM架构技术图

架构与核对应关系表

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官方技术图


5 时间线

经典处理器时间线

 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    

3 References

【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

Copyright © insidelinuxdev.net 2017-2021. Some Rights Reserved.