ARM学习-ARM架构基本内容

目录

1.ARM处理器简介及RISC特点

1.1ARM处理器简介

1.2 RISC设计主要特点

2. Arm的基本数据类型

3. ARM处理器存储格式

4. 内核的工作模式

5. ARM9的5级流水线

5.1 流水线的执行顺序

5.2 影响流水线性能的因素

5.3 寄存器组织


1.ARM处理器简介及RISC特点

1.1ARM处理器简介

  ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下

的微处理器。ARM处理器广泛的使用在许多嵌入式系统。ARM处理器的特点有指令长度固定,执行效率高,低成本等。

1.2 RISC设计主要特点

        (1)指令集——RISC减少了指令集的种类,通常一个周期一条指令,采用固定长度的指令格式,编译器或程序员通过几条指令完成一个复杂的操作。而CISC指令集的指令长度通常不固定;

  (2)流水线——RISC采用单周期指令,且指令长度固定,便于流水线操作执行;

  (3)寄存器——RISC的处理器拥有更多的通用寄存器,寄存器操作较多。例如ARM处理器具有37个寄存器;

  (4)Load/Store结构——使用加载/存储指令批量从内存中读写数据,提高数据的传输效率;

  (5)寻址方式简化,指令长度固定,指令格式和寻址方式种类减少。

2. Arm的基本数据类型

  双字节(DoubleWord):64位

  字(Word):在ARM体系结构中,字的长度为32位。

  半字(Half-Word):在ARM体系结构中,半字的长度为16位。

  字节(Byte):在ARM体系结构中,字节的长度为8位。

3. ARM处理器存储格式

  ARM体系结构将存储器看作是从0地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的

最大寻址空间为4GB。ARM体系结构可以用两种方法存储字数据,分别为大端模式和小端模式。

  大端模式(高地高低):字的高字节存储在低地址字节单元中,字的低字节存储在高地址字节单元中。

  小端模式(高高低低):字的高字节存储在高地址字节单元中,字的低字节存储在低地址字节单元中。

4. 内核的工作模式

  1、用户模式(user):正常程序执行模式;

  2、快速中断模式(FIQ):高优先级的中断产生会进入该种模式,用于高速通道传输;

  3、外部中断模式(IRQ):低优先级中断产生会进入该模式,用于普通的中断处理;

  4、特权模式(Supervisor):复位和软中断指令会进入该模式;

  5、数据访问中止模式(Abort):当存储异常时会进入该模式;

  6、未定义指令中止模式(Undefined):执行未定义指令会进入该模式;

  7、系统模式(System):用于运行特权级操作系统任务;

  8、监控模式(Monitor):可以在安全模式和非安全模式之间切换;

5. ARM9的5级流水线

5.1 流水线的执行顺序

取指令->译码->执行->缓冲/数据->回写

  (1)取指令(Fetch):从存储器读取指令;

  (2)译码(Decode):译码以鉴别它是属于哪一条指令;

  (3)执行(Execute):将操作数进行组合以得到结果或存储器地址;

  (4)缓冲/数据(Buffer/data):如果需要,则访问存储器以存储数据;

  (5)回写:(Write-back):将结果写回到寄存器组中;

5.2 影响流水线性能的因素

(1)互锁:

  不同的指令顺序也会造成时钟周期的不同,比如一条指令的执行需要前一条指令执行的结果,如果这时结果

  还没出来,那就需要等待,这就是流水线互锁:

LDR r1, [r2, #4] 

ADD r0, r0, r1  //r1的值需要等到LDR的结果

(2)跳转指令:

  跳转指令也会破坏流水线的行为,后续指令的取值步骤受到跳转目标的影响。

5.3 寄存器组织

(1)ARM Cortex-A8处理器有40个32位长的寄存器:

    a、32个通用寄存器

    b、7个状态寄存器:1个CPSR(当前程序状态寄存器)

                                       6个SPSR(备份程序状态寄存器)

    c、1个PC(程序计数器)

(2)每一种处理器模式有一组响应的寄存器组,如下对应方式:

(3)通用寄存器包括R0-R15,可以分为3类:

A、未分组寄存器R0 – R7:

  在所有运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途。因此在中断或异常

处理进行异常模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,所以可能造成寄存器中数据的破坏。

B、分组寄存器R8 – R14:

  对于分组寄存器,他们每次所访问的物理寄存器都与当前的处理器运行模式相关。

  R13常用作存放堆栈指针,用户也可以使用其他寄存器存放堆栈指针,称为SP;

  R14称为链接寄存器(LR),当执行子程序时,R14可得到R15(PC)的备份,执行完子程序后,又将R14的值

  复制回PC,即使用R14保存返回地址。

C、程序计数器PC(R15):

  寄存器R15用作程序计数器(PC),在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,

  位[31:1]用于保存PC。对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的

  地址值加8个字节。

(4)程序状态寄存器:

  CPSR(Current Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括

条件标志位、中断禁止位、当前处理器模式标志位以及其他一些相关的控制和状态位。包含以下内容:

ALU状态标志的备份;
当前的处理模式
中断使能标志;
设置处理的状态;
  每一种运行模式下都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序

状态寄存器),当异常发生时,SPSR用于保存当前CPSR的值,从异常退出时则可由SPSR来恢复CPSR。

由于用户模式和系统模式不属于异常模式,这两种状态下没有SPSR,因此在这两种状态下访问SPSR,结果是未知的。

 

 

你可能感兴趣的:(ARM,arm,arm开发,驱动开发,嵌入式硬件)