ARM芯片
嵌入式CPU架构汇总,在产品选型时,第一就要考虑的是就是CPU。本篇文章汇总当前流行的arm芯片。
ARM 历史
架构 | 处理器家族 |
---|---|
ARMv1 | ARM1 |
ARMv2 | ARM2、ARM3 |
ARMv3 | ARM6、ARM7 |
ARMv4 | StrongARM、ARM7TDMI、ARM9TDMI |
ARMv5 | ARM7EJ、ARM9E、ARM10E、XScale |
ARMv6 | ARM11、ARM Cortex-M |
ARMv7 | ARM Cortex-A、ARM Cortex-M、ARM Cortex-R |
ARMv8 | Cortex-A35、Cortex-A50系列、Cortex-A72、Cortex-A73 |
ARM架构 (Advanced RISC Machine)
64/32位架构
推出年份 | 2011年 |
---|---|
最新架构版本 | ARMv8-A、ARMv8.1-A、ARMv8.2-A |
字节序 | 可配置大小端序(默认小端序) |
指令编码长度 | AArch64/A64、AArch32/A32:32位 T32(Thumb-2):16或32位 兼容ARMv7用户空间[1] |
扩展指令集 | Thumb-2、NEON、Jazelle、VFPv4-D16、VFPv4 |
通用寄存器 | 31个64位整数寄存器[1] |
浮点寄存器 | 32个128位寄存器[1],用于32位和64位标量浮点数或SIMD浮点数或整数;或密码数值 |
32位架构(Cortex)
最新架构版本 | ARMv8-R、ARMv8-M、ARMv7-A、ARMv7-R、ARMv7E-M、ARMv7-M、ARMv6-M |
---|---|
字节序 | 可配置大小端序(默认小端序) 但Cortex-M不能在指令运行时调整 |
指令编码长度 | 32位 Thumb-2:16或32位 |
扩展指令集 | Thumb-2、NEON、Jazelle、DSP、Saturated、FPv4-SP、FPv5 |
通用寄存器 | 15个32位整数寄存器 R15是程序计数器(在较老的架构设计中为26位定址) R14作为链接寄存器(link register) |
浮点寄存器 | 最多32个64位寄存器[2],SIMD/标准浮点数(可选项) |
32位架构(旧有架构)
最新架构版本 | ARMv6、ARMv5、ARMv4T、ARMv3、ARMv2 |
---|---|
字节序 | ARMv3开始为可配置大小端序(默认小端序) |
指令编码长度 | 32位 Thumb:16或32位 |
扩展指令集 | Thumb、Jazelle |
通用寄存器 | 15个32位整数寄存器 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。这些寄存器通常分别包含堆栈指针和函数调用的返回地址。
usr | sys | svc | abt | und | irq | fiq |
---|---|---|---|---|---|---|
R0 | ||||||
R1 | ||||||
R2 | ||||||
R3 | ||||||
R4 | ||||||
R5 | ||||||
R6 | ||||||
R7 | ||||||
R8 | R8_fiq | |||||
R9 | R9_fiq | |||||
R10 | R10_fiq | |||||
R11 | R11_fiq | |||||
R12 | R12_fiq | |||||
R13 | R13_svc | R13_abt | R13_und | R13_irq | R13_fiq | |
R14 | R14_svc | R14_abt | R14_und | R14_irq | R14_fiq | |
R15 | ||||||
CPSR | ||||||
SPSR_svc | SPSR_abt | SPSR_und | SPSR_irq | SPSR_fiq |
同名的名称:
R13 也被指为 SP(Stack Pointer)
R14 也被指为 LR(Link Register)
R15 也被指为 PC(Program Counter)
ARM A系列
Application ARM-based chips
| |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Application processors (32-bit) | |||||||||||||||||
Application processors (64-bit) |
|
ARM M 系列
|