ARM处理器的体系结构.ppt
《ARM处理器的体系结构.ppt》由会员分享,可在线阅读,更多相关《ARM处理器的体系结构.ppt(130页珍藏版)》请在三一办公上搜索。
1、本节提要,1,3,2,5,4,6,ARM简介,ARM体系结构概览,ARM JTAG调试接口,ARM编程模型,ARM 指令集,S3C44B0开发平台简介,ARM7TDMI处理器,ARM7TDMI处理器,T16位压缩指令集,Thumb;D在片调试(debug)支持,允许处理器响应调试请求暂停;M增强型乘法器,产生全64位结果(32X3264or32X32+64 64);I嵌入式ICE(In-Circuit Emulator,在线仿真器),协助硬件和软件调试。提供片上断点和调试点支持。,ARM7 TDMI的指令流水线,从存储器取指,指令所用的寄存器译码,从从寄存器组中读寄存器移位和ALU操作把寄存器
2、写回到存储器组,每条指令可以分3个阶段执行,ARM单周期指令3段流水线操作*,t,指令,1,2,3,注:程序计数器PC指向正在取指的指令而不是正在执行的指令,PC值总是指向正在执行指令后面的第2条指令。,流水线技术,ARM的5级流水线 ARM9和StrongARM架构都采用了5级流水线.增加了I-Cache和D-Cache,把存储器的取指与数据存取分开;增加了数据写回的专门通路和寄存器;把指令的执行过程分割为5部分:取指-指令译码-执行-数据缓存-写回,处理器的工作状态,ARM7TDMI 处理器有两种工作状态:ARM-32-bit,按字排列的ARM指令集Thumb-16-bit,按半字排列的T
3、humb指令集ARM7TDMI 核的操作状态可能通过BX指令(分支和交换指令)在ARM状态和Thumb状态之间切换,例:从ARM状态切换到Thumb状态:LDR R0,=Label+1 BX R0从Thumb状态切换到ARM状态:LDR R0,=Label BX R0,指令BX利用bit0来确定是ARM指令,还是Thumb指令。,存储器模式*,大端模式字数据的高位字节存储在低地址中字数据的低字节则存放在高地址中小端模式低地址中存放字数据的低字节高地址中存放字数据的高字节,指令长度及数据类型,ARM微处理器的指令长度可以是32位(ARM状态),也可以为16位(Thumb)状态ARM微处理器支持字
4、节(8位)、半字(16位)、字(32位)3种数据类型字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0),操作模式,ARM 处理器有7种工作模式:用户模式(usr)-正常的程序执行模式快速中断模式(fiq)-支持高速数据传输或通道处理中断模式(irq)-用于通用中断处理管理员模式(svc)-操作系统的保护模式.中止模式(abt)-支持虚拟内存和/或内存保护系统模式(sys)-支持操作系统的特殊用户模式(运行操作系统任务)未定义模式(und)-支持硬件协处理器的软件仿真 除了用户模式外,其他模式均可视为特权模式,正常程序执行的模式,用于高速数据传输和通道处理,用于通常的中
5、断处理,供操作系统使用的一种保护模式,用于虚拟存储及存储保护,用于支持通过软件仿真硬件的协处理器,用于运行特权级的操作系统任务,寄存器组织 1*,寄存器-2,37 寄存器31 个通用32位寄存器,包括程序计数器PC未分组寄器R0-R7分组寄存器R8-R14程序计数器PC(R15)6 个状态寄存器15 通用寄存器(R0 to R14),以及1或者2个状态寄存器和程序计数器在任何时候都是可以访问的可访问的寄存器取决于处理器的模式其它寄存器(the banked registers)的状态在支持IRQ,FIQ,管理员,中止和未定义模式处理时被切换,寄存器-3,R0 到 R15 可以直接访问R0 到
6、R14 是通用寄存器R13:堆栈指针(sp)(通常)每种处理器模式都有单独的堆栈R14:链接寄存器(lr)R15 包含程序计数器(PC)CPSR 当前程序状态寄存器,包括代码标志状态和当前模式位5个SPSRs-(程序状态保存寄存器)当异常发生时保存CPSR状态,程序状态寄存器-1,ARM7TDMI 包含当前程序状态寄存器(CPSR),加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态 这些寄存器的功能是:保存ALU当前操作信息控制允许和禁止中断设置处理器操作模式,TDMI 的基本含义为:T-支持16 为压缩指令集Thumb D-支持片上Debug M-内嵌硬件乘法器(Mu
7、ltiplier)I-嵌入式ICE,支持片上辅助调试,程序状态寄存器-2,N,Z,C and V 条件码标志可以在处理器中作为数学和逻辑操作改变可以被所有的指令测试,以决定指令是否被执行N:Negative.Z:Zero.C:Carry.V:oVerflowI and F 位是中断禁止位T 控制位 用于控制指令执行的状态,即说明本指令是ARM指令还是Thumb指令。对于不同版本的ARM处理器,T控制位的含义不同。M0,M1,M2,M3 and M4 位是模式位,=1 运算结果为负;=0 运算结果为正。,=1 运算结果为零;=0 运算结果不为零。,加法,结果产生进位;C=1,否则C=0。减法,发
8、生劫wei=0 运算结果不为零。,I=1 禁止IRQ中断;F=1 禁止FIQ中断。,对于ARMv4以及更高的版本的T系列的ARM处理器,T=0表示执行ARM指令;T=1表示执行Thumb指令。对于ARMv5以及更高的版本的非T系列的ARM处理器,T=0表示执行ARM指令;T=1表示强制下一条执行的指令产生未定义指令中断。,异常,异常优先级(1)Reset(highest priority)(2)Data abort(3)FIQ(4)IRQ(5)Prefetch abort(6)未定义指令(7)Software interrupt(最低优先级),当处理器的复位引脚有效时,系统产生复位中断,程序跳
9、转到复位异常中断处理程序处执行。硬复位和软复位。,当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断请求(IRQ)异常中断。系统中各外设通常通过该异常中断请求处理器服务。,这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统(RTOS)中可通过该机制实现系统功能调用。,当处理器的外部快速中断请求引脚有效,而且CPSR寄存器的F控制位被清除时,处理器产生外部中断请求(FIQ)异常中断。,数据访问中止。如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常中断。,如果处理器预取的指令的地址不存
10、在,或者该地址不允许当前指令访问,当该被预取的指令执行时,处理器产生指令预取中止异常中断。,当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断。可以通过该异常中断机制仿真浮点向量运算。,异常向量,进入异常的操作-1,将进入异常中的链接寄存器LR_mode(r14)设置成返回地址;保存处理器当前的状态、中断屏蔽位几个条件标志位。即将CPSR复制到要执行异常中断对应的SPSR中。各异常中断有自己的物理SPSR寄存器;设置当前程序状态寄存器CPSR中相应的位。(处理器的模式位,中断屏蔽位),模式位置成对应异常类型的值;将程序计数器值(PC),设置成对应异常中断的中断向
11、量地址,从而跳转到相应的异常中断处理程序处执行。,进入异常的操作-2,R14_=Return LinkSPSR_=CPSRCPSR4:0=Exception Mode NumberCPSR5=0;当运行于ARM状态时IF=Reset or FIQ then;当响应FIQ异常时,禁止新的FIQ异常 CPSR6=1;CPSR7=1;PC=Exception Vector Address,例子:用户模式到 FIQ模式*,r14_fiq,r13_fiq,r12_fiq,r10_fiq,r11_fiq,r9_fiq,r8_fiq,用户模式 CPSR 复制到 FIQ 模式 SPSR,返回一个从用户模式计算
12、的地址,PC值存储在FIQ模式,用户模式,FIQ 模式,异常向量,进入异常的操作-响应复位异常中断,当处理器的复位引脚有效时,处理器终止当前指令。当处理器的复位引脚变成无效时,处理器开始执行下面的操作。,R14_svc=UNPREDICTABLE value SPSR_svc=UNPREDICTABLE value/*进入特权模式*/CPSR4:0=0b10011/*切换到ARM状态*/CPSR5=0/*禁止FIQ中断*/CPSR7=1 if high vectors configured then PC=0XFFFF0000 else PC=0X00000000,进入异常的操作-响应未定义指
13、令异常中断,处理器响应未定义指令异常中断时的处理过程如下面的伪代码所示。,R14_und=adress of next instruction after the undefined instruction SPSR_und=CPSR/*进入未定义指令异常中断*/CPSR4:0=0b11011/*切换到ARM状态*/CPSR5=0/*CPSR6不变,禁止IRQ异常中断*/CPSR7=1 if high vectors configured then PC=0XFFFF0004 else PC=0X00000004,进入异常的操作-响应SWI异常中断,处理器响应SWI异常中断时的处理过程如下面的
14、伪代码所示。,R14_svc=adress of next instruction after the SWI instruction SPSR_svc=CPSR/*进入特权模式*/CPSR4:0=0b10011/*切换到ARM状态*/CPSR5=0/*CPSR6不变,禁止IRQ异常中断*/CPSR7=1 if high vectors configured then PC=0XFFFF0008 else PC=0X00000008,进入异常的操作-响应指令预取中止异常中断,处理器响应指令预取中止异常中断时的处理过程如下面的伪代码所示。,R14_abt=adress of the aborte
15、d instruction+4 SPSR_abt=CPSR/*进入指令预取中止模式*/CPSR4:0=0b10111/*切换到ARM状态*/CPSR5=0/*CPSR6不变,禁止IRQ异常中断*/CPSR7=1 if high vectors configured then PC=0XFFFF000c else PC=0X0000000c,进入异常的操作-响应数据访问中止异常中断,处理器响应数据访问中止异常中断时的处理过程如下面的伪代码所示。,R14_abt=adress of the aborted instruction+8 SPSR_abt=CPSR/*进入数据访问中止模式*/CPSR4
16、:0=0b10111/*切换到ARM状态*/CPSR5=0/*CPSR6不变,禁止IRQ异常中断*/CPSR7=1 if high vectors configured then PC=0XFFFF0010 else PC=0X00000010,进入异常的操作-响应IRQ异常中断,处理器响应IRQ异常中断时的处理过程如下面的伪代码所示。,R14_irq=adress of next instruction to be executed+4 SPSR_irq=CPSR/*进入IRQ异常中断模式*/CPSR4:0=0b10010/*切换到ARM状态*/CPSR5=0/*CPSR6不变,禁止IRQ异
17、常中断*/CPSR7=1 if high vectors configured then PC=0XFFFF0018 else PC=0X00000018,进入异常的操作-响应FIQ异常中断,处理器响应FIQ异常中断时的处理过程如下面的伪代码所示。,R14_fiq=adress of next instruction to be executed+4 SPSR_fiq=CPSR/*进入FIQ异常中断模式*/CPSR4:0=0b10001/*切换到ARM状态*/CPSR5=0/*禁止FIQ异常中断,禁止IRQ异常中断*/CPSR6=1CPSR7=1 if high vectors configu
18、red then PC=0XFFFF001c else PC=0X0000001c,退出异常的操作,恢复被中断的程序的处理器状态几中断屏蔽位,即将SPSR_mode复制回 CPSR;返回到发生异常中断的指令的下一条指令处执行,即将LR_mode寄存器中的值减去相应的偏移量送到PC中(三级流水线的预取指令);可以认为程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。,进入/退出异常概述,退出异常的操作-SWI和未定义指令异常中断处理程序的返回,SWI和未定义指令异常中断是由当前执行的指令自身产生的,当上述中断产生时,程序计数器PC的值还为更新,它指向当前指令后面的第2条指令(
19、对于ARM指令来说,它指向当前指令地址+8个字节的位置;对于Thumb指令来说,它指向当前指令地址+4个字节的位置)。当中断发生时,处理器将(PC-4)保存到异常模式LR_mode中。这时(PC-4)即指向当前指令的下一条指令。因此返回操作可以通过下面的指令实现:MOV PC,LR 该指令将寄存器LR中的值复制到程序计数器PC中,实现程序返回,同时将SPSR_mode寄存器内容复制到当前程序状态寄存器CPSR中。当异常中断处理程序中使用了数据栈时,可以通过下面的指令保护和恢复异常程序执行的现场:STMFD sp!,reglist,lr;LDMFD sp!,reglist,pc 在上述指令中,r
20、eglist是异常中断处理程序中使用的寄存器列表。标示符指示将SPSR_mode寄存器的内容复制到CPSR中。该指令只能在特权模式下使用。,退出异常的操作-IRQ和FIQ异常中断处理程序的返回,通常处理器执行完当前指令后,查询IRQ和FIQ中断引脚,并且查看系统是否允许IRQ和FIQ中断。如果引脚信号有效,且系统允许相应中断,则处理器将产生相应的异常中断。当IRQ或FIQ中断产生时,PC的值已经更新,因此它指向当前指令后面的第3条指令(对于ARM指令来说,它指向当前指令地址+12个字节的位置;对于Thumb指令来说,它指向当前指令地址+6个字节的位置)。当中断发生时,处理器将(PC-4)保存到
21、异常模式LR_mode中。这时(PC-4)即指向当前指令后的第2条指令。因此返回操作可以通过下面的指令实现:SUBS PC,LR,#4 该指令将寄存器LR中的值减4后复制到程序计数器PC中,实现程序返回,同时将SPSR_mode寄存器内容复制到当前程序状态寄存器CPSR中。,退出异常的操作-IRQ和FIQ异常中断处理程序的返回,当异常中断处理程序中使用了数据栈时,可以通过下面的指令保护和恢复异常程序执行的现场:SUBS LR,LR,#4 STMFD sp!,reglist,lr;LDMFD sp!,reglist,pc 在上述指令中,reglist是异常中断处理程序中使用的寄存器列表。标示符指
22、示将SPSR_mode寄存器的内容复制到CPSR中。该指令只能在特权模式下使用。,退出异常的操作-指令预取中止异常中断处理程序的返回,当指令预取时,如果目标地址是非法的,该指令将被标记成有问题的指令。这时,流水线上该指令之前的指令继续执行。当执行到该被标志成有问题的指令时,处理器产生指令预取中止异常中断。当发生该异常中断时,程序要回到该有问题的指令处,重新读取并执行该指令。因此指令预取中止异常中断应该返回到产生该指令预取中止异常中断的指令处,而不是像上述两种情况下返回到发生中断的指令的下一条指令。当指令预取中止异常中断产生时,PC的值还未更新,因此它指向当前指令后面的第3条指令(对于ARM指令
23、来说,它指向当前指令地址+12个字节的位置;对于Thumb指令来说,它指向当前指令地址+6个字节的位置)。当中断发生时,处理器将(PC-4)保存到异常模式LR_mode中。这时(PC-4)即指向当前指令的下一条指令。因此返回操作可以通过下面的指令实现:SUBS PC,LR,#8 该指令将寄存器LR中的值减4后复制到程序计数器PC中,实现程序返回,同时将SPSR_mode寄存器内容复制到当前程序状态寄存器CPSR中。,退出异常的操作-指令预取中止异常中断处理程序的返回,当异常中断处理程序中使用了数据栈时,可以通过下面的指令保护和恢复异常程序执行的现场:SUBS LR,LR,#4 STMFD sp
24、!,reglist,lr;LDMFD sp!,reglist,pc 在上述指令中,reglist是异常中断处理程序中使用的寄存器列表。标示符指示将SPSR_mode寄存器的内容复制到CPSR中。该指令只能在特权模式下使用。,退出异常的操作-数据访问中止异常中断处理程序的返回,当发生数据访问中止异常中断时,程序要返回到该有问题的数据访问处,重新访问该数据。因此数据访问中止异常中断应该返回到产生该数据访问中止异常中断的指令处,而不是像上述两种情况下返回到发生中断的指令的下一条指令。数据访问中止异常中断是由数据访问指令产生的,当数据访问中止异常中断产生时,PC的值已更新,它指向当前指令后面的第2条指
25、令(对于ARM指令来说,它指向当前指令地址+8个字节的位置;对于Thumb指令来说,它指向当前指令地址+4个字节的位置)。当中断发生时,处理器将(PC-4)保存到异常模式LR_mode中。这时(PC-4)即指向当前指令后的第2条指令。因此返回操作可以通过下面的指令实现:SUBS PC,LR,#8 该指令将寄存器LR中的值减8后复制到程序计数器PC中,实现程序返回,同时将SPSR_mode寄存器内容复制到当前程序状态寄存器CPSR中。,退出异常的操作-指令预取中止异常中断处理程序的返回,当异常中断处理程序中使用了数据栈时,可以通过下面的指令保护和恢复异常程序执行的现场:SUBS LR,LR,#8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 处理器 体系结构
链接地址:https://www.31ppt.com/p-2295330.html