ARM概述

来源:互联网 发布:restful框架 php 编辑:程序博客网 时间:2024/06/08 07:07

arm公司的介绍就省略掉了,网上有很多

1、ARM数据和指令类型

}ARM采用的是32架构,这表明地址空间是2的32次方,4G。
ARM 约定:
     Byte:8 bits
      Halfword: 16 bits (2 byte)
      Word :32 bits (4 byte)
      Doubleword:64-bits(8byte)(Cortex-A处理器)
大部分ARM core 提供:
      ARM 指令集(32-bit)
      Thumb指令集(16-bit )
Cortex-A处理器
       16位和32位Thumb-2指令集
       16位和32位ThumbEE指令集

指令集的16位和32位差异体现在那里?简单来说就是32位指令集能够操作32位数,而16位指令集只能操作16位数。一个简单的例子,同样执行0X111111111和0X22222222的加法,32位指令集可以一次执行完毕,而16位指令集只能
高16位和低16位拆开运算。就向小时候我们学习加法,一开始我们只会个位数加法(十进制1位加法),后来我们会100以内的加法(十进制2位加法)。

在CORETEX-A中我们都用32位ARM指令集

2、处理器工作模式

ARM 有8个基本工作模式:
      User:非特权模式,大部分任务执行在这种模式
      FIQ:当一个高优先级(fast) 中断产生时将会进入这种模式
      IRQ:当一个低优先级(normal) 中断产生时将会进入这种模式
      Supervisor:当复位或软中断指令执行时将会进入这种模式,上电时处于这种模式,权限最高。
      Abort:当存取异常时将会进入这种模式
      Undef:当执行未定义指令时会进入这种模式
      System:使用和User模式相同寄存器集的特权模式
 Cortex-A特有模式:
Monitor:是为了安全而扩展出的用于执行安全监控代码的模式,也是一种特权模式
        对于不同模式,可以用一句话来总结:特定的模式执行特定的代码,完成特定的功能,具有特定的权限。
模式之间可以通过软件控制进行转换,也可以通过外部中断或异常处理过程进行切换。

3、流水线

        为增加处理器指令流的速度,ARM7 系列使用3级流水线允许多个操作同时处理,而非顺序执行
指令执行过程中取址、译码、执行三个阶段使用的硬件电路相互独立
当对N地址中的指令进行取址时译码器可以对N-4地址的指令进行译码
运算器可以对N-8地址中的指令进行执行,从而形成了三级流水线结构
这种结构降低了指令执行的平均周期。

ARM处理器中当前取指的指令由PC决定,所以当前执行的指令的地址是PC-8
不管多少级流水线PC指向的永远是当前取址的指令,当前执行的指令是PC-8地址处的指令(这一点提一句,在实际的代码执行时,我们通过PC寄存器实际上看不出这种效果,我们看到的PC寄存器仍是指向要执行的指令地址,但要明白真实工作的情况。另外可以通过LDR伪指令来理解这种流水线,这里不展开讲了)

4、CORETEX-A寄存器概要

          40个32位寄存器,其中33个通用寄存器,6个状态寄存器


带三角的是特定模式下的专用寄存器。
CPSR是状态寄存器