




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 ARM体系结构n何为体系结构:n计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性 。n冯诺依曼体系结构和哈佛体系结构nRISC和CISCn流水线n嵌入式微处理器体系结构n存储器2.1 微处理器的基础知识计算机体系结构图1.1计算机系统的基本结构软件系统硬件系统控 制 器运 算 器存 储 器输入设备CPU微型计算机系统输入接口电路输出接口电路输出设备冯诺依曼体系结构指令寄存器控制器数据通道输入输出中央处理器存储器程序指令0指令1指令2指令3指令4数据数据0数据1数据2哈佛体系结构指令寄存器控制器数据通道输入输出CPU程序存储器指令0指令1指令2数据存储器数据0数据1数据
2、2地址指令地址数据CISC和RISCCISCCISC:复杂指令集(:复杂指令集(Complex Instruction Set ComputerComplex Instruction Set Computer)具有大量的指令和寻址方式,指令长度可变具有大量的指令和寻址方式,指令长度可变8/28/2原则:原则:80%80%的程序只使用的程序只使用20%20%的指令的指令大多数程序只使用少量的指令就能够运行。大多数程序只使用少量的指令就能够运行。RISCRISC:精简指令集(:精简指令集(Reduced Instruction Set Computer)Reduced Instruction Se
3、t Computer)只包含最有用的指令,指令长度固定只包含最有用的指令,指令长度固定确保数据通道快速执行每一条指令确保数据通道快速执行每一条指令使使CPUCPU硬件结构设计变得更为简单硬件结构设计变得更为简单CISC与RISC的数据通道IFIDREGALUMEM开始退出IFIDALUMEMREG微操作通道开始退出单通数据通道RISC:Load/Store结构CISC:寻址方式复杂CISC的背景和特点 n背景背景: : 存储资源紧缺存储资源紧缺, , 强调编译优化强调编译优化n增强指令功能,设置一些功能复杂的指令,把一些增强指令功能,设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改
4、用硬件的(微程原来由软件实现的、常用的功能改用硬件的(微程序)指令系统来实现序)指令系统来实现n为节省存储空间,强调高代码密度,指令格式不固为节省存储空间,强调高代码密度,指令格式不固定,指令可长可短,操作数可多可少定,指令可长可短,操作数可多可少n寻址方式复杂多样,操作数可来自寄存器,也可来寻址方式复杂多样,操作数可来自寄存器,也可来自存储器自存储器n采用微程序控制,执行每条指令均需完成一个微指采用微程序控制,执行每条指令均需完成一个微指令序列令序列nCPI CPI ,指令越复杂,指令越复杂,CPICPI越大。越大。CISC的主要缺点n指令使用频度不均衡。指令使用频度不均衡。n高频度使用的指
5、令占据了绝大部分的执行时间,扩充的高频度使用的指令占据了绝大部分的执行时间,扩充的复杂指令往往是低频度指令。复杂指令往往是低频度指令。n大量复杂指令的控制逻辑不规整,不适于大量复杂指令的控制逻辑不规整,不适于VLSIVLSI工艺工艺nVLSIVLSI的出现,使单芯片处理机希望采用规整的硬联逻辑的出现,使单芯片处理机希望采用规整的硬联逻辑实现,而不希望用微程序,因为微程序的使用反而制约实现,而不希望用微程序,因为微程序的使用反而制约了速度提高。了速度提高。( (微码的存控速度比微码的存控速度比CPUCPU慢慢5-105-10倍倍) )。n软硬功能分配软硬功能分配n复杂指令增加硬件的复杂度,使指令
6、执行周期大大加长复杂指令增加硬件的复杂度,使指令执行周期大大加长,直接访存次数增多,数据重复利用率低。,直接访存次数增多,数据重复利用率低。n不利于先进指令级并行技术的采用不利于先进指令级并行技术的采用n流水线技术流水线技术RISC基本设计思想n精简指令集:保留最基本的精简指令集:保留最基本的, ,去掉复杂、使用频度不高的指令去掉复杂、使用频度不高的指令(选取运算指令、加载、存储指令和转移指令作主指令集)(选取运算指令、加载、存储指令和转移指令作主指令集),以减小,以减小CPI: CPUtime=Instr_Count CPI: CPUtime=Instr_Count * * CPI CPI
7、* * Clock_cycle Clock_cycle ICIC程序中指令数,程序中指令数,CPICPI每条指令执行所有周期数每条指令执行所有周期数n复杂指令可通过对简单基本指令组合而成复杂指令可通过对简单基本指令组合而成n每条指令的长度相同,大部分指令可在一个机器周期完成每条指令的长度相同,大部分指令可在一个机器周期完成n采用多级指令流水线结构,处理器在同一时间可执行多条指采用多级指令流水线结构,处理器在同一时间可执行多条指令令n采用采用LoadLoad(加载)(加载)/Store/Store(存储)结构,统一存储器访问形(存储)结构,统一存储器访问形式,只允许式,只允许Load/Store
8、Load/Store指令执行存储器操作,其余指令均对指令执行存储器操作,其余指令均对寄存器操作寄存器操作n大大增加通用寄存器的数量,大大增加通用寄存器的数量,ALUALU只与寄存器直接连接只与寄存器直接连接CISC与RISC的对比类别类别CISCCISCRISCRISC指令系统指令系统指令数量很多指令数量很多较少,通常少于较少,通常少于100100执行时间执行时间有些指令执行时间很长,如有些指令执行时间很长,如整块的存储器内容拷贝;或整块的存储器内容拷贝;或将多个寄存器的内容拷贝到将多个寄存器的内容拷贝到存贮器存贮器没有较长执行时间的指令没有较长执行时间的指令编码长度编码长度编码长度可变,编码
9、长度可变,1-151-15字节字节编码长度固定,通常为编码长度固定,通常为4 4个字节个字节寻址方式寻址方式寻址方式多样寻址方式多样简单寻址简单寻址操作操作可以对存储器和寄存器进行可以对存储器和寄存器进行算术和逻辑操作算术和逻辑操作只能对寄存器进行算术和逻辑只能对寄存器进行算术和逻辑操作,操作,Load/StoreLoad/Store体系结构体系结构编译编译难以用优化编译器生成高效难以用优化编译器生成高效的目标代码程序的目标代码程序 采用优化编译技术,生成高效采用优化编译技术,生成高效的目标代码程序的目标代码程序 流水线技术流水线技术流水线流水线(Pipeline)(Pipeline)技术:几
10、个指令可以并行执行技术:几个指令可以并行执行 提高了提高了CPUCPU的运行效率的运行效率 内部信息流要求通畅流动内部信息流要求通畅流动译码取指执行add译码取指执行sub译码取指执行cmp时间AddSubCmp指令流水线以ARM为例n为增加处理器指令流的速度,ARM7 系列使用3级流水线.n允许多个操作同时处理,比逐条指令执行要快。n PC指向正被取指的指令,而非正在执行的指令FetchDecodeExecute从存储器中读取指令解码指令寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank )PCPCPC - 4PC-2PC - 8PC - 4ARMThumb 最佳流水线n
11、该例中用6个时钟周期执行了6条指令n所有的操作都在寄存器中(单周期执行)n指令周期数 (CPI) = 1 操作操作周期周期 1 2 3 45 6 ADD SUB MOV AND ORR EOR CMP RSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch高速缓存(CACHE)1 1、为什么采用高速缓存、为什么采用高速缓存 微处理器的时钟频率比内存速度提高快得多,高速缓存可以微处理器的时钟频率比内
12、存速度提高快得多,高速缓存可以提高内存的平均性能。提高内存的平均性能。2 2、高速缓存的工作原理、高速缓存的工作原理 高速缓存是一种小型、快速的存储器,它保存部分主存内高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。容的拷贝。 CPU高速缓存控制器CACHE主存数据数据地址总线和总线桥CPU低速设备桥数据高速总线存储器高速设备键盘低速总线ARM公司提出的AMBA总线标准嵌入式处理器体系结构n按体系结构的不同可分为五大类nARMnMIPSnPOWER PCnX86nSH系列 nARM 公司的ARM RISC处理器nARM 7 Thumb 家族nARM 9 Thumb 家族nARM 1
13、0 Thumb 家族nARM 11 Thumb 家族Intel StrongARMnStrongARM 110nStrongARM 1100nStrongARM 1110nStrongARM 1111INTEL的Xscale架构处理器 基于ARM V5TE体系结构 兼容ARM V5TE ISA指令集(不支持浮点指令集) 在处理器内核周围提供了 指令和数据存储器管理单元 指令、数据和微小数据缓存 写缓冲、挂起缓冲和分支目标缓冲器 电源管理 性能监控 调试 JTAG单元以及协处理器接口 MAC协处理器 内核存储总线MIPSn从1986年推出R2000处理器以来,MIPS陆续推出R3000、R400
14、0、R8000等。n之后,MIPS公司的战略发生变化,把重点放在嵌入式系统。n1999年,MIPS公司发布了MIPS32和MIPS64体系结构标准,集成了原来所有的MIPS指令集,并且增加了许多更强大的功能。n此后MIPS公司又陆续开发了高性能、低功耗的32位和64位处理器内核。 MIPSn在MIPS的32位内核中n4K系列对应于SOC应用设计;nM4K系列内核是为在下一代消费电子、网络、宽带应用中越来越受欢迎的多CPU SOC所设计;n4KE系列具有目前32位通用嵌入式处理器中最高的DMIPS/MHz性能指标;n4KS系列由于采用了特殊的SmartMIPS体系结构,特别适用于需要安全数据传输
15、的领域,比如网络、智能卡等;n5K和20Kc系列属于MIPS的64位内核n5K能提供1.4DMIPS/MHz的性能以及最低350MHz的运行速率。n20Kc是当今最快的可授权嵌入式处理器内核。一般运行在600MHz,具有7段流水线的20Kc内核,能提供1.2GFLOPS的峰值浮点运算能力。MIPSn在嵌入式处理器市场中,基于MIPS内核的处理器占据了相当大的数量n2002年,一共付运了8700万片采用MIPS内核的嵌入式处理器,份额仅次于ARM位居全球第二。n在目前快速增长的比如Cable Modem、DSL Modem、DVD录像机等领域内,MIPS的市场份额位居第一。nMIPS的合作伙伴包
16、括了AMD,IDT,NEC,TI,SONY等众多厂商PowerPC体系结构 nMotorola半导体(现Freescale半导体)联合IBM以及苹果电脑 nIBMnPowerPC750 nPowerPCG3 nMotorolanMPC nMCX86体系结构 nIntel X86体系结构nAMD最新的X86体系结构嵌入式处理器产品为Geode 系列处理器 nCISC指令集SH体系结构nSH(SuperH)系列是由前日立半导体公司(现Renesas公司)推出的嵌入式处理器 nSH系列的CPU指令格式是固定的,只有一个字长,绝大多数指令是单周期完成的,即使是复杂的乘加指令也仅需2个时钟周期 n为了克
17、服内存访问的瓶颈,SH的CPU简化寻址方式,采用Load/Store(装载/存储)结构,并且在片内设置高速缓存,以减少访问内存的时间 存储器系统寄存器高速缓存SRAM主存储器DRAM本地存储器 Flash、ROM、磁盘网络存储器 Flash、ROM、磁盘时钟周期01105010020000000分层结构存储器种类RAMRAM:随机存取存储器,:随机存取存储器, SRAMSRAM:静态随机存储器,:静态随机存储器, DRAMDRAM:动态随机存储器动态随机存储器 1 1)SRAMSRAM比比DRAMDRAM快快 2 2)SRAMSRAM比比DRAMDRAM耗电多耗电多 3 3)DRAMDRAM存
18、储密度比存储密度比SRAMSRAM高得多高得多 4 4)DRMDRM需要周期性刷新需要周期性刷新ROMROM:只读存储器:只读存储器EPROMEPROMEEPROMEEPROMFLASHFLASH:闪存:闪存闪速存储器(FLASH) n相对传统的EPROM芯片,这种芯片可以用电气的方法快速地擦写 n由于快擦写存储器不需要存储电容器,故其集成度更高,制造成本低于DRAM n它使用方便,既具有SRAM读写的灵活性和较快的访问速度,又具有ROM在断电后可不丢失信息的特点,所以快擦写存储器技术发展十分迅速 NOR技术nNOR技术闪速存储器是最早出现的Flash Memory,目前仍是多数供应商支持的技
19、术架构,它源于传统的EPROM器件。n与其它Flash Memory技术相比,具有可靠性高、随机读取速度快的优势。n在擦除和编程操作较少而直接执行代码的场合,尤其是代码(指令)存储的应用中广泛使用。n由于NOR技术Flash Memory的擦除和编程速度较慢,而块尺寸又较大,因此擦除和编程操作所花费的时间很长,在纯数据存储和文件存储的应用中,NOR技术显得力不从心。NAND技术nNAND技术 Flash Memory具有以下特点:n以页为单位进行读和编程操作,1页为256或512字节;以块为单位进行擦除操作,1块为4K、8K或16K字节。具有快编程和快擦除的功能,其块擦除时间是2ms;而NOR
20、技术的块擦除时间达到几百ms。n数据、地址采用同一总线,实现串行读取。随机读取速度慢且不能按字节随机编程。n芯片尺寸小,引脚少,是位成本(bit cost)最低的固态存储器,突破了每兆字节1元的价格限制。n芯片包含有失效块,其数目最大可达到335块(取决于存储器密度)。失效块不会影响有效块的性能,但设计者需要将失效块在地址映射表中屏蔽起来。n基于NAND的存储器可以取代硬盘或其它块设备。2.2 ARM920T体系结构nARM9系列微处理器是低功耗的32位RISC结构,最适合要求低成本、低功耗的消费类应用产品,是目前应用最广泛、高性价比的嵌入式处理器。国际许多著名的IT芯片制造公司,基于ARM9
21、处理器核生产了多种微控制器芯片,如三星公司的S3C2410、Atmel公司的AT91RM9200、Intel公司的PXA255、Motorola公司的MC9328、Cirrus Logic公司的EP93XX系列、等等。 ARM9结构特点nARM920T微处理器的指令流水采用了典型的RISC五级流水线结构,将指令执行过程分为取指、译码、执行、访存和写回5个步骤。五级流水线结构采用分离指令cache和数据cache,将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时可能有5个指令在执行,消除了指令执行的性能瓶颈,加快了指令执行速度。 五级流水线操作执行内存访问寄存器写指令预取译码执行内存
22、访问寄存器写指令预取译码执行内存访问寄存器写指令预取译码执行指令预取译码内存访问指令预取译码执行指令预取译码译码:包括指令译码,寄存器译码,寄存器读取。执行:包括移位、ALU运算。TTTTT(续)nARM920T核内部具有指令缓存和数据缓存,允许处理器同时进行取指和读写数据操作。数据可以是:8位(字节)、16位(半字)、32位(字)。字必须是4字节边界对准,半字必须是2字节边界对 准。ARM920T 框图ARM920T 框图(续)nCacheCache:n通常人们所说的通常人们所说的CacheCache就是指缓存就是指缓存SRAMSRAM。 SRAMSRAM叫静叫静态内存,态内存,“静态静态”
23、指的是当我们将一笔数据写入指的是当我们将一笔数据写入SRAMSRAM后,除非重新写入新数据或关闭电源,否则写入的数后,除非重新写入新数据或关闭电源,否则写入的数据保持不变。据保持不变。n由于由于CPUCPU的速度比内存和硬盘的速度要快得多,所以的速度比内存和硬盘的速度要快得多,所以在存取数据时会使在存取数据时会使CPUCPU等待,影响计算机的速度。等待,影响计算机的速度。SRAMSRAM的存取速度比其它内存和硬盘都要快,所以它被的存取速度比其它内存和硬盘都要快,所以它被用作电脑的高速缓存用作电脑的高速缓存(Cache)(Cache)。nCPUCPU运行时,先把指令或数据从内存中读到运行时,先把
24、指令或数据从内存中读到cachecache中,中,需要读出时,需要读出时,CPUCPU先到先到cachecache中读取,如果没有再从内中读取,如果没有再从内存读取。存读取。2.2.1 ARM微处理器的工作状态微处理器的工作状态 从编程的角度看从编程的角度看,ARM,ARM微处理器的微处理器的工作状态工作状态一般有两种一般有两种, ,并可并可在两种状态之间切换在两种状态之间切换: :nARM状态是32位指令,字对齐,PC bit1、bit0始终为0。nThumb状态时,执行16位指令,半字对齐的Thumb指令,PC使用bit1选择半字。Thumb指令是ARM指令的子集。nThumb状态时,指令
25、地址(PC)和操作数都还是32位的。n两种状态切换,不影响寄存器的内容。n我们着重介绍ARM状态,Thumb状态知道即可。ARMARM处理器在两种工作状态之间可以处理器在两种工作状态之间可以切换切换:n进入进入ThumbThumb状态:状态:n执行执行BXBX指令,并设置操作数寄存器的状态(位指令,并设置操作数寄存器的状态(位00)为)为1 1。n在在ThumbThumb状态进入异常状态进入异常(IRQ, FIQ, UNDEF, ABORT,SWI (IRQ, FIQ, UNDEF, ABORT,SWI etc.)etc.),当异常处理返回时自动转换到,当异常处理返回时自动转换到ThumbTh
26、umb状态状态n进入进入ARMARM状态:状态:n执行执行BXBX指令,并设置操作数寄存器的状态(位指令,并设置操作数寄存器的状态(位00)为)为0 0。n进入异常时,将进入异常时,将PCPC放入异常模式链接寄存器中,从异常向放入异常模式链接寄存器中,从异常向量地址开始执行也可进入量地址开始执行也可进入ARMARM状态状态402.2.3ARM2.2.3ARM体系结构的存储器格式体系结构的存储器格式n存储器格式是指字、半字、字节在存储器中存放的格存储器格式是指字、半字、字节在存储器中存放的格式,也反映了它们之间的关系。式,也反映了它们之间的关系。nARM920TARM920T中支持字节(中支持字
27、节(8 8位)、半字(位)、半字(1616位)和字(位)和字(3232位)位)3 3种数据类型,其中字需要种数据类型,其中字需要4 4字节对齐,半字需字节对齐,半字需要要2 2字节对齐。字节对齐。nARM920TARM920T体系结构支持两种方法存储字数据,即大端体系结构支持两种方法存储字数据,即大端格式和小端格式。格式和小端格式。41 存储单元概念说明:存储单元概念说明:n字(字(WordWord):字的长度为):字的长度为3232位,而在位,而在1616位处理器体系结构中位处理器体系结构中,字的长度为,字的长度为1616位。位。n半字(半字(Half-WordHalf-Word):半字的长
28、度为):半字的长度为1616位,与位,与1616位处理器体位处理器体系结构中字的长度一致。系结构中字的长度一致。n字节(字节(ByteByte):在):在ARMARM体系结构和体系结构和8 8位位/16/16位处理器体系结构位处理器体系结构中,字节的长度均为中,字节的长度均为8 8位。位。nARMARM体系结构使用体系结构使用2 23232个个8 8位字节的单一、线性地址空间,字节位字节的单一、线性地址空间,字节地址为地址为0 02 23232-1-1;也可以将地址空间看作为由;也可以将地址空间看作为由2 23030个个3232位的字位的字组成,字地址可被组成,字地址可被4 4整除,且按字对准
29、。也可以看作成由整除,且按字对准。也可以看作成由2 23131个个1616位半字组成。位半字组成。42n大端格式大端格式:被存放字数据的高字节存储在存储系统的:被存放字数据的高字节存储在存储系统的低地址中,而被存放的字数据的低字节则存放在存储低地址中,而被存放的字数据的低字节则存放在存储系统的高地址中。系统的高地址中。n小端格式小端格式:与大端存储格式相反,在小端存储格式中:与大端存储格式相反,在小端存储格式中,存储系统的低地址中存放的是被放字数据中的低字,存储系统的低地址中存放的是被放字数据中的低字节内容,存储系统的高地址存放的是被存字数据中的节内容,存储系统的高地址存放的是被存字数据中的高
30、字节内容。高字节内容。n 大端格式大端格式(big-endian):字数据的高字节存储在低地址中字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。,而字数据的低字节则存放在高地址中。n 小端格式小端格式(low-endian):与大端存储格式相反。低地址与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高字中存放的是字数据的低字节,高地址存放的是字数据的高字节。节。缺省设置为小端格式。缺省设置为小端格式。举例:举例:大端的数据存放格式大端的数据存放格式低地址低地址高地址高地址地址地址A地址地址A+1地址地址A+2地址地址A+3最高有效字节的地址最高有效字节
31、的地址就是该就是该word的地址的地址最高有效字节最高有效字节位于最低地址位于最低地址word a=0 x f6 73 4b cdf6734bcd举例:举例:小端的数据格式小端的数据格式 低地址低地址高地址高地址地址地址A地址地址A+1地址地址A+2地址地址A+3最低有效字节的地址最低有效字节的地址就是该就是该word的地址的地址最低有效字节最低有效字节位于最低地址位于最低地址word a=0 x f6 73 4b cdf6734bcdn7种运行模式nUser:用户模式,ARM处理器正常的程序执行状态。nFIQ:快速中断模式,用于高速数据传输或通道处理。nIRQ:普通中断模式,用于普通的中断处
32、理。nSVC:管理,供操作系统使用的一种保护模式。nABT:数据或指令预取中止,当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。nUND:未定义指令中止模式,当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。nSYS:系统模式,运行特权级的操作系统任务。n注:工作模式基于两个标准区分,资源访问权限、模式切换。2.2.3ARM9处理器模式n异常模式:n除系统模式与用户模式外,其他5种模式,常用于处理中断或异常,以及访问受保护的系统资源等。n特权模式:n除用户模式外的模式称为特权模式。n用于服务中断或异常,或访问保护资源。n程序可访问所有系统资源,也可任意进行模式切换。
33、工作模式理解工作模式理解n用户模式:n应用程序不能访问受操作系统保护的系统资源,例如例如:MSR、MRS、MCR、MRC指令在用户模式不能完指令在用户模式不能完全执行!?全执行!?n不能直接进行处理器模式的切换。n需切换模式时,可产生异常,在异常处理过程中进行处理器切换。这样便于操作系统控制整个系统资源。如产生SWI切换到SVC模式,再切换到SYS模式。n系统模式n系统模式不是通过异常进入,和用户模式有一样的寄存器。n系统模式属于特权模式,可以访问所有系统资源,也可以直接进行处理器模式切换。n主要供操作系统使用。n模式切换方式总结:n软件程序控制,之间修改CPSR模式位置。n硬件中断或异常(除
34、reset外一般的程序异常)。n芯片复位(CPU工作在超级用户模式,PC0)。nSWI指令。nARM920T有37个寄存器n31个32bit通用寄存器(包括程序计数器PC)n未分组寄存器R0R7:在所有的运行模式下,指向同一个物理寄存器n分组寄存器R8R14:每次访问的物理寄存器与处理器当前的运行模式有关,命名规则R13_,R14_,mode:usr,fiq,irq,svc,abt,undn程序计数器PCn6个状态寄存器2.2.4 寄存器组织ARMARM的寄存器组织的寄存器组织CPSRSPSR-SVCCPSRSPSR-abtCPSRSPSR-undCPSRSPSR-irqCPSRSPSR-fi
35、qn理解n不是同时可见,由处理器状态和工作模式决定。nARM状态,16个通用寄存器和12个状态寄存器同时可见。nR0R15是直接访问寄存器,除R15外都是通用目的寄存器,可以保存地址或数据。此外有第17个寄存器,用于保存状态信息。nStack Pointer,堆栈指针。n堆栈寄存器器使用举例:STMDB R13!, Rlist ;将Rlist指定的寄存器值压入堆栈 ;并更新堆栈指针LDMIA R13!, Rlist ;将堆栈内容弹出并赋值给Rlist ;并更新堆栈指针ADD R13, R13, #Imm ;将Imm加到SP上n各种模式有自己的私有堆栈指针。故需要切换到各种模式去初始化堆栈首地址
36、,另需在存储空间划分出一片区域用作程序堆栈。n堆栈分Full型和Empty型,递增型和递减型( p128 ds )。R13 堆栈指针寄存器内部寄存器R14nR14:又称Link寄存器,用于子程序连接。n执行分支与连接指令(BL)时,R15(PC)的值会拷贝一份存于该寄存器。调用时硬件自动保存,返回时程序计数器PC从R14读取。n当异常或中断发生时,或者异常或中断子程序中执行分之与连接指令(BL)时,用R14_svc、R14_irq、 R14_abt、R14_und、R14_fiq用于保存程序返回值(需进行计算)。注意:PC值=/=当前指令地址,为预取指令地址。(哈佛结构的好处!PC计算简单。)
37、注意:各种模式下Link寄存器只有4B(32bit)存储空间,即存储一个地址值,分支嵌套或者中断或异常嵌套、或中断与异常中执行分支指令时会导致死循环等错误。解决办法,最好是使用堆栈,至少是保存PC。n使用下面的指令实现子程序返回操作。nMov PC, LRnBX LRn堆栈使用n STMFD SP!,LR ;保存PC到栈中n LDMFD SP!,PC ;子程序返回n注意:压栈与出栈分别对应LR与PC。R14使用举例nProgram Counter:程序计数器n用来保存指令的地址,正常执行时,其值自动递增,指向下一条指令地址;跳转、异常发生时,PC的值会被硬件修改,程序返回时通过程序修改(即软件
38、修改)PC值。nARM920T为5级流水线操作,正常顺序执行指令时,PC值指向当前执行指令的下两条指令地址。即PC当前指令地址2(Words)注意:PC,是ARM中的一个寄存器,其内容为当前预取指令的地址;另外在描述中也常用PC指代当前正在执行的指令的地址。内部寄存器R152.2.5 程序状态寄存器程序状态寄存器 ARMARM体系结构包含一个当前程序状态寄存器体系结构包含一个当前程序状态寄存器(CPSR)(CPSR)和和5 5个个备份的程序状态寄存器备份的程序状态寄存器 (SPSRs)(SPSRs)。 当前程序状态寄存器当前程序状态寄存器 CPSRCPSR,可以在任何工作模式下被访,可以在任何
39、工作模式下被访问;问; 备份程序状态寄存器备份程序状态寄存器SPSRSPSR,只有在异常模式下,才能,只有在异常模式下,才能被访问被访问 备份的程序状态寄存器用来进行异常处理,其功能包括备份的程序状态寄存器用来进行异常处理,其功能包括:n保存保存ALUALU中的当前操作信息。中的当前操作信息。n控制允许和禁止中断。控制允许和禁止中断。n设置处理器的运行模式。设置处理器的运行模式。程序状态寄存器的格式程序状态寄存器的格式 条件码标志条件码标志(Condition Code Flags)N、Z、C、V均为条件码标志位。它们的内容可被算术均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并
40、且可以决定某条指令是否被执或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。行。在在ARM状态下,绝大多数的指令都是有条件执行的。在状态下,绝大多数的指令都是有条件执行的。在Thumb状态下仅有分支指令是有条件执行的。状态下仅有分支指令是有条件执行的。 条件码标志位条件码标志位标志位含 义N当两个补码表示的带符号数运算时,当两个补码表示的带符号数运算时,N=1 表示运算的结果为负数;表示运算的结果为负数;N=0 表示运算的结果为正数或零表示运算的结果为正数或零;ZZ=1 表示运算的结果为零;表示运算的结果为零;Z=0表示运算的结果不为零;表示运算的结果不为零;C有有3种情况会改变种情况会
41、改变C的值:的值:加法运算(包括比较指令加法运算(包括比较指令CMN):当运算结果产生了进位时(无符号数上溢出):当运算结果产生了进位时(无符号数上溢出),C=1,否则,否则C=0。减法运算(包括比较指令减法运算(包括比较指令CMP):当运算时产生了借位(无符号数下溢出),):当运算时产生了借位(无符号数下溢出),C=0,否则,否则C=1。对于包含移位操作的非加对于包含移位操作的非加/减运算指令,减运算指令,C为移出值的最后一位。为移出值的最后一位。V对于加对于加/减法运算指令,当操作数和运算结果为二进制的补码表示减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,的带符号数时,V=1表示符号位溢出。表示符号位溢出。Q在在ARM v5及以上版本的及以上版本的E系列处理器中,用系列处理器中,用Q标志位指示增强的标志位指示增强的DSP运运算指令是否发生了溢出。算指令是否发生了溢出。 控制位控制位 CPSR的低的低8位位(包括包括I、F、T和和M4:0)称为控制位,称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。,这些位也可以由程序修改。n中断禁止位中断禁止位I、FI1 禁止禁止IRQ中断中断F1 禁止禁止FIQ中断中断nT标志位:该位反映处理器的运行状态。标志位:该位反映处理器的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论