ARM V7系列下有三个版别的核:
7A
7R
7M
一个单片机芯片里边包含了简直一切功用的芯片。并不是说结构简略。功用少。
履行程序的进程:
1.从内存读出指令到CPU。一次只能读一条指令。
2.取出指令之后要进行译码。
3.履行指令。
主频高,功耗高。
ARM7TDMI内容:
1.三级流水线
2.冯诺依曼结构(之后的ARM版别运用哈佛结构)
3.cpi~1.9
4.T-thumb架构扩展
ARM7/ARM9流水线技能(是为了更好的履行程序)
1.1 ARM7流水线技能
ARM7系列处理器中每条指令分取指、译码、履行三个阶段,分别在不同的功用部件上顺次独立完结。取指部件完结从存储器装载一条指令,经过译码部件产生下一周期数据途径需求的操控信号,完结寄存器的解码,再送到履行单元完结寄存器的读取、ALU运算及运算成果的写回,需求拜访存储器的指令完结存储器的拜访。流水线上尽管一条指令仍需3个时钟周期来完结,但经过多个部件并行,使得处理器的吞吐率约为每个周期一条指令,提高了流式指令的处理速度,然后可到达 O.9 MIPS/MHz的指令履行速度。
在三级流水线下,经过R15拜访PC(程序计数器)时会呈现取指方位和履行方位不同的现象。这须结合流水线的履行状况考虑,取指部件依据PC取指,取指完结后PC+4送到PC,并把取到的指令传递给译码部件,然后取指部件依据新的PC取指。因为每条指令4字节,故PC值等于当时程序履行方位+8。
1.2 ARM9流水线技能
ARM9系列处理器的流水线分为取指、译码、履行、访存、回写。取指部件完结从指令存储器取指;译码部件读取寄存器操作数,与三级流水线中不占有数据途径差异很大;履行部件产生ALU运算成果或产生存储器地址(关于存储器拜访指令来讲);访存部件拜访数据存储器;回写部件完结履行成果写回寄存器。把三级流水线中的履行单元进一步细化,削减了在每个时钟周期内有必要完结的作业量,从而答应运用较高的时钟频率,且具有分隔的指令和数据存储器,削减了抵触的产生,每条指令的均匀周期数显着削减。
2 三级流水线运转状况剖析
三级流水线在处理简略的寄存器操作指令时,吞吐率为均匀每个时钟周期一条指令;可是在存在存储器拜访指令、跳转指令的状况下会呈现流水线阻断状况,导致流水线的功能下降。图1给出了流水线的最佳运转状况,图中的MOV、ADD、SUB指令为单周期指令。从T1开端,用3个时钟周期履行了3条指令,指令均匀周期数(CPI)等于1个时钟周期。
ARM编程模型(要点):
ARM体系的CPU有两种作业状况
1、ARM状况(学习要点):处理器履行32位的字对齐的ARM指令;
2、Thumb状况:处理器履行16位的、半字对齐的Thumb指令;
在程序运转的进程中,能够在两种状况之间进行相应的转化。处理器作业状况的改变并不影响处理器的作业形式和相应寄存器中的内容。
CPU上电处于ARM状况
三、ARM体系的CPU有以下7种作业形式:
1、用户形式(Usr):用于正常履行程序;
2、快速间断形式(FIQ):用于高速数据传输;
3、外部间断形式(IRQ):用于一般的间断处理;
4、管理形式(svc):操作体系运用的维护形式;
5、数据拜访停止形式(abt):当数据或指令预取停止时进入该形式,可用于虚拟存储以及存储维护;
6、体系形式(sys):运转具有特权的操作体系使命;
7、未定义指令间断形式(und):当未定义的指令履行时进入该形式,可用于支撑硬件。
ARM寄存器安排
一、ARM作业状况下的寄存器安排
ARM微处理器共有37个32位寄存器,其间31个为通用寄存器,6个位状况寄存器。可是这些寄存器不能被一起拜访,详细哪些寄存器是能够拜访的,取决ARM处理器的作业状况及详细的运转形式。但在任何时候,通用寄存器R14~R0、程序计数器PC(即R15)、一个状况寄存器都是可拜访的。
通用寄存器:参加运算的数据均放在通用寄存器
通用寄存器包含R0~R15,能够分为3类:
(1)未分组寄存器R0~R7
(2)分组寄存器R8~R14
(3)程序计数器PC(R15)
1.未分组寄存器R0~R7
在一切运转形式下,未分组寄存器都指向同一个物理寄存器,它们未被体系用作特别的用处.因此在间断或反常处理进行运转形式转化时,因为不同的处理器运转形式均运用相同的物理寄存器,所以或许形成寄存器中数据的损坏.
2.分组寄存器R8~R14
关于分组寄存器,它们每一次所拜访的物理寄存器都与当时处理器的运转形式有关.关于R8~R12来说,每个寄存器对应2个不同的物理寄存器,当运用FIQ(快速间断形式)时,拜访寄存器R8_fiq~R12_fiq;当运用除FIQ形式以外的其他形式时,拜访寄存器R8_usr~R12_usr.
关于R13,R14来说,每个寄存器对应6个不同的物理寄存器,其间一个是用户形式与体系形式共用,别的5个物理寄存器对应其他5种不同的运转形式,并选用以下记号来差异不同的物理寄存器:
R13_
R14_
其间mode可为:usr,fiq,irq,svc,abt,und.
通用寄存器的特别用处:
寄存器R13在ARM指令中常用作仓库指针SP,但这仅仅一种习惯用法,用户也可运用其他的寄存器作为仓库指针,而在Thumb指令会集,某些指令强制性的要求运用R13作为仓库指针.芯片中的寄存器是安稳的,不会呈现问题的。
因为处理器的每种运转形式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种形式下的R13,使其指向该运转形式的栈空间。这样,当程序的运转进入反常形式时,能够将需求维护的寄存器放入R13所指向的仓库,而当程序从反常形式回来时,则从对应的仓库中康复,选用这种方法能够确保反常产生后程序的正常履行。
R14称为子程序链接寄存器LR(Link Register),当履行子程序调用指令(BL)时,R14可得到R15(程序计数器PC)的备份.
在每一种运转形式下,都可用R14保存子程序的回来地址,当用BL或BLX指令调用子程序时,将PC的当时值仿制给R14,履行完子程序后,又将R14的值仿制回PC,即可完结子程序的调用回来。以上的描绘可用指令完结。
履行以下恣意一条指令:
MOV PC, LR
BX LR
在子程序入口处运用以下指令将R14存入仓库:
STMFD SP!,{,LR}
对应的,运用以下指令能够完结子程序回来:
LDMFD SP!,{,PC}
R14也可作为通用寄存器。
3,程序计数器PC(R15)
寄存器R15用作程序计数器(PC),永久指向取指的指令地址,在ARM状况下,位[1:0]为0,位[31:2]用于保存PC,在Thumb状况下,位[0]为0,位[31:1]用于保存PC.
因为ARM体系结构选用了多级流水线技能,关于ARM指令集而言,PC总是指向当时指令的下两条指令的地址,即PC的值为当时指令的地址值加8个字节程序状况寄存器
不同作业形式下的通用寄存器的差异:
usr/sys:R0-R15二者共用
irq: R0-12,R15没有差异
R13-irq
R14-irq
svc:R0-12,R15没有差异
R13-svc
R14-svc
und:同上
abt:同上
fiq:R0-R7,R15没有差异
R9-fiq,R10-fiq,R11-fiq,R12-fiq,R13-fiq,R14-fiq
4.寄存器R16
寄存器R16用作CPSR(CurrentProgram Status Register,当时程序状况寄存器),CPSR可在任何运转形式下被拜访,它包含条件标志位、间断制止位、当时处理器形式标志位,以及其他一些相关的操控和状况位。
每一种反常运转形式下又都有一个专用的物理状况寄存器,称为SPSR(Saved Program Status Register,备份的程序状况寄存器),当反常产生时,SPSR用于保存CPSR的当时值,从反常退出时则可由SPSR来康复CPSR。
因为用户形式和体系形式不属于反常形式,它们没有SPSR,当在这两种形式下拜访SPSR,成果是不知道的。