ARM-简介:指令集,工作模式,寄存器

嵌入式

以应用为中心,以计算机技术为基础,软、硬件可裁减(内核对驱动模块的裁剪、定制);
应用系统对功能,可靠性(取决于需求),成本,体积及功耗都有严格要求的计算机系统。

嵌入式特点

  • 专用性强,专用的计算机;
  • 运行环境差异性大;
  • 比通用PC机资源少(适用性,够用就好);
  • 功耗低,体积小,集成度高,成本低;
  • 具有较长的生命周期。

ARM含义

ARM(Advanced RISC Machine)处理器是英国Acorn有限公司设计的低功耗成本的微处理器。

  • ARM代表一个公司
  • ARM表示一个技术
  • ARM可以表示一些处理器的统称

(1)架构:支持的汇编指令集。

  • arm-v4,arm-v5,arm-v6
  • arm-v7(32Bits)
  • arm-v8(64Bits)
    单个指令就是用电子电路蓝图完成特定指令(关键字)的功能。

(2)内核
cortex-a9,a53,a75,a77
ARM公司授权芯片的公司

(3)SOC(System On Chip:片上系统)
芯片产家在内核的基础上,增加了一些外设,发布一款芯片,这些芯片可以统称为SOC.

eg:
骁龙865
麒麟990

指令集:RISC / CISC

(1)精简指令集RISC

  • RISC(Reduced Instruction Set Computer):结构简单,选取了使用频率高的简单指令。
    eg:ARM芯片,STM32,单片机微处理器MCU
    • 指令长度固定
    • 多为单周期指令
    • 在功耗、体积、价格等方面有很大优势,多用于嵌入式领域。

(2)复杂指令集CISC

  • CISC(Complex Instruction Set Computer):侧重于硬件执行指令的功能性,CISC指令及处理器的硬件结构复杂。
    eg:计算机CPU
    • CISC指令复杂,指令长度与周期不固定,在处理能力上有优势

(3)RISC-V
RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。

(4) RISC和CISC对比:
在这里插入图片描述
在这里插入图片描述

ARM产品分布:cortex-A / R / M

1)Cortex-A
面向尖端的基于虚拟内存的操作系统和用户应用。
高通,联发科,海思,三星,飞思卡尔

2)Cortex-R
实时处理器为要求可靠性、容错功能和实时响应的嵌入式系统提供高性能解决方案
专用领域:
汽车电子
照相机摄像机

3)Cortex-M
针对成本和功耗敏感的MCU和终端应用,一般不跑linux操作系统。
但是可以运行实时操作系统:FreeRTOS,uCosII,LiteOS(华为)。
意法半导体(ST)STM32系列

ARM core 提供的两种指令集:ARM / Thumb

指令宽度和CPU位数的区别

(一)指令宽度:一条指令所占的内存字节数。
指令集中,单条指令的宽度,指令本身编译成二进制机器码所占内存空间的大小。

(二)CPU位数:一条指令所能实现一次处理数据的位数。
单条指令一次处理数据的位数,cpu的位是指一条指令一次性可处理的数据量是多少(bit位),
一般和CPU中寄存器的位数有关。

ARM / Thumb指令集

ARM-V8:向下兼容ARM-v7架构

  • ARM指令集:支持64位 / 32位。一条指令占32位内存空间
  • Thumb指令集:支持32位 / 16位。一条指令占16位内存空间

注:
(1)
不管ARM是支持64位还是32位,ARM指令集中每条指令都占32位空间。
不管Thumb是支持32位还是16位,Thumb指令集中每条指令都占16位空间。

(2)ARM和Thumb指令集的区别:
1)ARM指令集功能更全,性能更高
2)thumb指令集比ARM指令集指令密度要大

在这里插入图片描述

ARM处理器-工作模式

在这里插入图片描述
ARM 有7种基本工作模式:

  • User:非特权模式,大部分任务执行在这种模式
  • FIQ:当一个高优先级(fast) 中断产生时将会进入这种模式
  • IRQ:当一个低优先级(normal) 中断产生时将会进入这种模式
  • SVC(Supervisor):当复位软中断指令执行时将会进入这种模式
    系统上电/reset(复位重启)时,默认进入SVC模式。
  • Abort:当存取异常时将会进入这种模式
  • Undef:当执行未定义指令时会进入这种模式
  • System:使用和User模式相同寄存器集的特权模式

Cortex-A特有模式:

  • Monitor:是为了安全而扩展出的用于执行安全监控代码的模式; 也是一种特权模式

注:根据不同异常源进入不同的模式,执行不同的代码以完成相对应的特定功能。

Cortex-A寄存器组成

(1)CPU(内核)组成

  • 运算器:加法运算器-》加法指令
  • 控制器
  • 寄存器

(2)寄存器功能
1)寄存器是集成于CPU内部的元件;
2)寄存器的功能是存储二进制(0 / 1)代码;
3)寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。

(3)Cortex-A寄存器组成
在这里插入图片描述

每种模式都有一组对应的寄存器,对于内存可以通过地址操作地址里面的数据,但是对于寄存器不能通过地址操作,访问寄存器只能通过其唯一的编号:R0-R15,CPSR,SPSR。
有些工作模式,可以共用同一寄存器,也有些特殊工作模式拥有私有的寄存器。
注:User 和 System模式下共用:R0-R15、CPSR是通用寄存器。

  • R0-R7:未分组寄存器,所有模式共用的通用寄存器:R0-R7

  • R8-R12:分组寄存器。除了FIQ私有R8_fiq-R12_fiq外,其余各种模式共用通用寄存器:R8-R12

  • R13-R14:异常模式下都有私有的寄存器。User 和 System 共用通用寄存器:R13-R14。
    R13(the stack point register):堆栈指针寄存器 SP,用于存放指向栈顶的地址
    R14(the link register):连接寄存器 Lr,用于存放子函数(子程序) / 异常中断的返回地址
    在这里插入图片描述

  • R15(the program counter):程序计数寄存器 PC,它是个地址寄存器,地址总是指向下一条待取指的指令。
    1)当处理器执行在ARM状态:
    所有指令 32 bits 宽,所有指令必须 word(4字节) 对齐。
    所以 pc值由bits [31:2]决定, bits [1:0] 未定义 (所以指令不能halfword / byte对齐).
    2)当处理器执行在Thumb状态:
    所有指令 16 bits 宽,所有指令必须 halfword(半字:2字节) 对齐
    所以 pc值由bits [31:1]决定, bits [0] 未定义 (所以指令不能 byte对齐).*
    在这里插入图片描述

  • CPSR(current program status register):当前程序状态寄存器
    在这里插入图片描述

  • SPSR(Saved program status register):保存程序状态寄存器,用于保存cpsr的状态和恢复cpsr之前的状态。
    在这里插入图片描述

三级流水线

(1)流水线优点:

  • 效率高
  • 指令的执行也是按照流水线

(2)三级流水线过程:
1)取指–》取指器 根据PC值取指令
2)译码–》译码器
3)执行–》执行器
以上三个器件,都是单周期的器件,三个器件的工作是独立。

	    指令1  指令2  指令3  指令4  指令5
1		取指 		
2		译码   取指 	
3		执行   译码   取指 
4			   执行   译码   取指 
5                     执行   译码   取指
6							 执行   译码
7                                   执行

平均一条指令执行需要1个时钟周期。

以上为最理想的代码的执行情况

       ARM状态  thumb状态
执行    PC-8      PC-4

译码    PC-4      PC-2

取址    PC        PC

程序计数寄存器PC:永远指向当前正在被取指的指令的地址。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值