您好、欢迎来到现金彩票网!
当前位置:双彩网 > 向量处理器 >

ARM处理器架构处理器的工作状态

发布时间:2019-06-04 03:11 来源:未知 编辑:admin

  数据通过数据总线流向处理器核心,这里的数据可以是将要执行的指令,也可以是数据项.上面的图是Von Neumann体系的arm核,数据项和指令共用同一总线.而哈佛结构体系的arm核就会用两个不同的总线.就像所有的RISC处理器,arm采用load-store体系结构.也就是说它含有两条不同的指令类型来出入处理器.load指令将数据从内存拷贝到寄存器,store指令是将数据从寄存器拷贝到内存.没有直接操作内存中数据的数据处理指令.数据的处理离不开寄存器.

  ARM指令一般有两个源寄存器,Rn和Rm,和一个目的寄存器,Rd. ARM的一个重要特性是Rm可以在送入ALU之前被桶型移位器做预处理,这样就会有很多形式的表达式和寻址方式. 后面再写博客记录一下arm中的指令集。

  arm核一共有37个寄存器,有7种工作模式。其中在任一种工作模式下,可见的寄存器通常有18个(在user/system模式下可见的是17个)。另外,某几个寄存器(sp、lr、spsr)在不同的模式下对应的是不同的寄存器,所以总数加起来共有37个。所有的寄存器都是32bit大小.

  (1)数据寄存器由r0--r15表示. 其中r0-r12是通用寄存器,r13-r15是三个特殊的寄存器。

  r14被称作链接寄存器(lr),当发生函数调用时存放当前的pc指针,作为子程序的返回地址;

  这三个寄存器,在写汇编语句的时候都不用r13这种来表示,都是用sp、lr、pc来表示的。

  (2)两个程序状态寄存器:cpsr和spsr. 处理器的当前工作模式决定了哪些寄存器是可见的.

  cpsr:当前程序状态寄存器。ARM核使用cpsr来显示和控制内部的操作.通用程序状态寄存器的内部如下:

  cpsr分为四个域,每个域有8位的宽度:flags,status,extension和trol域包含处理器模式和状态以及中断屏蔽位.flags域包含condition flags.处理器模式决定了当前哪些寄存器是可用的以及cpsr本身的访问权限.

  fiq和irq对应ARM处理器的两种中断级别, irq是普通的中断模式,fiq是快速中断模式。

  svc是系统reset后进入的默认模式,也是os kernel工作的模式;

  在不同的模式下,有不同的Banked registers。所谓的banked register 就是说 这个寄存器是该模式所独有的,不与其他模式共享。

  除了user模式,其它模式都可以通过直接写cpsr的模式位来改变处理器模式.当然,在异常或者中断到来时,硬件会自动切换模式.

  需要注意的是:通过直接写cpsr来改变模式的方法不会将cpsr拷贝到spsr.只有在异常或中断发生时cpsr的值才会保存到spsr。

  当ARM核上电时,处于svc特权模式.从特权模式开始是有用的:初始化代码完全控制cpsr来建立其他模式的堆栈.

  中断屏蔽位:中断屏蔽位用来屏蔽处理器的特殊中断请求.在ARM核中有两种级别的中断请求:irq和fiq.

  cpsr中的中断屏蔽位是第7位和第6位(I和F),当I或F设为1时irq或fiq就被屏蔽了.

  当异常发生时,处理器会将pc指向一个特殊的内存地址.该地址所在的地址范围称为向量表.向量表的入口是跳转指令,跳转到专门处理某个异常或中断的子程序.

  存储器映射地址0x00000000是为向量表预留的.在某些处理器中向量表可以放在更高的地址,从0xffff0000开始.linux等操作系统可以利用这个特性.

  当异常发生时,处理器挂起正常的处理然后从向量表中加载指令.每个向量表的入口都包含指向特殊处理例程的跳转指令.

  reset向量是处理器上电后执行的第一条指令,这条指令跳转到初始化代码处.

  prefetch abort向量发生在当没有访问权限的条件下试图获取该地址的指令时,异常发生在译码阶段.

  interrupt request向量被外部硬件用来中断处理器的正常执行.只有在cpsr的相应位为0时才能发生.

  fast interrupt request向量与irq类似,是为要求更短的中断响应时间的硬件保留的.只有在cpsr的相应位为0时才能发生.

  RISC处理器用流水线机制来执行指令.ARM流水线中的指令只有在完全通过执行阶段才被处理.

  上面这张图标明了流水线的使用和程序计数器pc.在执行阶段,pc总是指向该指令地址加上8字节.也就是说pc总是指向当前指令的下下条指令.当用pc来计算

  条件执行控制指令是否被ARM核执行.处理器会比较指令的条件属性和cpsr中的condition flags,如果匹配,该指令执行;否则该指令被忽略.

http://chinoamobi.com/xiangliangchuliqi/85.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有