ARM体系结构ppt课件.ppt_第1页
ARM体系结构ppt课件.ppt_第2页
ARM体系结构ppt课件.ppt_第3页
ARM体系结构ppt课件.ppt_第4页
ARM体系结构ppt课件.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

第二章嵌入式微处理器,主要内容,1ARMCPUISA的发展历史2典型ARMCPUCore体系结构3ARM编程模型本章部分内容可以参考:,ARM公司,成立于1990年11月前身为Acorn计算机公司主要设计ARM系列RISC处理器内核授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片另外也提供基于ARM架构的开发设计技术软件工具,评估板,调试工具,应用软件,总线架构,外围设备单元,等等,ARMCPUCore概述,ARM内核是一种32/64位RISC微处理器,具有功耗低、性价比高、代码密度高等三大特色。ARM处理器具有RISC体系结构的典型特征:体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成寻址方式灵活简单,执行效率高指令长度固定所有指令都可以条件执行,以增大执行吞吐量。,2.1ARMCPUISA的发展历史,ARMCPU的指令集体系ISA(即ARMInstructionSetArchitecture)从最初的V1版本发展到现在,先后出现了V1,V2,V3,V4,V4T,V5TE,V5TEJ,V6,V7,V8等主要的版本。ARMV1V3版本的处理器未得到大量应用,ARM处理器的大量广泛应用是从其V4版本开始的V7系列CPU被称作CorTex系列到目前V8是最新的版本,可以选择64或32执行状态。64执行状态针对64位处理技术,引入了一个全新指令集A64,可以存取大虚拟地址空间。,DevelopmentoftheARMArchitecture,-ARMV4,ARMV4是目前支持的最老的架构,是基于32-bit地址空间的32-bit指令集。ARMv4除了支持ARMv3的指令外还扩展了:支持halfword的存取支持byte和halfword的符号扩展读支持Thumb指令提供Thumb和Normal状态的转换指令进一步的明确了会引起Undefined异常的指令对以前的26bits体系结构的CPU不再兼容,-ARMv4T,ARMv4T增加了16-bitThumb指令集,这样使得编译器能产生紧凑代码(相对于32-bit代码,内存能节省到35%以上)并保持32-bit系统的好处。Thumb在处理器中仍然要扩展为标准的32位ARM指令来运行。用户采用16位Thumb指令集最大的好处就是可以获得更高的代码密度和降低功耗。,-ARMV5TE,1999年推出ARMv5TE其增强了Thumb体系,增强的Thumb体系增加了一个新的指令同时改进了Thumb/ARM相互作用、编译能力和混合及匹配ARM与Thumb例程,以更好地平衡代码空间和性能并在ARMISA上扩展了增强的DSP指令集:增强的DSP指令包括支持饱和算术(saturatedarithmetic),并且针对AudioDSP应用提高了70%性能。E扩展表示在通用的CPU上提供DSP能力。,-ARMv5TEJ,2000年推出ARMv5TEJ,增加了Jazelle扩展以支持Java加速技术(处理器指令层对JAVA加速)。Jazelle技术比仅仅基于软件的JVM性能提高近8倍的性能减少了80的功耗。,-ARMv6,2001年推出ARMv6,它在许多方面做了改进如内存系统、异常处理和较好地支持多处理器。SIMD扩展使得广大的软件应用如Video和Audiocodec的性能提高了4倍。Thumb-2和TrustZone技术也用于ARMv6中。ARMv6第一个实现是2002年春推出的ARM1136J(F)-STM处理器,2003年又推出了ARM1156T2(F)-S和ARM1176JZ(F)-S处理器。,-ARMv7,ARMv7定义了3种不同的处理器配置(processorprofiles):ProfileA是面向复杂、基于虚拟内存的OS和应用的ProfileR是针对实时系统的ProfileM是针对低成本应用的优化的微控制器的。所有ARMv7profiles实现Thumb-2技术,比纯32位代码少使用31%的内存,高出38%的性能。同时还包括了NEON技术的扩展提高DSP和多媒体处理吞吐量400,并提供浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制应用的需要。关于ARM架构发展可以参考:,-ARMv8,2011年11月,ARM公司发布了新一代处理器架构ARMV8,ARM的首个64位架构。在继承了V7架构的基础上,可以选择64或32执行状态。64执行状态针对64位处理技术,引入了一个全新指令集A64,可以存取大虚拟地址空间;运用ARMv8指令集的产品:ARM12年十月发布了Cortex-A53andCortex-A57核心。13年苹果基于V8架构的Apple7使用在了iPhone5S上。,ARM/Thumb的命名规范(Classic命名),由于ARM的每个版本都有一系列的可变版本,其命名规范(Classic命名)如下:以ARMv开头ARM指令集的版本号(15)可变功能标识(T表示支持Thumb指令,M-表示支持乘法指令,E增强型DSP指令,JJava加速器Jazelle,SIMDARM媒体功能扩展),但是ARMv4和其上的版本缺省都支持M功能,因此ARMv4和其上的版本的标识中可以不用标识M.如果3中描述的功能不存在,则在该功能标识符前加x,ARM处理器命名(Classic命名),采用上述的架构,形成一系列的处理器。有时候还要区分处理器核和处理器系列。不过,在这里其实不用区分太细,毕竟这是功能的小部分的变化,核心是相同的。规则:ARMxyzTDMIEJF-Sx-处理器系列y-存储管理/保护单元z-cacheT-支持Thumb指令集D-支持片上调试M-支持快速乘法器I-支持EmbeddedICE,支持嵌入式跟踪调试E-支持增强型DSP指令J-支持JazelleF-具备向量浮点单元VFP-S-可综合版本如ARM7TDMI,ARM处理器的分类(现在常用命名),结构体系版本(Architecture)ARMv4TARMv5TEARMv6ARMCortex(v7),ProcessorFamilyARM7ARM9ARM10ARM11ARMCortex,按应用特征分类(定义3种不同的处理器配置)应用处理器ApplicationProcessor实时控制处理器Real-timeController微控制器Micro-controller,特征:MMU,Cache最快频率、最高性能、合理功耗,特征:MPU,Cache实时响应、合理性能、较低功耗,特征:nosub-memorysystem一般性能、最低成本、极低功耗,EmbeddedProcessors,EmbeddedProcessors,Whicharchitectureisyourprocessor?,作业二,1、查找资料确定自己的手机的CPU型号,是哪个厂家生产的,CPU是ARM的哪种体系结构版本?CPU有何特别的技术,简要介绍各种技术。以及此CPU其它性能指标。10月28号晚20点之前交给学习委员,学习委员统一打包发给我。超过截止时间则没有本次作业成绩。作业文件命名规则:学号-姓名-作业X作业评分标准大概是从格式排版,到内容完整度、深度等方面考核,还有要看是否是经过多个资料整理分析的,还是直接复制一段网上文字的,根据这些评分。,作业二,作业二评分标准:1、型号、厂家、体系结构版本各10分,共30分2、特别的技术30分3、性能指标25分4、格式及排版10分5、作业命名规范5分其中2点,你的CPU中包含的特别的技术要有对应的解释,如Thumb、NEON、Jazelle、ARMTrustZone等。,-ARMFamily,ARM7Family,ARM9Family,ARM10Family,ARM11Family,150DMIPS,300DMIPS,500DMIPS,1000DMIPS,ARMCortexFamily,ARMArchitecture,已广泛应用的ARM处理器,ARM7世界上最为广泛使用的CPU之一100MHzARM9100-300MHz,ARM11芯片,ARM11300-700+MHzSIMD指令扩展支持更丰富的多媒体应用40多家授权芯片公司,FOMAN902iFirstARM11basedphone,OMAP2420,i.MX31/i.MX31L,高性能的ARM嵌入式处理器,处理器提供超过2DMIPS/MHZ的性能运行于1GHz频率(90nmor65nm制造工艺)功耗小于300mW,ARMCortexA8ApplicationProcessor,Cortex系列处理器(命名及)对比,ARMCortexA8ApplicationProcessor,Cortex-M3实现$1ARM芯片,ARMCortexArchitectureThumb-2ISA3StagePipeline1.22DMIPS/MHz30%overARM7TDMI33Kgates30%smallerthanARM7TDMI,LuminaryMicro的Stellaris系列MCU产品售价仅1美元,ARMCortex-M3微控制器内核,专门针对MCU应用领域而设计,突出低成本、低功耗和高效率。,生产ARM处理器的主要厂家,TI(德州仪器)Omap3430Cortex-A8核600MHz(诺基亚N96)Omap3530Cortex-A8核600MHzARM+DSP双核Samsung(三星)S5PC100Cortex-A8核600MHz(iPhone3GS和M9都应用此芯片)S5PC110/S5PV210Cortex-A8核1GHZFreescale(飞思卡尔)i.MX512/i.MX513/i.MX515Cortex-A8核600MHz1GHz(在多款上网本中得到应用),生产ARM处理器的主要厂家,Marvell(马维尔)PXA930800MHzCortex-A8核ARMADA500/600/1000系列SheevaPJ4核心1GHz1.2GHz(支持ARMv7指令集,架构异同)Qualcomm(高通)QSD8650A/QSD8672(Snapdragon系列)1.3G1.5Gscorpion核心(支持ARMv7指令,架构异同)骁龙400系列(Cortex-A7)MSM8928-红米NOTE4GNvidia(英伟达)TegraARM11核700MHzTegra2(下一代产品)CortexA8(或A9)核MTK(联发科MediaTek)MTKMT6592八核,Cortex-A71.4-2GHZ红米NOTE,主要内容,1ARMCPUISA的发展历史2典型ARMCPUCore体系结构3ARM编程模型,2.2典型ARMCPU体系结构结构特征,ARM内核采用RISC体系结构。ARM体系结构的主要特征如下:(1)大量的寄存器,并可以用于多种用途。(2)采用Load/Store体系结构。(3)每条指令都条件执行。(4)采用多寄存器的Load/Store指令。(5)单周期指令内同时完成移位操作和ALU。(6)通过协处理器指令集来扩展ARM指令集。(7)体系支持Thumb指令集,2.2典型的ARMCPUCoreARM7TDMI结构,ARM7TDMI,Thumb架构扩展,提供两个独立的指令集:ARM指令,均为32位Thumb指令,均为16位两种运行状态,用来选择哪个指令集被执行,内核具有Debug扩展结构,增强乘法器(32x8)支持64位结果,EmbeddedICE逻辑,3级流水线冯诺依曼架构CPI(CyclePerInstruction)约为1.9,乘法器,指令解码,地址自增器,nRESET,nMREQ,SEQ,ABORT,nIRQ,nFIQ,nRW,MAS1:0,LOCK,nCPI,CPA,CPB,nWAIT,MCLK,nOPC,BIGEND,ISYNC,nTRANS,nM4:0,D31:0,桶移位器,32位ALU,DBE,写数据寄存器,读数据寄存器,地址寄存器,寄存器Bank,A31:0,ABE,及,控制逻辑,PCUpdate,解码站,指令解压缩,Incrementer,PC,ABus,BBus,ALUBus,ARM7TDMICore的结构,ARM7TDMI引脚逻辑图,ARM7TDMI指令流水线,为增加处理器指令流的速度,ARM7系列使用3级流水线。允许多个操作同时处理,而非顺序执行。PC指向正被取指的指令,而非正在执行的指令。,从存储器中读取指令,解码指令中用到的寄存器,寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank),PCPC,PC-4PC-2,PC-8PC-4,ARMThumb,ARM9TDMI指令流水线,InstructionFetch,Shift+ALU,MemoryAccess,RegWrite,RegRead,RegDecode,FETCH,DECODE,EXECUTE,MEMORY,WRITE,ARM9TDMI,ARMorThumbInstDecode,RegSelect,RegRead,Shift,ALU,RegWrite,ThumbARMdecompress,ARMdecode,InstructionFetch,FETCH,DECODE,EXECUTE,ARM7TDMI,理想的3级流水线(ARM7TDMI:无访存操作),ARM的参有LDR指令流水线,Cortex-A8的指令流水线(13级),本节重点,1、ARM架构发展史,2,3,ARM处理器特点,ARMISA的版本情况,ISA命名规则,ARM处理器命名规则:ARM7TDMI,1,4,ARM处理器分类:M、R、A,本节重点,2、ARM典型CPU,2,ARM7的结构,ARM7的三级流水线,1,主要内容,1ARMCPUISA的发展历史2典型ARMCPUCore体系结构3ARM编程模型,2.3.1数据宽度(类型),数据类型字节型数据(Byte):数据宽度为8bits半字数据类型(HalfWord):数据宽度为16bits,存取式必须以2字节对齐的方式字数据类型(Word):数据宽度为32bits,存取式必须以4字节对齐的方式,2.3.2工作状态和工作模式工作状态,处理器有两种工作状态:ARM:32位,执行字对准的ARM指令Thumb:16位,执行半字对准的Thumb指令ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容,2.3.2工作状态和工作模式工作状态,进入Thumb状态:执行BX指令,并设置操作数寄存器的状态(位0)为1。在Thumb状态进入异常(IRQ,FIQ,UNDEF,ABORT,SWIetc.),当异常处理返回时自动转换到Thumb状态进入ARM状态:执行BX指令,并设置操作数寄存器的状态(位0)为0。进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可进入ARM状态,;从Arm状态切换到Thumb状态LDRR0,=Lable+1BXR0;从Thumb状态切换到ARM状态LDRR0,=LableBXR0,地址最低位为1,表示切换到Thumb状态,地址最低位为0,表示切换到ARM状态,跳转地址标号,作业三,查找资料,撰写分析说明,回答以下问题:ARM跳转指令有几种?分析为什么由跳转到Thumb状态要用BX指令?为什么地址最后要“+1”?ARM指令是不是对齐的?是什么对齐的?指令为什么需要对齐?有什么好处?说明:可以参考资料,但不能全部直接复制粘贴,问题回答缺一个扣一个的分,回答不准确的也扣分。格式乱七八糟的也会扣分。作业文件命名规则:学号-姓名-作业三,2.3.2工作状态和工作模式工作模式,Cortex-A8内核的处理器模式,2.3.2工作状态和工作模式工作模式,User模式,程序不能访问有些受保护的资源,只能通过异常的形式来改变CPU的当前运行模式,特权模式可以存取系统中的任何资源,System模式,与User模式的运行环境一样但是它可以不受任何限制的访问任何资源该模式主要用于运行系统中的一些特权任务,FIQ模式,IRQ模式,Supervisor模式,Abort模式,Undefined模式,异常模式:主要是在外部中断或者程序执行非法操作时会触发,Monitor模式,2.3.3寄存器ARM寄存器概述,ARMCortex-A8处理器有40个32位寄存器寄存器32个通用寄存器1个程序计数器7个状态寄存器这些寄存器不能同时看到不同的处理器状态和工作模式确定哪些寄存器是对编程者是可见的。,ARM微处理器:ARMCortex-A寄存器,ARM有40个32-Bits长的寄存器:32个通用寄存器(完全通用,用于存放数据或地址)1个PC(programcounter)1个CPSR(currentprogramstatusregister)6个SPSR(savedprogramstatusregisters)当前处理器的模式决定着哪组寄存器可操作.任何模式都可以存取:相应的r0-r12(除FIQ模式外共用-FIQ只共用r0-r7)相应的r13(thestackpointer,sp)和r14(thelinkregister,lr)r15(theprogramcounter,pc),所有模式共用。CPSR(currentprogramstatusregister,cpsr),所有模式共用特权模式(除system模式)还可以存取:相应的spsr(savedprogramstatusregister),ARM微处理器:ThumbState寄存器,Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);有条件访问程序状态寄存器(CPSR)。,ARM微处理器:ThumbState寄存器,ARMState与ThumbState寄存器关系,低寄存器,高寄存器,注意:在发生异常时,处理器自动进入ARM状态。,处理器模式与寄存器的关系,异常发生时伴随的模式切换意味着,被调用的异常处理程序会访问:它自己的堆栈指针(SP_)它自己的链接寄存器(LR_)它自己的备份程序状态寄存器(SPSR_)如果是FIQ异常处理,5个其它的通用状态寄存器(r8_FIQtor12_FIQ)其它寄存器和原来模式下的寄存器是相同的,2.3.3寄存器通用寄存器,通用寄存器是R0-R15的寄存器,分为三类没有对应影子寄存器的寄存器R0-R7有对应影子寄存器的寄存器R8-R14程序计数器R15(或者PC)影子寄存器是指该寄存器在不同的模式下对应的物理寄存器,2.3.3寄存器通用寄存器,R0-R7所有模式下,R0-R7所对应的物理寄存器都是相同的这八个寄存器是真正意义上的通用寄存器,ARM体系结构中对它们没有作任何特殊的假设,它们的功能都是等同的。在中断或者异常处理程序中一般都需要对这几个寄存器进行保存。,2.3.3寄存器通用寄存器,R8-R14访问的物理寄存器取决于当前的处理器模式,若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。R8-R12各有两组物理寄存器:一组为FIQ模式,另一组是除FIQ以外的其他模式。R13-R14各有6个分组的物理寄存器,一个用于用户模式和系统模式,其他5个分别用于5种异常模式。R13(也被称为SP指针)被用作栈指针,通常在系统初始化时需要对所有模式下的SP指针赋值,当CPU在不同的模式时栈指针会被自动切换成相应模式下的值。R14有两个用途,一是在调用子程序时用于保存调用返回地址,二是在发生异常时用于保存异常返回地址。,不同模式下堆栈指针的初始化,在系统初始化(即系统复位)时需要初始化各模式分组的堆栈指针寄存器R13(R13_svc、R13_irq、R13_fiq、R13_abt和R13_und),这样才能在进入不同的模式时自动切换使用不同的堆栈空间。初始化时需注意堆栈指针必须保持8字节对齐。,;中断模式堆栈的设置(涉及到CPSR格式和MSR指令)MSRCPSR_c,#0 x000000D2;切换到中断模式LDRR1,=IrqStackMOVSP,R1;设置中断模式堆栈指针;快速中断模式堆栈的设置MSRCPSR_c,#0 x000000D1;切换到快速中断模式LDRR1,=FiqStackMOVSP,R1;设置快速中断模式堆栈指针;中止模式堆栈的设置.,链接寄存器R14(LR)-1,R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。,链接寄存器R14-2,R14寄存器与子程序调用,MOVPC,LR,R14(地址A),1.程序A执行过程中调用程序B;,操作流程,2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLable”指令的下一条指令所在地址存入R14;,3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;,链接寄存器R14-3,R14寄存器与异常发生,异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。,R14寄存器注意要点,当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。,链接寄存器R14-4,R14寄存器注意要点,a,return,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,链接寄存器R14-4,R14寄存器注意要点,a,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,a,return,地址B,4.如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断,或者调用子程序;,5.硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;,被破坏,6.在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;,return,return,解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。,2.3.3寄存器通用寄存器,R15用作程序计数器(PC),可以被读写读到的PC的值是PC当前值加8(2个指令的长度,三级流水线情况下),写PC则转移到写入地址执行程序。ARMstate:4字节对齐,最低两位bits1:0永远为0(V4以上版本,V3以下是把写入值与0XFFFFFFFC与操作)THUMBstate:2字节对齐,最低位bit0为0注:ARM存储器按字节组织,2.3.3寄存器程序状态寄存器,ARM7TDMI内核包含1个CPSR(当前程序状态寄存器)和5个供异常处理程序使用的SPSR。CPSR在所有的模式下都是可以读写的,反映了当前处理器的状态,其包含::4个条件标志(负(N)、零(Z)、进位(C)和溢出(V))2个中断使能标志5个当前处理器的模式编码位其它的一些状态和控制标志(ARM/Thumb),条件位:N=Negativ

温馨提示

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

评论

0/150

提交评论