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 系列
|