第2章-ARM体系结构与编程模型_第1页
第2章-ARM体系结构与编程模型_第2页
第2章-ARM体系结构与编程模型_第3页
第2章-ARM体系结构与编程模型_第4页
第2章-ARM体系结构与编程模型_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统及开发应用第二讲ARM体系结构Outline2、ARM体系结构体系结构3、ARM编程模型编程模型工作状态工作状态CPUCPU工作模式工作模式寄存器组织寄存器组织异常异常内存与内存与IOIO1、嵌入式微处理器、嵌入式微处理器主流的嵌入式微处理器目前主流的嵌入式微处理器系列主要有ARM系列、MIPS系列、PowerPC系列、Super H系列和X86系列等。属于这些系列的嵌入式微处理器产品很多,有上千种以上。 Source: Andrew Allison, Inside The New Computer Industry, January 200132位浪潮的到来02,0004,0006

2、,0008,00010,00012,00014,00016,000Millions of Units2000200120022003200420052006200720082009MPUMCU (excl. DSP)CoresSource: Semico Research Corp. and SIA/WSTS02,0004,0006,0008,00010,00012,000Millions of Units200020012002200320042005200620072008200932-Bit +16-Bit8-Bit4-BitTotal MCU, by Sub-Category (exc

3、l. DSP) Total Embedded Control Market Shipments by Type 总共约总共约26亿个亿个32位处理器位处理器付运,占总数付运,占总数96亿的亿的27%2005年年ARM为为17亿个,亿个,约占约占32位总量的位总量的70%左右左右X86系列主要由主要由AMD,Intel,NS,ST等公司提等公司提供,如:供,如:Am186/88、Elan520、嵌入式嵌入式K6,386EX、STPC等。等。 主要应用在主要应用在工业控制工业控制、通信通信等领域。等领域。 国内由于对国内由于对X86体系比较熟悉,得到广泛体系比较熟悉,得到广泛应用,特别是嵌入式应用

4、,特别是嵌入式PC的应用非常广泛。的应用非常广泛。MPC/PPC系列Motorola推出的推出的MPC系列,如系列,如MPC8XX。IBM推出推出PPC系列,如系列,如PPC4XX。主要应用在主要应用在通信通信、消费电子及工业控制、消费电子及工业控制、军用装备等军用装备等领域。领域。MPC/PPC系列 IBM PowerPC 集成10/100Mbps以太网控制器、串行和并行端口、内存控制器以及其它外设的高性能嵌入式处理器。 Motorola MPC 高度综合的SOC设备,它结合了PPC微处理器核心的功能、通信处理器和单硅成分内的显示控制器。这个设备可以在大量的电子应用中使用,特别是在低能源、便

5、携式、图象捕捉和个人通信设备。技术技术0.25微米微米CMoS SA-12E282 Dhrystone 2.1 MIPS 200MHz375 Dhrystone 2.1 MIPS 266MHz200/100/66/50 MHz266/133/66/66 MHz晶体数量晶体数量480万万电源消耗电源消耗1.1瓦瓦信号信号 I/O300温度范围温度范围-40到到80度度电源供应电源供应2.5V (逻辑电路逻辑电路 ),3.3V (I/O) ,支持,支持 5V I/Os456-Ball,Enhanced PBGA (35mm x 35mm)性能性能频率频率 (CPU /SDRAM /PCI /EBC

6、)封装封装DhrystoneDhrystone是一个综合性的基准测试程序,它是为了测试编译器和是一个综合性的基准测试程序,它是为了测试编译器和CPUCPU处处理整数指令和控制功能的有效性,人为地选择一些理整数指令和控制功能的有效性,人为地选择一些“典型指令综合起来形典型指令综合起来形成的测试程序。成的测试程序。 ARM系列ARM(Advanced RISC Machine)公司是一家专门从事芯片IP设计与授权业务的英国公司,其产品有ARM内核以及各类外围接口。ARM内核是一种32位RISC微处理器,具有功耗低、性价比高、代码密度高等三大特色。目前,90%的移动电话、大量的游戏机、手持PC和机顶

7、盒等都已采用了ARM处理器,许多一流的芯片厂商都是ARM的授权用户(Licensee),如Intel、Samsung、TI、Motorola、ST等,ARM已成为业界公认的嵌入式微处理器标准。ARM FamilyARM7 FamilyARM9 FamilyARM10 FamilyARM11 Family150DMIPS300 DMIPS500 DMIPS1000 DMIPSARM Cortex FamilyARM720TARM1136J ARM1176JZARM1026EARM920T/ARM922T ARM926EJCortex AApplication ProcessorARM7TDMIA

8、RM1156T2ARM1026EARM946ECortex REmbedded RT ControllerARM7TDMIARM966E ARM968ECortex MMicro-controllerARM Architecture当前的主流ARM处理器 ARM7 世界上最为广泛使用的世界上最为广泛使用的 CPU 之一之一 100MHz ARM9 100-300MHz1.7B ARM Powred shipment in year of 2005, 31% is ARM9 based.ARM11 芯片已经面世 ARM11 300-700+ MHz SIMD 指令扩展支持更丰富的多媒体应用指令扩

9、展支持更丰富的多媒体应用 40家授权芯片公司,一些已开始量产家授权芯片公司,一些已开始量产FOMA N902iFirst ARM11 based phoneOMAP2420i.MX31/i.MX31L目前最快的嵌入式处理器 最快的处理器提供超过2000 DMIPS 的性能 运行于运行于 1GHz 频率频率 (90nm or 65nm 制造工艺制造工艺) 功耗小于 300mWARM Cortex A8 Application ProcessorCortex-M3 实现 $1 ARM芯片ARM Cortex ArchitectureThumb-2 ISA3 Stage Pipeline1.22 D

10、MIPS/MHz 30% over ARM7TDMI33K gates 30% smaller than ARM7TDMI Luminary Micro的Stellaris系列MCU产品售价仅1美元ARM Cortex-M3 微控制器内核,专门针对MCU应用领域而设计,突出低成本、低功耗和高效率。领先嵌入式处理器技术发展讨论 多处理器技术 单处理器技术的性能提升终有一天会遭遇瓶颈单处理器技术的性能提升终有一天会遭遇瓶颈 对嵌入式系统而言,尤其要考虑付出的代价对嵌入式系统而言,尤其要考虑付出的代价 把任务进行并行分解是理想的选择把任务进行并行分解是理想的选择 ARM MPcore可以集成可以集成

11、1-4个个ARM11处理器处理器 关键是要提供给软件开发者一个友好的编程界面关键是要提供给软件开发者一个友好的编程界面 64位处理器? 哪儿是系统性能瓶颈?哪儿是系统性能瓶颈? 是需要是需要64位地址还是位地址还是64位数据?位数据? 嵌入式系统比嵌入式系统比PC有更好的条件来解决系统性能和带宽问题有更好的条件来解决系统性能和带宽问题 PC系统在主板上,扩展系统带宽需要扩大每个组件的接口带宽系统在主板上,扩展系统带宽需要扩大每个组件的接口带宽 SoC只需扩展片内总线,非常容易实现只需扩展片内总线,非常容易实现 AMBA支持支持8-1024位总线宽度位总线宽度 许多许多SoC设计以及设计以及AR

12、M处理器内部已经使用处理器内部已经使用64位数据总线位数据总线如何选择嵌入式微处理器 微处理器内核的选择 有无有无MMU OS的考虑的考虑 系统的工作频率 芯片存储器的容量 片内外设的考虑 实际应用的要求实际应用的要求 接口时序接口时序Outline2、ARM体系结构体系结构3、ARM编程模型编程模型工作状态工作状态CPUCPU工作模式工作模式寄存器组织寄存器组织异常异常内存与内存与IOIO1、嵌入式微处理器、嵌入式微处理器图2.1.1 ARM体系结构方框图ARM处理器的分类 结构体系版本(Architecture) ARM v4T ARM v5TE ARM v6 ARM Cortex (v7

13、) Processor Family ARM7 ARM9 ARM10 ARM11 ARM Cortex 按应用特征分类 应用处理器应用处理器 Application Processor 实时控制处理器实时控制处理器 Real-time Controller 微控制器微控制器 Micro-controller特征:特征:MMU, Cache 最快频率、最高性能、合理功耗最快频率、最高性能、合理功耗 特征:特征:MPU, Cache 实时响应、合理性能、较低功耗实时响应、合理性能、较低功耗 特征:特征:no sub-memory system 一般性能、最低成本、极低功耗一般性能、最低成本、极低功

14、耗 ARMARM体系结构的命名规则体系结构的命名规则ARMXyzTDMIEJF-Sx系列y存储管理/保护单元zCacheTThumb16位译码器DJTAG调试器M快速乘法器I嵌入式跟踪宏单元E增强DSP指令JJazelleF向量浮点单元S可综合版本,以源代码形式提供的ARM核v4 v5TESA110v4TARM720TARM7TDMI-SARM920TARM940TARM922TARM966E-SARM946E-SARM1020Ev5TEJ / Jazellev6 / JazelleARM7EJ-SARM926EJ-SARM1026EJ-SARM11 Micro-Architecture 系列

15、系列相应产品相应产品性能特点性能特点ARM7ARM7系列系列ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ三级流水三级流水性能:性能:0.9MIPS/MHz, 可达到可达到130MIPs (Dhrystone2.1) ARM9ARM9系列系列ARM920T, ARM922T 五级流水,五级流水,性能:性能:1.1MIPS/MHz,可达,可达300 MIPS (Dhrystone 2.1),单,单32-bit AMBA bus接口,支持接口,支持MMU ARM9EARM9E系列系列ARM926EJ-S, RM946E-S, ARM966E-S, ARM968E-S,ARM9

16、96HS 五级流水五级流水,支持,支持DSP指令。指令。性性能:能:1.1MIPS/MHz,可达,可达300 MIPS (Dhrystone 2.1),高性能,高性能AHB, 软核软核(soft IP) ARM10ARM10系列系列ARM1020E, ARM1022EARM1026EJ-S 6级流水支持分支预测(级流水支持分支预测(branch prediction),支持),支持DSP指令。指令。性能:性能:1.35 MIPS/MHz,可达,可达430+ Dhrystone 2.1 MIPS,可选支可选支持高性能浮点操作持高性能浮点操作,双双64位总线接口位总线接口,内部内部64位数据通路位

17、数据通路 系列系列相应产品相应产品性能特点性能特点ARM11 ARM11 系列系列ARM11MPCore,ARM1136J(F)-S, ARM1156T2(F)-S,ARM1176JZ(F)-S 8级流水线级流水线(9级级ARM1156T2(F)-S),独立的,独立的load-store和和arithmetic流水线,支持分支预测和返回流水线,支持分支预测和返回栈(栈(Return Stack)。强大的)。强大的ARMv6 指令集,指令集,支持支持DSP, SIMD (Single Instruction Multiple Data) 扩展,扩展,支持支持ARM TrustZone 、Thum

18、b-2核心技术。核心技术。740 Dhrystone 2.1 MIPS,低功耗,低功耗0.6mW/MHz (0.13m, 1.2V) CortexCortex系列系列Cortex-A8, Cortex-M3,Cortex-R4 Cortex-A系列系列: 面向用于复杂面向用于复杂OS和应用的应用处和应用的应用处理器(理器(applications processors),支持),支持ARM, Thumb and Thumb-2指令集。指令集。Cortex-R系列:面向嵌入式实时领域的嵌入式系列:面向嵌入式实时领域的嵌入式处理器,支持处理器,支持ARM, Thumb,和和Thumb-2 指令集。

19、指令集。Cortex-M系列:系列:面向深嵌入式价格敏感的嵌入面向深嵌入式价格敏感的嵌入式处理器式处理器, 只支持只支持Thumb-2指令集指令集 SecurCoreSecurCore 系列系列SecurCore SC100,SecurCore SC200 用于用于Smart Card和和Secure IC的的32-bit解决方案。解决方案。支持支持ARM和和Thumb 指令集,软核。指令集,软核。具有安全特征和低成本安全存储保护单元具有安全特征和低成本安全存储保护单元 ARM V4ARMV4是目前支持的最老的架构,是基于32-bit地址空间的32-bit指令集。ARMv4除了支持ARMv3的

20、指令外还扩展了:v支持支持halfword的存取的存取v支持支持byte和和halfword的符号扩展读的符号扩展读v支持支持Thumb指令指令v提供提供Thumb和和Normal状态的转换指令状态的转换指令v进一步的明确了会引起进一步的明确了会引起Undefined异常的指令异常的指令 v对以前的对以前的26bits体系结构的体系结构的CPU不再兼容不再兼容 ARMv4T ARMv4T增加了16-bit Thumb 指令集,这样使得编译器能产生紧凑代码(相对于32-bit代码,内存能节省到35%以上)并保持32-bit系统的好处。 Thumb在处理器中仍然要扩展为标准的32位ARM指令来运行

21、。用户采用16位Thumb指令集最大的好处就是可以获得更高的代码密度和降低功耗。 ARM V5TE1999年推出ARMv5TE其增强了Thumb体系,增强的Thumb体系增加了一个新的指令同时改进了Thumb/ARM相互作用、编译能力和混合及匹配ARM与Thumb例程,以更好地平衡代码空间和性能并在ARM ISA上扩展了增强的DSP 指令集: 增强的DSP指令包括支持饱和算术(saturated arithmetic), 并且针对Audio DSP应用提高了70%性能。E扩展表示在通用的CPU上提供DSP能力。 ARMv5TEJ 2000年推出ARMv5TEJ,增加了Jazelle扩展以支持J

22、ava加速技术。 Jazelle技术比仅仅基于软件的JVM性能提高近8倍的性能减少了80的功耗。 ARMv6 2001年推出ARMv6,它在许多方面做了改进如内存系统、异常处理和较好地支持多处理器。 SIMD扩展使得广大的软件应用如Video和Audio codec的性能提高了4倍。 Thumb-2和TrustZone 技术也用于ARMv6中。ARMv6第一个实现是2002年春推出的ARM1136J(F)-STM处理器,2003年又推出了 ARM1156T2(F)-S 和ARM1176JZ(F)-S处理器。ARMv7 ARMv7定义了3种不同的处理器配置(processor profiles)

23、: Profile A是面向复杂、基于虚拟内存的是面向复杂、基于虚拟内存的OS和应用的和应用的 Profile R是针对实时系统的是针对实时系统的 Profile M是针对低成本应用的优化的微控制器的是针对低成本应用的优化的微控制器的。 所有ARMv7 profiles实现Thumb-2技术,同时还包括了NEON技术的扩展提高DSP和多媒体处理吞吐量400 ,并提供浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制应用的需要。ARM7TDMIThumb Thumb 架构扩展架构扩展, , 提供两个独立的指令集:提供两个独立的指令集:ARM ARM 指令,均为指令,均为 3232位位Thumb

24、Thumb指令,均为指令,均为 1616位位两种运行状态,用来选择哪个指令集被执行两种运行状态,用来选择哪个指令集被执行内核具有内核具有DebugDebug扩展结构扩展结构增强乘法器增强乘法器 (32x8) (32x8) 支持支持6464位结果位结果EmbeddedICEEmbeddedICE 逻辑逻辑 3 级流水线级流水线 冯冯诺依曼架诺依曼架构构 CPI(Cycle Per Instruction) 约为约为1.9图2.2.3 ARM720T内核结构 图2.2.1 ARM7TDMI内核结构 ARM7TDMI指令流水线为增加处理器指令流的速度,ARM7 系列使用3级流水线。允许多个操作同时处

25、理,而非顺序执行。 PC指向正被取指的指令,而非正在执行的指令。FetchDecodeExecute从存储器中读取指令从存储器中读取指令解码指令中用到的寄存器解码指令中用到的寄存器寄存器读(从寄存器寄存器读(从寄存器Bank)移位及移位及ALU操作操作寄存器写(到寄存器寄存器写(到寄存器Bank )PCPCPC - 4PC-2PC - 8PC - 4ARMThumbARM7TDMI指令流水线 操作操作周期周期 1 2 3 45 6 ADD SUB MOV AND ORR EOR CMP RSBFetchDecode。FetchExecuteDecodeFetchExecuteDecodeFet

26、chExecuteDecodeFetchFetchExecuteDecode ExecuteDecodeFetchExecuteDecodeFetch该例中用6个时钟周期执行了6条指令所有的操作都在寄存器中(单周期执行)指令周期数 (CPI) = 1ARM9TDMIHarvard架构增加了可用的存储器宽度增加了可用的存储器宽度指令存储器接口指令存储器接口数据存储器接口数据存储器接口可以实现对指令和数据存储器的同时访问可以实现对指令和数据存储器的同时访问5 级流水线实现了以下改进:改进改进 CPI 到到 1.5提高了最大时钟频率提高了最大时钟频率ARM9TDMIInstructionFetch

27、Shift + ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARM or ThumbInst DecodeReg SelectRegReadShiftALURegWriteThumbARMdecompressARM decodeInstructionFetchFETCHDECODEEXECUTEARM7TDMIARM9TDMIARM9TDMID CacheI CacheMMUGLUE外部外部存储器存储器ARM940T2x 4K caches MPU写缓冲写缓冲ARM9xxTARM920T

28、2x 16K caches MMU支持虚拟地址和内存保护支持虚拟地址和内存保护 写缓冲写缓冲带带Cache的的ARM9TDMI 图2.2.4 ARM920T内核结构ARM9E-S 系列概述ARM9E 基于 ARM9TDMI 内核,有以下扩展和增强单周期 32x16 乘法器EmbeddedICE 逻辑 RT改进的 ARM/Thumb 交互操作新的32x16和 16x16 乘法指令新的计数到零指令新的饱和算术指令ARM946E-SARM9E-S 内核指令和数据cache, 大小可选择指令和数据RAM,大小可选择保护单元AHB 总线接口ARM966E-S与 ARM946E-S相似, 但无 cache

29、ARM926EJ-S系列概述Jazelle状态允许直接执行Java 8位码ARM926EJ-SARM9E-S 内核内核可配置的可配置的cache和和 TCM内存管理单元内存管理单元双重双重 32位位 AHB 总线接口总线接口 (多层多层)ARM10E 系列概述v5TEv5TE架构架构CPI CPI 1.3 1.36 6 级流水线级流水线静态分支预测静态分支预测32kB 32kB 指令指令cachecache和和32kB32kB数据数据cachecache支持支持“Hit under miss”Hit under miss”非阻塞的执行单元非阻塞的执行单元每周期每周期64 64 位的位的 LDM

30、 / STMLDM / STM操作操作EmbeddedICEEmbeddedICE逻辑逻辑 - RT-II- RT-II支持新的支持新的 VFPv1 VFPv1 结构结构同同ARM1020EARM1020E,除了,除了cachecache大小为大小为16kB16kB对对SUDL(singleSUDL(single user design license ) user design license )有效有效ARM1020EARM1022EARM9 vs ARM10Intel StrongARM 概述ARM V4 架构 (无Thumb支持)5级流水线,降低跳转损耗-stage pipeline,

31、reduced branch penalty改进的乘法器(典型地比ARM9TDMI 快2个周期)不支持 Multi-ICE 调试 (JTAG限制在连通性测试)无外部协处理器接口SA-110: 16K 指令和数据 caches, 8 x 16 字节写缓冲.SA-1100/1110:片上外设,存储器控制器更小的 cache 容量PID 寄存器(作控制用)指令断点,通过 CP15Intel XScale 概述V5TE 兼容架构7-8级流水线带统计分支预测32k的数据和指令 Cache, 外加2k的数据Minicache8口写缓冲,4口填充和追加缓冲完整的32位协处理器接口调试和性能监控逻辑(通过CP

32、14 )乘-加模块(作为CP0 )可配置的内核时钟速度100-733MHz ,来自 33-66MHz 输入时钟异步输入总线时钟可到100 MHz (最大总线内核时钟的1/3 )Outline2、ARM体系结构体系结构3、ARM编程模型编程模型工作状态工作状态CPUCPU工作模式工作模式寄存器组织寄存器组织异常异常内存与内存与IOIO1、嵌入式微处理器、嵌入式微处理器ARM微处理器:编程模型处理器工作状态处理器工作状态CPU工作模式工作模式寄存器组织寄存器组织异常异常内存与内存与IOARM微处理器:处理器工作状态(PROCESSOR OPERATING STATES)处理器有两种工作状态:ARM

33、:32位,执行字对准的ARM指令Thumb:16位,执行半字对准的Thumb指令ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容ARM微处理器:处理器工作状态进入Thumb状态:执行BX指令,并设置操作数寄存器的状态(位0)为1。 在Thumb状态进入异常(IRQ, FIQ, UNDEF, ABORT,SWI etc.),当异常处理返回时自动转换到Thumb状态进入ARM状态:执行BX指令,并设置操作数寄存器的状态(位0)为0。进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可进入ARM状态ARM微处理器:处理器工作状态 Thumb-2 :增加了混合模式能力

34、 定义了一个新的定义了一个新的32-bit指令集能在传统的指令集能在传统的16-bit指令运行的指令运行的Thumb状态下同时运行。状态下同时运行。 这样能在一个系统中更好地平衡这样能在一个系统中更好地平衡ARM和和Thumb代码的能力,使系统能更好地利用代码的能力,使系统能更好地利用ARM级别的性能和级别的性能和Thumb代码的密度的优势代码的密度的优势 ARM微处理器:存储器格式ARM 的寻址空间是线性的地址空间,为的寻址空间是线性的地址空间,为232=4G Bytes 0 to 3 存储第一个存储第一个word, bytes 4 to 7存储存储第二个第二个wordARM支持大端(支持大

35、端(Big-endian)和小端()和小端(Little-endian)的内存数据方式,可以通过硬件的方式)的内存数据方式,可以通过硬件的方式设置(没有提供软件的方式)端模式设置(没有提供软件的方式)端模式ARM微处理器:存储器格式大端的数据存放格式大端的数据存放格式低地址低地址高地址高地址地址地址A地址地址A+1地址地址A+2地址地址A+3最高有效字节的地址最高有效字节的地址就是该就是该word的地址的地址最高有效字节最高有效字节位于最低地址位于最低地址word a=0 x f6 73 4b cdf6734bcdARM微处理器:存储器格式小端的数据格式小端的数据格式 低地址低地址高地址高地址

36、地址地址A地址地址A+1地址地址A+2地址地址A+3最低有效字节的地址最低有效字节的地址就是该就是该word的地址的地址最低有效字节最低有效字节位于最低地址位于最低地址word a=0 x f6 73 4b cdf6734bcdARM微处理器:存储器格式大端: 小端:0 xb32045000 xddddddd00 xb32045000 xddddddd0 f6 f6 73 73 4b 4b cd cd0000dada 实例 变量变量A:word A=0 x f6 73 4b cd,在内存中的起始,在内存中的起始地址为地址为0 x b3 20 45 00 变量变量B:half word B=21

37、8,在内存中的起始地址为,在内存中的起始地址为0 x dd dd dd d0问题:问题:half word B=218half word B=218与与word C=218word C=218在内在内存中的存放方式有何不同?请分大端和小存中的存放方式有何不同?请分大端和小端两种情况说明。端两种情况说明。ARM微处理器:编程模型数据类型的约定 字节型数据(字节型数据(ByteByte):):数据宽度为8bits 半字数据类型(半字数据类型(HalfWordHalfWord):):数据宽度为16bits,存取式必须以2字节对齐的方式 字数据类型(字数据类型(WordWord):):数据宽度为32b

38、its,存取式必须以4字节对齐的方式 ARM微处理器:CPU模式(processor mode) CPU模式的转变: 软件控制 异常 外部中断ARM微处理器:CPU模式User模式模式程序不能访问有些受保护的资源程序不能访问有些受保护的资源只能通过异常的形式来改变只能通过异常的形式来改变CPU的当前运行模式的当前运行模式特权模式特权模式可以存取可以存取系统中的系统中的任何资源任何资源System模式模式与与User模式的运行环境一样模式的运行环境一样但是它可以不受任何限制的访问任何资源但是它可以不受任何限制的访问任何资源该模式主要用于运行系统中的一些该模式主要用于运行系统中的一些特权任务特权任

39、务FIQ模式模式IRQ模式模式Supervisor模式模式Abort模式模式Undefined模式模式异常模式异常模式:主要是在:主要是在外部中外部中断断或者程序执行或者程序执行非法操作非法操作时时会触发会触发ARM微处理器:寄存器组织微处理器:寄存器组织ARM处理器有37个寄存器 31个通用寄存器:程序计数器、堆栈及其他个通用寄存器:程序计数器、堆栈及其他通用寄存器通用寄存器 6个状态寄存器个状态寄存器 这些寄存器不能同时看到,同时只有17个 不同的处理器状态和工作模式确定哪些寄存器是对编程者是可见的ARM微处理器: ARM State寄存器ARM微处理器: Thumb State寄存器 R

40、1 R2 R3 R4 R5 T humb R6 R7 ( C PSR ) ( SPSR ) R1 R2 R3 R4 R5 A R M R6 R7 R8 ( C PSR ) ( SPSR ) R9 R10 R11 R12 R0 R0 状态 状态 堆栈指针(SP) 连接寄存器(LR) 程序计数器(PC) 当前程序状态寄存器 被保存程序状态寄存器 堆栈指针(R13) 连接寄存器(R14) 程序计数器(R15) 当前程序状态寄存器 被保存程序状态寄存器 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆栈指针 (R13) 连接寄存器 (R14) 程序计数器 (R15

41、) 低寄存器高寄存器ARM State 与Thumb State寄存器关系寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq *R9(SB,v6)R9R9_fiq *R10(SL,v7)R10R10_fiq *R11(FP,v8)R11R11_fiq *R12(IP)R12R12_fiq *R13(SP)R13R13_svc* R13_abt * R13_und * R13_irq

42、*R13_fiq *R14(LR)R14R14_svc * R14_abt * R14_und * R14_irq *R14_fiq *R15(PC)R15状态寄存器R16(CPSR)CPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiqARM状态各模式下的寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R

43、9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiqARM状态各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irq

44、R14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6

45、)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户用户无CPSRR15R14R13R12R11R10R9

46、R8R7R6R5R4R3R2R1R0系统系统SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断中断SPSR_fiqCPSRR15R14_fiqR13_fi

47、qR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断快中断ARM状态各模式下可以访问的寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_

48、abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作

49、为特殊用途,并且可用于任何使用通用寄存器的指令。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR

50、14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理

51、中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc

52、SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1

53、R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般

54、的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR

55、11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_

56、fiqR13_irqR13_undR13_abtR13_svcR13寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_s

57、vcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq堆栈指针寄存器R13(SP) 寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)

58、R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq链接寄存器R14(LR) R14为链接寄存器(LR),在结构上有

59、两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R1

60、3_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq程序计数器R15(PC) 寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。ARM微处理器:通用寄存器R15用作程序计数器用作程序计数器(PC),可以被读写

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论