ARM产品经典系列:包括ARM7、ARM9、ARM11
ARM7采用3级流水线
ARM9采用5级流水线
Cortex-A9采用8级流水线
Cortex-A系列
针对开放式操作系统的高性能处理器
应用于智能手机、数字电视、智能本等高端运用
Cortex-R系列
针对实时系统、满足实时性的控制需求
应于汽车制动系统、动力系统等
Cortex-M系列
为单片机驱动的系统提供了低成本优化方案(STM32)
应用于传统的微控制器市场、智能传感器、汽车周边等
一、ARM处理器概述
1)RISC 处理器 / CISC 处理器
RISC处理器(经典指令集)
只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令
RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛
CISC处理器(复杂指令集)
不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定
CISC处理器在性能上有很大优势,多用于PC及服务器等领域
2)SOC
SOC(System on Chip)
即片上系统,将一个系统中所需要的全部部件集成在一个芯片中在体积、功耗、价格上有很大优势
二、ARM指令集概述
1)指令
能够指示处理器执行某种运算的命令称为指令(如加、减、乘 …)
指令在内存中以机器码(二进制)的方式存在
每一条指令都对应一条汇编
程序是指令的有序集合
指令集
处理器能识别的指令的集合称为指令集
不同架构的处理器指令集不同
指令集是处理器对开发者提供的接口
2)ARM指令集
大多数ARM处理器都支持两种指令集:
ARM指令集
所有指令(机器码)都占用32bit存储空间
代码灵活度高、简化了解码复杂度
执行ARM指令集时PC值每次自增4
Thumb指令集
所有指令(机器码)都占用16bit存储空间
代码密度高、节省存储空间
执行Thumb指令集时PC值每次自增2
3)编译原理
程序执行过程: 预处理 编译 汇编 链接
机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植
汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植
C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植
三、ARM存储模型
1)ARM数据类型
ARM采用32位架构,基本数据类型有以下三种
Byte 8bits
Halfword(半字节) 16bits
Word 32bits
数据存储
Word型数据在内存的起始地址必须是4的整数倍
Halfword型数据在内存的起始地址必须是2的整数倍
注:即数据本身是多少位在内存存储时就应该多少位对齐
2)字节序
大端对齐
低地址存放高位,高地址存放低位
a = 0x12345678;
小端对齐(Linux系统)
低地址存放低位,高地址存放高位(同网络编程)
a = 0x12345678;
注:ARM一般使用小端对齐
3)ARM指令存储
处理器处于ARM状态时
所有指令在内存的起始地址必须是4的整数倍
PC值由其[31:2]决定,[1:0]位未定义
可以自定义PC值的起始地址:假如PC = 3, 程序执行时会自动把最后两位变成00(0011 -> 0000)
处理器处于Thumb状态时
所有指令在内存的起始地址必须是2的整数倍
PC值由其[31:1]决定,[0]位未定义
程序执行时会自动把最后一位变成0(二进制)
注:即指令本身是多少位在内存存储时就应该多少位对齐
四、ARM工作模式
User Mode(用户模式):
这是最基本的模式,用于执行普通的应用程序代码。在这个模式下,处理器可以执行大多数指令,但不能访问某些特权功能。
FIQ (Fast Interrupt Request) Mode(快速中断请求模式):
当一个高优先级的中断请求(FIQ)被触发时,处理器会进入这个模式。在这个模式下,可以快速响应外部事件,如定时器中断。
IRQ (Interrupt Request) Mode(中断请求模式):
当一个低优先级的中断请求(IRQ)被触发时,处理器会进入这个模式。这个模式用于处理一般的中断,如键盘输入或网络数据包。
SVC (Supervisor Call) Mode(监督调用模式):
这个模式通常用于操作系统的系统调用处理。当执行一个软中断指令(如SVC指令)或系统复位时,处理器会进入这个模式。
Abort Mode(中止模式):
当发生存储器访问异常(如页面错误)时,处理器会进入这个模式。这个模式用于处理存储器访问错误。
Undefined Mode(未定义模式):
当执行了一个未定义的指令时,处理器会进入这个模式。这个模式用于处理非法指令异常。
System Mode(系统模式):
这个模式使用与用户模式相同的寄存器集,但是具有特权访问权限。它通常用于操作系统的核心代码。
Monitor Mode(监控模式):
这是一个特权模式,用于执行安全监控代码,如安全启动和调试。ARM工作模式分类
按照权限
User为非特权模式(权限较低),其余模式均为特权模式(权限较高)
按照状态
FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后会进入对应的模式