ARM7是32 位通用微处理器ARM(Advanced RISC Machines)家族中的一员,具备比较低的电
源消耗和良好的性价比,
基于(精简指令)RISC结构,指令集和相关的译码机制与微程序
控制的复杂指令系统的计算机相比要相对简单,
这使得它拥有比较高的指令处理能力和实时
中断响应能力。
指令集包含11种基本类型:
●
两种类型用于偏上算术逻辑单元,
在31个寄存器(32位)间执
行高速操做
桶式移位器
乘法器
●
三种类型的指令控制数据在存储器和寄存器之间传送,
一种用于弹性地址
一种用于
高速内容切换
一种用于交换数据
●
三种类型的指令用于控制流程和特权级执行
●
三种专门用于控制外部的协处理器,此种协处理器容许指令集的功能以开放和统一的
格式扩展到片外
特性:
●适用于高级语言
ARM指令集对不一样高级语言的编译器来说都比较适用,须要临界的代码段,汇编语言的编程
也很简单,
不像其它的微处理器,
须要依靠复杂的编译器来管理指令。
●
流水线技术
指令处理和存储系统的各个部分均可以连续运行。 典型的例子,
一条指令正在执行,下一条指令正被译码,
第三条指令同时从存储器中取出。
在存储系统中,存储接口的设计能够最大限度地发挥性能潜力而不须要花费很大的代价,
速
度敏感信号作成流水线方式,容许系统控制功能应用于标准的低电压逻辑,这些控制信号推
动了由工业DRAM提供的快速局部访问模式
●兼容性
ARM7有32位的地址总线,全部的ARM处理器共享同一个指令集,ARM7能够配制成26位地
址线,向下兼容其它早期的处理器。
●CMOS
ARM7是全静态CMOS,容许时钟在周期的任意部分被中止,但不丢失状态。
ARM7处理器共有37个寄存器
●
31个(32位)通用寄存器
●
6个状态寄存器
在任意时候
16个通用寄存器(R0-R15)和一个或者两个状态寄存器对处理器来说是可见的。
可见寄存
器依据处理器模式和其它寄存器(banked registers)将被切换去支持IRQ, FIQ,管理, 异常,
无定义模式的处理。异常模式,非定义模式。
在全部的模式中,16个寄存器(R0-R15)均可以直接访问。除过R15,其余的寄存器都是通
用寄存器,
能够用来保存数据和地址。R15保存可编程计数器PC的值,当R15被读时,位[1:
0]为’0’,位[31:2]保存计数器的值。
第十七个寄存器(CPSR-当前程序状态寄存器)也是可
以访问的。它包括了条件代码标位和当前模式位,能够看成是PC 的扩展。
R14能够看成子程序链接寄存器,当执行一个分支或者链接指令时,能够保存R15的值。在
其它状况下, 能够看成通用寄存器用。
R14_svc, R14_irq, R14_fiq, R14_abt, R14_und与R14
类似,当中断或者异常发生时,或者是中断和异常程序中,分支和分支链接指令被执行时,
能够保存R15 的返回值
异常
当正常的程序流程须要被中断时,异常产生,使得处理器能够执行外设产生(例)的中断。
进入异常处理以前,处理器的状态必须保存,以便异常处理完以后源程序能够继续执行。可
能会有几个异常同时产生。
ARM7处理异常时,经过banked寄存器保存状态。PC和CPSR寄存器中的内容被拷贝到相应
的R14和SPSR中,PC 和CPSR中的模式位M[0:4]根据异常类型被强制改变。在异常断处理
中,若是要禁止其它难以管理异常的嵌套,能够置位中断禁止标志位。在须要重复进入中断
处理程序的状况下,R14和SPSR应该在中断被使能以前保存到主MEM的堆栈中;当传送
SPSR寄存器到堆栈或者从堆栈传送时,须要注意的是必须传送整个字(32位),而不仅是
标志位或者控制位。当多个异常同时产生时,固定的优先级决定异常响应的顺序。优先级将
在之后章节中说明
FIQ
FIQ(快速中断请求)异常是由外部产生,将Nfiq输入拉低。此输入能够接受异步转换,在
影响处理器的执行流程以前,会被延迟一个时钟周期,以便与处理器保持同步。此设计支持
数据传输或者通道处理,有足够的私有寄存器转移在某些应用中须要保存的值(最小化切换
成本) 。 能够置位在CPSR中的F标志位屏蔽FIQ异常 (除过用户模式) , 若是F位清零, ARM7
在每一条指令结束时会检查FIQ同步器的输出是否为低电平。
当检测到有FIQ低电平输入时,ARM7执行如下步骤:
(1) 将下一条将要执行的指令地址+4,保存到R14_fiq,保存CPSR的值到SPSR_fiq
(2) 强制M[4:0]=10001(FIQ模式),置位CPSR中的F,I
(3) 强制PC从地址0X1C取下一条指令
为了从FIQ返回,执行 SUBS PC,R14_fiq,#4 将恢复PC(从R14)和CPSR(从SPSR_fiq)并
继续执行的被中断的程序。
IRQ
IRQ(中断请求)为普通异常,当 nIRQ 输入位低电平时产生IRQ。它的优先级低于FIQ,并
且当进入FIQ异常处理程序时,它被屏蔽。在任什么时候候将CPSR中I 位置1,均可以屏蔽此中
断(用户模式除外)。当I 位清零时,ARM7在每一条指令结束时会检查IRQ同步器的输
出是否有低电平。当检测到有IRQ输入时ARM7执行如下步骤:
(1) 将下一条将要执行的指令地址+4,保存到R14_fiq,保存CPSR的值到SPSR_fiq
(2) 强制M[4:0]=10010(IRQ模式),置位CPSR中的I
(3) 强制PC从地址0X18取下一条指令
为了从IRQ状态恢复正常,执行SUBS PC,R14_fiq,#4 将恢复PC(从R14)和CPSR(从
SPSR_fiq)并继续执行的被中断的程序。
异常中断
异常中断由外部的ABORT输入产生。ABORT表示当前存储器访问没有完成。举例来说,在
虚拟存储器系统中,当前地址上相应的数据可能已经从存储器被移到disc, 在访问完成以前,
可能要求处理器动做以恢复这些数据。Arm7在存储器访问周期检查ABORT信号,若是有异
常产生,ARM7将执行如下两种步骤之一:
(1) 若是异常在指令预取时产生(预取异常),预取的指令被标志为无效,可是异常中
断并不当即产生。若是指令没有被执行,举例来说,在流水线中的一个分支指令,
将不会产生异常,若是指令到流水线的出口并将要被执行时,异常产生。
(2) 若是异常在数据访问时产生(数据异常),ARM7的动做将依靠指令类型
(A) 单次数据传输指令(LDR,STR)将回写改变过的基址寄存器,异常处理程序必
须注意到这一点。
(B) 交换指令异常(SWP),虽然外部的读写访问可能发生,但就好像此指令没有
被执行同样
(C) 块数据传输指令完成(LDM,STM),若是回写位置1,基址将改变。若是正常
状况下,指令回写基址寄存器(LDM传输列表中的基址),
则回写
被禁止。当
异常产生时,全部寄存器回写都被禁止。这就意味着当LDM指令异常时,R15
(老是最后一个被传送)将保留。
在指令预取异常或数据异常发生,ARM7进行如下操做:
(1) 保存地址 (异常指令地址 加4 for 指令预取异常, 加8 for 数据异常) 到R14_abt,
保存CPSR到SPSR_abt
(2) 强制M[4:0]=10111(异常模式),置位CPSR中的I
(3) 强制PC从地址0X0C(预取异常)或0X10(数据异常)取下一条指令
为了从异常返回,执行SUBS PC,R14_abt,#4 (预取异常)或SUBS PC,R14_abt,#8 (数
据异常),恢复PC和CPSR并继续执行被异常的指令。
当适当的MEM管理软件有效时,异常机制容许执行錀须要的页式虚拟MEM系统鐀。处理器
能够产生任意地址,若是地址中的数据无效时,MMU产生异常。处理器进入系统软件陷阱,
系统软件必须找出异常缘由,使请求的数据有效,从新执行被异常的指令。应用程序不须要
知道它用到的有效MEM的总量,也不须要异常时的状态。
软件中断
软件中断指令(SWI)从其它模式进入管理模式。一般状况下,请求一个特殊的管理函数。
当SWI指令被执行时,ARM7执行如下动做:
(1) 将SWI指令地址加4保存到R14_svc,保存CPSR的值到SPSR_svc
(2) 强制M[4:0]=10011(管理模式),置位CPSR中的 I
(3) 强制PC在地址0X80取下一条指令
为了从SWI返回,执行指令MOVS PC,R14_svc,恢复PC和CPSR的值,返回到SWI的下一
条指令。
无定义的指令陷阱
当ARM7遇到本身没有办法处理的指令(第四章:指令集),它将此指令提供给现场的协处
理器。若是协处理器能够执行此指令,但当时又比较忙,ARM7将进入等待状态,直到协处
理器准备好或者中断产生。若是没有协处理器能够处理此指令,ARM7将进入无定义指令陷
阱。
当系统中没有协处理器硬件时,陷阱能够用来作协处理器的软件仿真,或者经过软件仿真用
于通用指令集扩展。
当ARM7接收到无定义指令陷阱时,执行如下步骤:
(1) 将无定义指令或协处理器指令加4保存到R14_und;保存CPSR到SPSR_und.
(2) 强制M[4:0]=11011(无定义模式),置位CPSR中的 I
(3) 强制PC在地址0X04取下一条指令
在仿真失败的指令以后,为了从陷阱返回,执行MOVS PC,R14_und,恢复CPSR并返回到无
定义指令的下一条指令。