《嵌入式系统技术与设计 第2版 教学课件 ppt 作者 华清远见教育集团 刘洪涛 苗德行 第2章 ARM体系结构与指令集1》由会员分享,可在线阅读,更多相关《嵌入式系统技术与设计 第2版 教学课件 ppt 作者 华清远见教育集团 刘洪涛 苗德行 第2章 ARM体系结构与指令集1(102页珍藏版)》请在金锄头文库上搜索。
1、ARM嵌入式体系结构与接口技术 第2章 ARM体系结构与指令集,2,第1章 嵌入式系统概述 第2章 ARM体系结构与指令集 第3章 ARM汇编语言程序设计 第4章 嵌入式软件基础 第5章 ARM应用系统设计 第6章 S3C2410系统接口操作原理及实验,课程安排:,3,2.1 ARM体系结构的特点 2.2 ARM处理器工作模式 2.3 寄存器组织 2.4 流水线 2.5 ARM存储系统 2.6 异常 2.7 ARM处理器寻址方式 2.8 ARM处理器指令集,本章课程:,4,ARM处理器有如下特点: 体积小、低功耗、低成本、高性能 支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容
2、8位/16位器件 大量使用寄存器,指令执行速度更快 大多数数据操作都在寄存器中完成 寻址方式灵活简单,执行效率高 指令长度固定 RISC和CISC之间主要的区别,2.1 ARM体系结构的特点,5,ARM内核采用RISC体系结构。ARM体系结构的主要特征如下: (1)大量的寄存器,它们都可以用于多种用途; (2)Load/Store体系结构; (3)每条指令都条件执行; (4)多寄存器的Load/Store指令; (5)能够在单时钟周期执行的单条指令内完成一项普通的移位操作和一项普通的ALU操作; (6)通过协处理器指令集来扩展ARM指令集,包括在编程模式中增加了新的寄存器和数据类型。 (7)如
3、果把Thumb指令集也当作ARM体系结构的一部分,那么还可以加上:在Thumb体系结构中以高密度16位压缩形式表示指令集。,2.1 ARM体系结构的特点,www.embedu.org,2.2 处理器工作模式,ARM 有7个基本工作模式: User : 非特权模式,大部分任务执行在这种模式 FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式 IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式 Supervisor :当复位或软中断指令执行时将会进入这种模式 Abort : 当存取异常时将会进入这种模式 Undef : 当执行未定义指令时会进入这种模式 Syst
4、em : 使用和User模式相同寄存器集的特权模式,www.embedu.org,2.3 ARM 寄存器,www.embedu.org,2.3 ARM 寄存器,User mode r0-r7, r15, and cpsr,r8,r9,r10,r11,r12,r13 (sp),r14 (lr),spsr,FIQ,User,r13 (sp),r14 (lr),spsr,IRQ,User mode r0-r12, r15, and cpsr,r13 (sp),r14 (lr),spsr,Undef,User mode r0-r12, r15, and cpsr,r13 (sp),r14 (lr),s
5、psr,SVC,User mode r0-r12, r15, and cpsr,r13 (sp),r14 (lr),spsr,Abort,User mode r0-r12, r15, and cpsr,Thumb state Low registers,Thumb state High registers,Note: System模式使用user模式寄存器集,www.embedu.org,2.3 ARM 寄存器,ARM 有37个32-Bits长的寄存器. 1 个用作PC( program counter) 1个用作CPSR(current program status register) 5个
6、用作SPSR(saved program status registers) 30 个通用寄存器 当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取: 相应的r0-r12子集 相应的 r13 (the stack pointer, sp) and r14 (the link register, lr) 相应的 r15 ( the program counter, pc) 相应的CPSR(current program status register, cpsr) 特权模式 (除system模式) 还可以存取; 相应的 spsr (saved program status regist
7、er),www.embedu.org,程序状态寄存器,条件位: N = Negative result from ALU Z = Zero result from ALU C = ALU operation Carried out V = ALU operation oVerflowed Q 位: 仅ARM 5TE/J架构支持 指示饱和状态 J 位 仅ARM 5TE/J架构支持 J = 1: 处理器处于Jazelle状态,中断禁止位: I = 1: 禁止 IRQ. F = 1: 禁止 FIQ. T Bit 仅ARM xT架构支持 T = 0: 处理器处于 ARM 状态 T = 1: 处理器处于
8、 Thumb 状态 Mode位: 处理器模式位,www.embedu.org,当处理器执行在ARM状态: 所有指令 32 bits 宽 所有指令必须 word 对齐 所以 pc值由bits 31:2决定, bits 1:0 未定义 (所以指令不能halfword / byte对齐). 当处理器执行在Thumb状态: 所有指令 16 bits 宽 所有指令必须 halfword 对齐 所以 pc值由bits 31:1决定, bits 0 未定义 (所以指令不能 byte对齐). 当处理器执行在Jazelle状态: 所有指令 8 bits 宽 处理器执行 word 存取一次取4条指令,程序指针PC
9、 (r15),www.embedu.org,处理器按照一系列步骤来执行每一条指令,典型的步骤如下: (1)从存储器读取指令(fetch); (2)译码以鉴别它是属于哪一条指令(decode); (3)从指令中提取指令的操作数(这些操作数往往存在于寄存器中)(reg); (4)将操作数进行组合以得到结果或存储器地址(ALU); (5)如果需要,则访问存储器以存储数据(mem); (6)将结果写回到寄存器堆(res)。,2.4 流水线的概念与原理,www.embedu.org,指令流水线,为增加处理器指令流的速度,ARM7 系列使用3级流水线. 允许多个操作同时处理,而非顺序执行。 PC指向正被取
10、指的指令,而非正在执行的指令,Fetch,Decode,Execute,从存储器中读取指令,解码指令中用到的寄存器,寄存器读(从寄存器Bank) 移位及ALU操作 寄存器写(到寄存器Bank ),PC PC,PC - 4 PC-2,PC - 8 PC - 4,ARM Thumb,www.embedu.org,该例中用6个时钟周期执行了6条指令 所有的操作都在寄存器中(单周期执行) 指令周期数 (CPI) = 1,Cycle,Operation,ADD,SUB,ORR,AND,EOR,ORR,1,2,3,4,5,6,7,8,9,F,D,E,F,D,E,F,E,F,D,E,F,D,E,D,F,D,
11、E,W,F 取指 D 解码 E 执行,M,最佳流水线,www.embedu.org,该例中,用6周期执行了4条指令 指令周期数 (CPI) = 1.5,Cycle,Operation,ADD,SUB,ORR,AND,EOR,LDR,1,2,3,4,5,6,7,8,9,F,D,E,F,D,E,F,E,F,D,E,F,D,E,D,F,D,E,F - Fetch D - Decode E Execute M Memory W Writeback S - Stall,M,M,W,S,S,S,S,LDR 流水线举例,www.embedu.org,流水线被阻断 注意:内核运行在ARM状态,Cycle,Ad
12、dress Operation,0x8000 BL 0x8FEC,0x8004 SUB,0x8FF0 ORR,0x8FEC AND,0x8FF4 EOR,0x8008 ORR,1,2,3,4,5,6,7,8,9,F,D,E,F,D,F,E,F,D,E,F,D,F,D,E,W,F - Fetch D - Decode E Execute L Linkret A - Adjust,M,L,A,分支流水线举例,www.embedu.org,中断流水线举例,IRQ 中断的反应时间最小=7周期,Cycle,Address Operation,0x8000 ADD,0x8004 SUB,0x0018 B
13、0xAF00,0x800C X,0x001C X,0x8008 MOV,1,2,3,4,5,6,7,8,F,D,E,F,DI,F,E,F,F,D,F,D,W,F - Fetch D - Decode E Execute DI Decode IRQ EI Execute IRQ L Linkret A - Adjust,M,L,A,F,F,D,F,EI,D,E,0x0020 X,0xAF00 STMFD,0xAF04 MOV,0xAF08 LDR,F,IRQ,www.embedu.org,互锁 跳转指令,影响流水线性能的因素,www.embedu.org,多达16个可定义协处理器 扩充ARM指令
14、集 通常用作ARM “internal functions” (例如:cp15通常 用作 ARM cache 控制器),2.5 ARM存储器,协处理器,www.embedu.org,异常或中断是用户程序中最基本的一种执行流程和形态。 当异常发生时,处理器会把PC设置为一个特定的存储器地址。这一地址放在被称为向量表(vector table)的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。,2.6 异常,www.embedu.org,异常的种类,www.embedu.org,异常在当前指令执行完成之后才被响应 多个异常可以在同一时间产生 异常指定了优先级和固定
15、的服务顺序: Reset Data Abort FIQ IRQ Prefetch Abort SWI Undefined instruction,异常优先级,www.embedu.org,Vector Table,Vector table can be at 0xFFFF0000 on ARM720T and on ARM9/10 family devices,FIQ,IRQ,(Reserved),Data Abort,Prefetch Abort,Software Interrupt,Undefined Instruction,Reset,异常处理,当异常产生时, ARM core: 拷贝 CPSR 到 SPSR_ 设置适当的 CPSR 位: 改变处理器状态进入 ARM 状态 改变处理器模式进入相应的异常模式 设置中断禁止位禁止相应中断 (如果需要) 保存返回地址到 LR_ 设置 PC 为相应的异常向量 返回时, 异常处理需要: 从 SPSR_恢复CPSR 从LR_恢复PC Note:这些操作只能在 ARM 态执行.,www.embedu.org,从SWI 和 Undef异常返回 MOVS pc,lr 从FIQ, IRQ 和 预取异常(Prefect Abort)返回