版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章ARM技术概述
ARM存储及协处理器接口
ARM处理器工作状态及模式ARM存放器介绍
ARM的异常中断
ARM片上总线AMBA
ARM片上调试系统
基于ARM核的芯片简介
ARM体系结构及技术特征2.1ARM体系结构及技术特征ARM开展的历程
RISC体系结构ARM体系结构开展技术特征ARM核简述Thumb2技术介绍Thumb技术介绍ARM开展总结2.1.1ARM开展的历程1983.10—1985.480年代后期19901990.1190年代至今第一片ARM处理器诞生ARM处理器已开展为可以支持Acorn公司的台式计算机产品成立ARMLimited公司AcornComputers推出了世界上首个商用的单芯片RISC处理器——ARM处理器。VLSITechnology公司制造了由AcornComputers公司设计的第一个ARM芯片。逐步开展成为世界上销量最大的32位微处理器2.1.2RISC体系结构〔1〕CISC体系结构CISC指令集设计的主要趋势是增加指令集的复杂度。而复杂指令集的高性能是以珍贵、有限的芯片面积为代价的。〔2〕RISC体系结构RISC的中心思想是精简指令集的复杂度、简化指令实现的硬件设计,硬件只执行很有限的最常用的那局部指令,大局部复杂的操作那么由简单指令合成。RISC思想大幅度提高了计算机性能价格比。指令格式和长度固定,且指令类型很少、指令功能简单、寻址方式少而简单,指令译码控制器采用硬布线逻辑,这样易于流水线的实现,进而获得高性能;CISC处理器指令集的长度一般可变,指令类型也很多;〔3〕RISC体系结构的特点RISC指令系统强调对称、均匀、简单,使程序的优化编译效率更高;大多数指令单周期完成;分开的load-store结构的存取指令,也只有load-store结构的存取指令访问存储器,而数据处理指令只访问存放器。CISC处理器一般允许将存储器中的数据作为数据处理指令的操作数;基于多个通用存放器堆操作。虽然CISC存放器组也加大了,但是没有这么大,而且大都是不同的存放器用于不同的用途〔例如,Motorola的MC68000的数据存放器和地址存放器〕。
RISC组织结构比CISC结构有着显著的优点,主要表现在体系结构及VLSI实现上:〔4〕RISC组织硬连线的指令译码逻辑; RISC指令集的简单性使得指令译码可以采取规那么的译码逻辑,CISC处理器使用大的微码ROM进行指令译码,硬布线控制逻辑可以加快指令执行速度,减少微程序码中的指令解释开销。便于流水线执行; RISC指令集的简单性也使得流水线实现更加有效,CISC处理器即使有也只允许极少的连续指令间的重叠〔尽管它们现在允许〕。单周期执行; CISC处理器执行一条指令一般需要多个时钟周期。 由于CISC技术微处理器的指令格式长短不一,每条指令依据其复杂程度所需执行的周期数相差很大,难以实现流水线操作和指令级的并行性。而由于RISC的以上优点,译码逻辑和取数的设计非常简单直观,减少了译码等的开销,可以在满足对功能、可靠性、本钱、体积、功耗有着严格要求的嵌入式系统。评价〔5〕RISC的优点Patterrson和Ditzel认为RISC处理器的设计有三个根本优点。基于RISC体系结构设计的处理器管芯面积小; 处理器的简单使得需要的晶体管和实现的硅片面积减少,省下更多面积可以集成更多的功能部件,也使在以RISCCPU为核心的单芯片SoC上实现一个应用系统的根本功能成为可能。开发时间短、开发本钱低; 处理器组织、结构的简单会使设计人员减少、设计费用降低。同时会更好地适应投放市场时的实现工艺。容易实现高性能。 RISC体系结构的简单性、有效性很容易设计出低本钱、高性能的处理器。〔6〕RISC技术历史奉献流水线; 流水线是在处理器中实现指令并行操作的最简单方式,而且可以使速度大为提高。RISC技术极大地简化了流水线的设计,使流水线技术更容易实现,以较低的本钱实现了较高的性能。高时钟频率和单周期执行。 在80年代初,CISC微处理器并没有完全发挥半导体存储器的性能,测试标准的半导体存储器〔DRAM〕在随机存取时可工作于3MHz,在顺序存取〔页面模式〕时可工作于6MHz。而当时的CISC微处理器最多仅能以2MHz访问存储器。RISC处理器的结构简单,它可以工作在较高的时钟频率,也能充分发挥已有的存储器性能。〔7〕RISC的缺点与CISC相比,通常RISC的代码密度低。CISC中的一条指令在RISC中要用一段子程序来实现,所以RISC的子程序库比CISC的要大的多;RISC不能执行x86代码;RISC给优化编译程序带来了困难。 优化编译器必须选择哪些变量放在通用存放器中,哪些变量放在主存储器中,以便充分发挥通用存放器的效率,减少访问主存储器的次数。为了调整指令的执行序列,优化编译器要做的数据和控制指令的相关性分析,并与硬件配合来实现指令延迟技术和指令取消技术。 在开发设计第一个ARM芯片时,RISC唯一的例子仍然只有Berkeley的RISCⅠ和Ⅱ及Stanford的MIPS〔MicroprocessorwithoutInterlockingPipelineStages无互锁流水线微处理器〕,而它们仅仅应用于教学和研究。而ARM处理器是第一个为商业用途而开发的RISC微处理器。ARM所采用的体系结构,对于当时的RISC体系结构既有继承,也有抛弃,即完全根据实际设计的需要仔细研究。ARM采用了假设干BerkeleyRISC处理器设计中的特征,但也放弃了其它假设干特征。2.1.3ARM体系结构开展技术特征Load/store体系结构固定的32位指令3地址指令格式这些采用的特征为
在BerkeleyRISC设计采用,而ARM设计者放弃的RISC的技术特征有:存放器窗口;在早期的RISC中,BerkeleyRISC处理器的存放器堆中使用32个存放器窗口,使得任何时候总有存放器是可见的存放器窗口的机制密切地伴随着RISC的概念,成为一般RISC的一大特征。进程进入和退出都访问新的一组存放器,因此减少了因存放器的保存和恢复导致的处理器和存储器之间的数据拥堵和时间开销。这是拥有存放器窗口的优点。但存放器窗口的存在是占用较大的芯片资源为代价,使得芯片本钱上升,因此在ARM处理器设计时未采用存放器窗口。尽管在ARM中用来处理异常的影子〔shadow〕存放器和窗口存放器在概念上根本相同,但在异常模式下对进程进行处理时,影子存放器的数量确是很少的。延迟转移;由于转移中断了指令流水线的平滑流动而造成了流水线的“断流〞问题,多数RISC处理器采用延迟转移来改善这一问题,即在后续指令执行后才进行转移。在原来的ARM中延迟转移没有采用,因为它使异常处理过程更加复杂。所有的指令单周期执行。ARM被设计为使用最少的时钟周期来访问存储器,但不是所有的指令都单周期执行。如在低本钱的ARM应用领域中普遍使用的ARM7TDMI,数据和指令占有同一总线、使用同一个存储器时,即便是最简单的load和store指令也最少需要访问两次存储器〔一次取指令,一次数据读写〕。因此当访问存储器需要超过一个周期时,就多用一个周期。因此并不是所有的ARM指令都是在单一时钟周期内执行的,一少局部指令需要多个时钟周期。高性能的ARM9TDMI使用分开的数据和指令存储器才有可能把load和store指令访问存储器和数据访问存储器单周期执行。2.1.4Thumb技术介绍
为了解决代码长度的问题,ARM体系结构又增加了T变种,开发了一种新的指令体系,这就是Thumb指令集。 Thumb有从标准32位ARM指令集抽出来的36条指令格式,可以重新编成16位的操作码,提高了代码密度。在运行时,这些16位的Thumb指令又由处理器解压成32位的ARM指令。 ARM7TDMI是第一个支持Thumb的核,编译器既可以编译Thumb代码,又可以编译ARM代码。更高性能的未来的ARM核,也都能够支持Thumb。
支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位的Thumb指令集。
Thumb不仅仅是另一个混合指令集的概念,因为支持Thumb的核有2套独立的指令集,它使设计者得到ARM32位指令的性能,又能享有Thumb指令集产生的代码方面的优势。可以在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统,但有比纯粹的16位系统有较高的实现性能,因为实际执行的是32位指令,用Thumb指令编写最小代码量的程序,却取得以ARM代码执行的最好性能。更优越的性能,而不需要付出额外的代价,这点对使用着8或16位处理器,却一直在寻找着更优越的性能的用户来说,提供了一种解决方案。与ARM指令集相比.Thumb指令集具有以下局限:完成相同的操作,Thumb指令通常需要更多的指令,因此在对系统运行时间要求苛刻的应用场合ARM指令集更为适合;Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要和ARM指令配合使用。Thumb-2内核技术是ARM体系结构的新指令集,将为多种嵌入式应用产品提供更高的性能、更有效的功耗和更简短的代码长度,从而为其合作伙伴们在注重本钱的嵌入式应用系统开发中提供了强大的开展潜能。Thumb-2内核技术以ARM
Thumb代码压缩技术为根底,延续了超高的代码压缩性能并可与现有的ARM技术方案完全兼容,同时提高了压缩代码的性能和功耗利用率。它是一种新的混合型指令集,兼有16位及32位指令,能更好地平衡代码密度和性能。2.1.5Thumb2技术介绍Thumb-2指令集在现有的Thumb指令的根底上做了扩充。增加了一些新的16位Thumb指令来改进程序的执行流程增加了一些新的32位Thumb指令以实现一些ARM指令的专有功能32位的ARM指令也得到了扩充,增加了一些新的指令来改善代码性能和数据处理的效率扩充 Thumb-2指令集增加32位指令就解决了之前Thumb指令集不能访问协处理器、特权指令和特殊功能指令〔例如SIMD〕的局限。Thumb-2指令集现在可以实现所有的功能,就不需要在ARM/Thumb状态之间反复切换了,代码密度和性能得到的显著的提高。评价Thumb-2技术的好处增加了12条新指令,可以改进代码性能和代码密度之间的平衡代码性能到达了纯ARM代码性能的98%相对ARM代码,Thumb-2代码的大小仅有其74%可以实现ARM指令的所有功能代码密度比现有的Thumb指令集更高代码速度平均提高2-3%代码大小平均降低5% 目前ARM处理器核有ARM7TDMI、ARM9TDMI、ARM10TDMI、ARM11、SecurCore、Cortex。 根据开展需求,ARM处理器核进一步集成了与处理器核密切相关的功能模块,如Cache存储器和存储器管理MMU硬件,这些基于微处理器核并集成这些IP核的标准配置的ARM核,都具有根本“CPU〞的配置,这些内核称为CPU核。 ARMCPU核作为单个IP核集成了ARM处理器核、Cache、MMU,通常还集成有AMBA接口。目前开展起来的ARMCPU核包括:ARM710T/720T/740T、ARM920T/922T/940T、ARM1020E/ARM1020T/ARM1022E/ARM10200/ARM1026EJ-S、ARM1136JF-S/ARM1156T2F-S/ARM11MPCore等。 1998年Intel基于ARM体系结构,设计了StrongARMSA-110,后续Intel还开发了基于ARMv5TE体系结构的IntelXScale系列处理器核。2.1.6ARM核简述〔1〕ARM7TDMI1、ARM7核介绍
ARM7TDMI名称的具体含义是: ARM7TDMI是ARM公司最早为业界普遍认可且得到了最为广泛应用的处理器核,特别是在和PDA中,随着ARM技术的开展,它已是目前最低端的ARM核。ARM7TDMI是从最早实现了32位地址空间编程模式的ARM6核开展而来的,可以稳定地在低于5V的电源电压下可靠工作。增加了64位乘法指令、支持片上调试、Thumb指令集和EmbededICE片上断点和观察点。ARM7:32位ARM体系结构4T版本;D:支持片上Debug〔调试〕,使处理器能够停止以响应调试请求;T:“Thumb〞16位压缩指令集;I:“EmbeddedICE〞硬件以支持片上断点和观察点;M:增强型Multiplier,与前代相比具有较高的性能且产生64位的结果;ARM7TDMI组织如以下图所示。〔2〕ARM7TDMI组织结构ARM7TDMI重要的特性为:它实现ARM体系结构版本4T,支持64位结果的乘法,半字、有符号字节存取;支持Thumb指令集,可降低系统开销;32×8DSP乘法器;32位寻址空间-4GB线性地址空间;它包含了EmbeddedICE模块以支持嵌入式系统调试;调试硬件由JTAG测试访问端口访问,因此JTAG控制逻辑被认为是处理器核的一局部;广泛的ARM和第三方支持,并与ARM9Thumb系列、ARM10Thumb系列和StrongARM处理器相兼容。取指级:完成程序存储器中指令的读取,并放入指令流水线中。译码级:对指令进行译码,为下一周期准备数据路径需要的控制信号。在这一级指令“占有〞译码逻辑,而不“占有〞数据路径。执行级:指令“占有〞数据路径,存放器堆被读取,操作数在桶式移位器中被移位,ALU产生相应的运算结果并回写到目的存放器中,ALU结果根据指令需求更改状态存放器的条件位。 在任意时刻,可能有三种不同的指令占用这三级中的一级,因此流水线正常的条件是在任意时刻,每一级中的硬件必须能够独立操作,而不能两级或多级占用同一硬件资源。〔3〕ARM7三级流水线介绍 当处理器执行简单的数据处理指令时,流水线使得每个时钟周期能完成一条指令。一条指令用3个时钟周期来完成,因此有3周期的执行时间〔latency〕,但吞吐率〔throughput〕是每个周期一条指令。图2-2ARM单周期指令的三级流水线操作 当执行多周期指令时,指令的执行流程不规那么。如图2-3所示。图中表示了一组单周期指令ADD,而在第一个ADD指令的后面出现一个数据存储指令STR。访问主存储器的周期用浅阴影表示,因此可以看到在每一个周期中都使用了存储器。同样在每一个周期也使用了数据路径,这涉及到所有的执行周期、地址计算和数据传送。译码逻辑总是产生数据路径在下一周期使用的控制信号,因此除译码周期外,在STR地址计算周期中也产生数据传送所需的控制信号。 流水线处理器的执行使得程序计数器PC〔R15〕必须在当前指令之前计数。对于如图2-11所示3级ARM,可以看到,在以当前PC取得指令〔在以下图2-4中取得指令‘1’,PC+4送到PC〕和它的后续的以PC+4取得指令〔在以下图2-4中取得指令‘2’时,当前的PC+4送到PC,当前的PC相对于第一条PC为“PC+4〞,即“PC+8〞〕PC值都要增加,因此在第一条指令执行周期的开始时即execute1得到PC+8。第二条指令执行周期的开始时即execute2〔也就是第三个指令‘3’取指时〕,得到PC+12。〔3〕ARM7三级流水线下PC的行为支持Thumb指令集;含有EmbeddedICE模块支持片上调试;通过采用5级流水线以增加最高时钟速率;分开的指令与数据存储器端口以改善CPI,提高处理器性能。2、ARM9核介绍〔1〕ARM9TDMI技术特点取指:指令从存储器中取出,放入指令流水线。译码:指令译码,从存放器堆中读取存放器操作数。在存放器堆中有三个操作数读端口,因此大多数ARM指令能在一个周期内读取其操作数。执行:把一个操作数移位,产生ALU的结果。如果指令是load或store,在ALU中计算存储器的地址。缓冲/数据:如果需要那么访问数据存储器,否那么ALU的结果只是简单的缓冲一个时钟周期,以便使所有的指令具有同样流水线流程。回写:将指令产生的结果回写到存放器堆,包括任何从存储器读取的数据。〔2〕ARM9TDMI五级的流水线操作ARM7TDMI与ARM9TDMI流水线比较3、SecurCore系列核介绍SecurCore系列微处理器除了具有ARM体系结构各种主要特点外,还在系统平安方面具有如下的特点:带有灵活的保护单元,以确保操作系统和应用数据的平安;采用软内核技术,防止外部对其进行扫描探测;可集成用户自己的平安特性和其他协处理器。SecurCore系列微处理器主要应用于一些对平安性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。SecurCore系列微处理器包含SecurCoreSC100、SecurCoreSC110、SecurCoreSC200和SecurCoreSC210四种类型,以适用于不同的应用场合。4、Cortex核ARMCortex-A系列是基于v7A的面向应用的处理器核,支持ARM、Thumb和Thumb-2指令集,此系列处理器目前包括Cortex-A8、Cortex-A9两个型号。它是针对日益增长的,运行包括Linux、WindowsCE和Symbian操作系统在内的消费者娱乐和无线产品设计的。ARMCortex-R系列是基于v7R的深度嵌入的微处理器核,支持ARM、Thumb和Thumb-2指令集,此系列处理器目前包括Cortex-R4、Cortex-R4F两个型号。它是针对需要运行实时操作系统来进行控制应用的系统,包括汽车电子、网络和影像系统设计的。ARMCortex-M系列是基于v7M的微控制核,仅支持Thumb-2指令集,此系列处理器目前包括Cortex-M0、Cortex-M1、Cortex-M3三个型号。它是为那些对开发费用非常敏感同时对性能要求不断增加的嵌入式应用〔如微控制器、汽车车身控制系统和各种大型家电〕所设计的。2.1.7ARM开展总结版本ARM核系列特点ARMv1ARM1该版体系结构只在原型机ARM1出现过,未用于商业产品,基本性能:•基本的数据处理指令(无乘法)•26位寻址
ARMv2ARM2、ARM3该版体系结构对ARMv1版进行了扩展,版本ARMv是v2版的变种,ARM3芯片采用了ARMv。ARMv2版增加了以下功能:•32位乘法和乘加指令•支持32位协处理器操作指令•快速中断模式
ARMv3ARMvARM6、ARM7DI、ARMARMv3版体系结构对ARM体系结构作了较大的改动:•寻址空间增至32位(4GB)•独立的当前程序状态寄存器CPSR和程序状态保存寄存器SPSR,保存程序异常中断时的程序状态,以便于对异常的处•增加了异常中断(Abort)和未定义两种处理器模式•增加了MMU支持•ARMv增加了有符号和无符号长乘法指令
ARMv4ARMv4TARM7TDMI、ARM710TARM720T、ARM740TARM9TDMI、ARM920TARM940TStrongARM、ARM8ARM810ARMv4版体系结构是目前应用最广的ARM体系结构,在v3版上作了进一步扩充,指令集中增加了以下功能:•增加了系统模式•增加了16位Thumb指令集•完善了软件中断SWI指令的功能ARMv5TEARMv5TEJARM9E(J)-S、ARM926EJ-SARM968E-S、ARM946E-SARM966E-S、ARM10TDMIARM1020E、ARM1020TARM1022E、ARM1026EJ-SARM10200、XscaleARMv5版体系结构在ARMv4版基础上增加了一些新的指令,包括:•增加ARM与Thumb状态之间切换的指令•增强乘法指令和快速乘累加指令•增加了数字信号处理指令(ARMv5TE版)•增加了Java加速功能(ARMv5TEJ版)
ARMv6ARM1136J(F)-S、ARM1156T2(F)-S、ARM1176JZ(F)-S、ARM11MPCoreARMv6版体系结构是2001年发布的,首先在ARM11处理器中使用。此体系结构在ARMv5版基础上增加了以下功能:•Thumb-2增强代码密度•SIMD增强媒体和数字处理功能•TrustZone提供增强的安全性能•IEM提供增强的功耗管理功能
ARMv7Cortex系列
ARMv7版体系结构定义了3种不同的微处理器系列:•A系列为面向应用微处理器核,支持复杂操作系统和用户应用•R系列为深度嵌入的微处理器核,针对实时系统应用•M系列为微控制核,针对成本敏感的嵌入式控制应用2.2ARM处理器工作状态及模式ARM状态:32位,ARM状态下执行字对准的32位ARM指令;Thumb状态:16位,Thumb状态下执行半字对准的16位Thumb指令。在Thumb状态下,程序计数器PC使用位1选择另一个半字。CPSR[4:0]模式用途可访问的寄存器0b10000用户模式(User,usr)正常用户模式,程序正常执行模式PC,R14~R0,CPSR0b10001快速中断模式(FIQ,fiq)用于高速数据传输或通道处理PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq0b10010外部中断模式(IRQ,irq)处理普通中断PC,R14_irq~R13_fiq,R12~R0,CPSR,SPSR_irq0b10011特权模式(Supervisor,SVC)操作系统保护模式,处理软件中断(SWI)PC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc0b10111中止(Abort,abt)处理存储器故障、实现虚拟存储器和存储器保护PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt0b11011未定义(Undefined,und)处理未定义的指令陷阱,支持硬件协处理器的软件仿真PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und0b11111系统(System,sys)用于运行特权级的操作系统任务PC,R14~R0,CPSR2.3ARM存放器组成ARM存放器组成概述ARM状态下的存放器组织Thumb状态下的存放器组织ARM片上总线AMBA概述ARM存储器接口及协处理器接口ARM的异常中断
基于JTAG的ARM系统调试
基于ARM核的芯片选择简介2.3.1ARM存放器组成概述31个通用存放器,在这31个通用存放器中包括了程序计数器〔PC〕。这些存放器都是32位的。它们的名称为:R0~R15;R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R8_frq-R14_frq。6个状态存放器。在ARM公司文件中它们的名称为:CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq。2.3.2ARM状态下的存放器组织R0R1R2R3R4R5R6R7R8R9R10R11R12R15(PC)通用寄存器和程序计数器状态寄存器R14(LR)R14-svcR14-abtR14-undR14-irqR14-fiqCPSR无SPSR-svc系统管理中止未定义普通中断快速中断R13(SP)R13-svcR13-abtR13-undR13-irqR13-fiqR12-fiqR11-fiqR10-fiqR9-fiqR8-fiqSPSR-abtSPSR-undSPSR-irqSPSR-fiq用户异常模式
特权模式
模式1、ARM状态下的存放器简介通用存放器〔R0~R15〕可分为3类:不分组存放器〔Theunbankedregisters〕:R0~R7;分组存放器〔Thebankedregisters〕:R8~R14;程序计数器:R15〔PC〕。2、ARM状态下的通用存放器〔1〕不分组存放器R0—R7R0~R7是不分组存放器。这意味着在所有处理器模式下,访问的是同一个物理存放器。它们是真正并且在每种状态下都统一的通用存放器。在异常中断造成处理器模式切换时,在不同的异常处理模式下,如果使用存放器名称相同,也就意味着使用相同的一个物理存放器,如果未加保护,模式变化后,有可能造成存放器中存储的数据被破坏,这是特别需要注意的。未分组存放器没有被系统用于特别的用途,任何可采用通用存放器的应用场合都可以使用未分组存放器,但必须注意对同一存放器在不同模式下使用时的数据保护。分组存放器R8~R12FIQ模式分组存放器R8~R12在FIQ模式下使用R8_fiq~R12_fiq,FIQ处理程序可以不必保存和恢复中断现场,从而使FIQ中断的处理过程更加迅速。FIQ以外的分组存放器R8~R12在FIQ模式以外的其它4种异常模式下,可以访问R8~R12的存放器和用户模式、系统模式下的R8-R12没有区别,是属于同一物理存放器,也没有任何指定的特殊用途。在FIQ模式以外的其它4种异常模式下,只使用R8~R12和这4种异常模式下的分组存放器R13、R14,足以简单地处理中断。显然在FIQ模式以外的中断处理中,如果要使用R8~R12必须考虑保护。而在FIQ模式下,由于可以使用R8_fiq~R12_fiq,比FIQ模式以外的其它4种异常模式提供较多的存放器资源,更方便异常处理。〔2〕分组存放器R8—R14分组存放器R13、R14存放器R13通常用做堆栈指针SP。每一种异常模式拥有自己的物理R13。应用程序在对每一种异常模式进行初始化时,都要初始化该模式下的R13,使其指向相应的堆栈。当退出异常处理程序时,将保存在R13所指的堆栈中的存放器值弹出,这样就使异常处理程序不会破坏被其中断程序的运行现场。存放器R14用作子程序链接存放器〔LinkRegister-LR〕,也称为LR,当程序执行子程序调用指令BL、BLX时,当前的PC将保存在R14存放器中。每一种异常模式都有自己的物理R14,R14用来存放当前子程序的返回地址。当执行完子程序后,只要把R14的值复制到程序计数器PC中,子程序即可返回。存放器R15被用作程序计数器,也称为PC。它虽然可以作为一般的通用存放器使用,但是由于R15的特殊性,即R15值的改变将引起程序执行顺序的变化,这有可能引起程序执行中出现一些不可预料的结果,因此,对于R15的使用一定要慎重。当向R15中写入一个地址值时,程序将跳转到该地址执行。由于在ARM状态下指令总是字对齐的,所以R15值的第0位和第1位总为0,PC[31:2]用于保存地址。需要注意的是ARM处理器采用多级流水线技术,因此保存在R15的程序地址并不是当前指令的地址。对于3级流水线,PC总是指向下两条指令的地址,因此PC保存的是当前指令地址值加8;对于5级流水线保存的是当前指令地址加12。到底是哪种方式,取决ARM核采用的几级流水线结构。但对于同一流水线结构的ARM处理器,所有的指令应该是统一的,即要么采用当前指令地址加8,要么采用当前指令地址加12。有一些指令对于R15的用法有一些特殊的要求。比方,指令BXRm利用Rm的bit[0]来确定是跳转到ARM状态,还是Thumb状态。〔3〕程序计数器R153、程序状态存放器CPSR和程序状态保存存放器SPSR〔1〕条件码标志:N、Z、C、VN——在结果是带符号的二进制补码情况下,如果结果为负数,那么N=1;如果结果为非负数,那么N=0。Z——如果结果为0,那么Z=1;如果结果为非0,那么Z=0。C——它的设置分以下几种情况;对于加法指令〔包括比较指令CMN〕,如果产生进位,那么C=1;否那么C=0。对于减法指令〔包括比较指令CMP〕,如果产生借位,那么C=0;否那么C=1。对于有移位操作的非加减法指令,C为移位操作中最后移出位的值。对于其他指令,C通常不变。V——它的设置也分为以下两种情况:对于加减法指令,在操作数和结果是带符号的整数时,如果发生溢出,那么V=1;如果无溢出发生,那么V=0。对于其他指令,V通常不发生变化。〔2〕控制位:I、F、T、M[4:0]中断禁止位 I=1那么禁止IRQ中断;F=1那么禁止FIQ中断。T位 T=0指示ARM执行;T=1指示Thumb执行。M模式位 M0,M1,M2,M3和M4〔M[4:0]〕是模式位, 这些位决定处理器的工作模式。注意,M[4:0] 其他组合的结果是不可预知的。NZCV..…….IFTM4M3M2M1M0M[4:0]0b100000b100010b100100b10011模式用户FIQIRQ管理0b101110b11011中止未定义0b11111系统模式位工作状态位1:Thumb0:ARMFIQ中断禁止位1:禁止0:允许IRQ中断禁止位1:禁止0:允许OverflowCarryZeroNegative条件码标志位保留位控制位2.3.3Thumb状态下的存放器组织1、Thumb状态下的存放器组织概述R0R1R2R3R4R5R6R7R15(PC)R14(LR)R14-svcR14-abtR14-undR14-irqR14-fiqCPSR无SPSR-svc系统管理中止未定义普通中断快速中断R13(SP)R13-svcR13-abtR13-undR13-irqR13-fiqSPSR-abtSPSR-undSPSR-irqSPSR-fiq用户2、Thumb和ARM状态下的存放器关系2.4ARM的异常中断异常中断事件改变了程序正常执行的顺序,是程序执行的非正常状态。在进入异常中断处理程序时,要保存被中断的程序的执行现场。在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。每种异常中断都具有各自的备份存放器组。异常类型进入异常模式优先级异常中断含义复位(Reset)特权模式(SVC)1当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常通常发生在:系统加电时系统复位时跳转到复位中断向量处执行,称为软复位未定义的指令(undefinedinstruction)未定义(und)6当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断。可通过该异常中断机制仿真浮点向量运算软件中断(SWI)特权模式(SVC)6这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令预取中止(PrefechAbort)中止(abt)5如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当该被预取的指令执行时,处理器产生指令预取中止异常中断数据访问中止(DataAbort)中止(abt)2如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常中断外部中断请求(IRQ)外部中断模式(IRQ)4当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断请求(IRQ)异常中断。系统中各外设通常通过该异常中断请求处理器服务快速中断请求(FIQ)快速中断模式(FIQ)3当处理器的外部快速中断请求引脚有效,而且CPSR寄存器的F控制位被清除时,处理器产生外部中断请求(FIQ)ARM异常向量表:2.4.1ARM的异常中断响应过程当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的指令处理序列去处理异常。将CPSR的内容保存到将要执行的异常中断对应的SPSR中,以实现对处理器当前状态、中断屏蔽位以及各条件标志位的保存。各异常中断模式都有自己相应的物理SPSR存放器。设置当前状态存放器CPSR中的相应位:设置CPSR模式控制位CPSR[4:0],使处理器进入相应的执行模式;当进入Reset或FIQ模式时,还要设置中断标志位〔CPSR[6]=1〕禁止FIQ中断,否那么CPSR[6]不变;设置中断标志位〔CPSR[7]=1〕,禁止IRQ中断。将存放器LR_<mode>设置成异常返回地址returnlink〔对于某些异常中断,保存在LR_<mode>的值可能与实际异常返回的地址有一个常数的偏移量〕,使异常处理程序执行完后能正确返回原程序。发生各异常中断时returnlink的值,如表2-4所示。假设异常是从ARM状态进入,LR存放器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);假设异常是从Thumb状态进入,那么在LR存放器中保存当前PC的偏移量。这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:在软件中断异常SWI,指令“MOVSPC,R14_svc〞总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。给程序计数器〔PC〕强制赋值,使程序从相应的向量地址开始执行中断处理程序,一般地说,向量地址处将包含一条指向相应程序的转移指令,从而可跳转到相应的异常中断处理程序处执行异常中断处理程序。2.4.1ARM的异常中断响应过程 需要注意的是,异常是从ARM状态进入的,如果发生异常时,处理器处于Thumb状态,那么当异常向量地址加载入PC时,处理器自动切换到ARM状态。 ARM处理器对异常的响应过程可以用伪代码描述如下:R14_<exception_mode>=returnlinkSPSR_<exception_mode>=CPSRCPSR[4:0]=exceptionmodenumberCPSR[5]=0/*切换到ARM状态*/if<exception-mode>=ResetorFIQthenCPSR[6]=1/*当Reset或FIQ异常中断时,禁止新的FIQ中断*//*否那么CPSR[6]不变*/CPSR[7]=1/*禁止新的IRQ中断*/PC=exceptionvectoraddress2.4.1ARM的异常中断响应过程ARM响应异常相关参数值:异常类型returnlink描述设置CPSR[4:0]强制PC至向量地址正常地址高向量地址复位(Reset)不可预知的值0b100000x000000000xffff0000未定义的指令(undefinedinstruction)指向未定义指令的下一条指令地址0b100010x000000040xffff0004软件中断(SWI)指向SWI指令的下一条指令地址0b100100x000000080xffff0008指令预取中止(PrefechAbort)指向导致指令预取中止异常的那条指令地址+40b100110x0xffff数据访问中止(DataAbort)指向导致数据访问中止异常的那条指令地址+80b101110x000000100xffff0010外部中断请求(IRQ)指向发生IRQ中断时执行的指令的下一条指令地址+40b110110x000000180xffff0018快速中断请求(FIQ)指向发生FIQ中断时执行的指令的下一条指令地址+40b111110x0xffff2.4.1ARM的异常中断响应过程2.4.2从异常中断处理程序中返回复位异常处理程序执行完后不需要返回,因为系统复位后将开始整个用户程序的执行。复位异常之外的异常一旦处理完毕,便须恢复用户任务的正常执行,这就要求异常处理程序代码能精确恢复异常发生时的用户状态。从异常中断处理程序中返回时,需要执行以下四个根本操作:所有修改正的用户存放器必须从处理程序的保护堆栈中恢复〔即出栈〕;将SPSR_mode存放器内容复制到CPSR中,使得CPSR从相应的SPSR中恢复,即恢复被中断的程序的处理器工作状态;根据异常类型将PC变回到用户指令流中相应指令处;最后去除CPSR中的中断禁止标志位I/F。异常类型异常返回地址返回机制返回地址保存在LR_<mode>返回地址拷贝入堆栈复位(Reset)——————未定义的指令(undefinedinstruction)返回到未定义指令的下一条指令地址处MOVSpc,LRSTMFDSP!,{reglist,lr}…LDMFD SP!,{reglist,pc}^软件中断(SWI)返回到SWI指令的下一条指令地址处MOVSpc,LRSTMFDSP!,{reglist,lr}…LDMFD SP!,{reglist,pc}^指令预取中止(PrefechAbort)返回到导致指令预取中止异常的那条指令地址处SUBSpc,LR,#4SUBSLR,LR,#4STMFDSP!,{reglist,lr}…LDMFD SP!,{reglist,pc}^数据访问中止(DataAbort)返回到导致数据访问中止异常的那条指令地址处SUBSpc,LR,#8SUBSLR,LR,#8STMFDSP!,{reglist,lr}…LDMFD SP!,{reglist,pc}^外部中断请求(IRQ)返回到发生IRQ中断时执行的指令的下一条指令地址处SUBSpc,LR,#4SUBSLR,LR,#4STMFDSP!,{reglist,lr}…LDMFD SP!,{reglist,pc}^快速中断请求(FIQ)返回到发生FIQ中断时执行的指令的下一条指令地址处SUBSpc,LR,#4SUBSLR,LR,#4STMFDSP!,{reglist,lr}…LDMFD SP!,{reglist,pc}^ARM异常返回:2.4.2从异常中断处理程序中返回2.4.3异常中断向量表异常中断向量表中指定了各异常中断与其处理程序的对应关系。在ARM体系结构中,异常中断向量表的大小为32字节。其中,每个异常中断占据4个字节大小,保存了4个字节空间。ARM异常向量表通常以存储器的低端0x0为起始地址。目前〔除了7TDMI,740T和7TDMI-S等〕大多数ARM处理器核〔ARM720T,ARM9系列及以后的系列〕也支持将异常向量表存放在以0XFFFF0000为起始地址的32字空间中,实际应用中可通过软硬件设计来设置异常向量表的基地址。硬件设计中当ARM核的HIVECS的复位值为LOW时异常向量表的基地址为0X0,当HIVECS的复位值为HIGH时异常向量表的基地址为0XFFFF0000;软件上可以通过ARM协处理器CP15的存放器C1的V(bit[13])来控制,当V(bit[13])=0时选择异常向量表的基地址为0X0,当V(bit[13])=1时选择异常向量表的基地址为0XFFFF0000。2.4.3异常中断向量表每个异常中断对应的中断向量表的4个字节的空间中存放一个跳转指令或者一个向PC存放器中赋值的数据访问指令LDR。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。在异常向量表中,存储器的前8个字中除了地址0x00000014之外,全部被用作异常矢量地址。这是因为在早期的26位地址空间的ARM处理器中,曾使用地址0x00000014来捕获落在地址空间之外的load和store存储器地址。这些陷阱称为“地址异常〞,因为32位的ARM不会产生落在它的32位地址空间之外的地址,所以地址异常在当前的体系结构中没有作用,0x00000014的矢量地址也就不再使用了。2.4.3异常中断的优先级复位数据异常中止FIQIRQ预取指异常中止未定义指令SWI高低2.5存储器接口及协处理器接口
ARM存储数据类型和存储格式
ARM的存储器层次简介ARM存储系统简介Cache及WRITEBUFFERARM协处理器MMU用于存储管理的系统控制协处理器存放器CP15存储保护机制快速上下文切换技术存储器映射的输入/输出2.5.1存储数据类型和存储格式1、ARM支持的数据类型8位有符号和无符号字节;16位有符号和无符号半字,它们以两字节的边界定位;32位有符号和无符号字,它们以4字节的边界定位。2.5.1存储数据类型和存储格式2、存储器组织2.5.2ARM的存储器层次简介存放器组片上RAM片上Cache主存储器硬盘微处理器存放器组可看作是存储器层次的顶层。典型的RISC微处理器大约有32个32位存放器,总共128字节,其访问时间为几ns。RAM和片上的存放器组具有同级的读写速度。与片外存储器相比,它有较好的功耗效率,并减少了电磁干扰。它简单、廉价、功耗低。但片上RAM又不能太快〔消耗太多功率〕太大〔占用太多芯片面积〕。片上Cache存储器的容量在8到32K字节之间,访问时间大概为10ns。高性能PC机系统可能有第二级片外Cache,其容量为几百KB,访问速度为几十ns。主存储器可能是几兆字节到1GB的动态存储器,访问时间大概为50ns。硬盘作为后援存储器,容量可能从几百兆字节到几十个GB,访问时间为几十ms。2.5.3ARM存储系统简介与中低档单片机不同的是,ARM处理器中一般都包含一个存储器管理部件,用于对存储器的管理。同时为了适应不同的嵌入式应用需求,ARM存储系统的体系结构在构成上存在很多差异。简单的可以使用像单片机系统中使用的平板式地址映射机制,而一些复杂的系统中那么可能包含多种现代计算机存储技术来构成功能更为强大的存储系统。因为ARM存储系统内部的结构非常复杂,本节只对ARM存储系统根本内容和多种类型存储器件进行简单讲述。基于ARM核的嵌入式应用系统中可能包含多种类型存储器件,如Flash、ROM、SRAM和SDRAM等,而且不同类型的存储器件具有不同的速度、数据宽度等。1、Cache及WRITEBUFFER2.5.3ARM存储系统简介指令和数据统一的Cache:指令Cache和数据Cache分开:2、MMU完成的工作2.5.3ARM存储系统简介虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟存储管理。它把虚拟地址空间分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页。页的大小可以分为粗粒度和细粒度两种。MMU就要实现从虚拟地址到物理地址的转换。存储器访问权限的控制。设置虚拟存储空间的缓冲特性。3、用于存储管理的系统控制协处理存放器CP152.5.3ARM存储系统简介在基于ARM的嵌入式系统中,存储系统通常使用CP15来完成存储器的大局部管理工作。除了CP15之外,在具体的存储管理机制中可能还会用到其他技术,如页表技术等。CP15可以包含16个32位的存放器,编号0-15。实际上对于某些编号的存放器可能对应有多个物理存放器,在指令中指定特定的标志位来区分相应的存放器。4、存储保护机制引入一些机制保证将I/O操作映射成内存操作后,各种I/O操作能够得到正确的结果,以增强系统的平安性,这在简单的存储系统中,不存在问题,而当系统引入了Cache及WRITEBUFFER后,就需要一些特别的措施。2.5.3ARM存储系统简介5、快速上下文切换技术快速上下文切换技术〔FastContextSwitchExtension,FCSE〕通过修改系统中不同进程的虚拟地址,防止在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。如果两个进程占用的虚拟地址空间有重叠,系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射,包括重建TLB、去除Cache,整个工作需要带来巨大的系统开销。而快速上下文切换技术的引入防止了这种开销。FCSE位于CPU和MMU之间,它的责任就是将不同进程使用的相同的虚拟地址映射为不同的虚拟空间,使得在上下文切换时无需重建TLB等。如果两个进程使用了同样的虚拟地址空间,那么对CPU而言,FCSE机构对各个进程的虚拟地址进行变换,这样系统中除了CPU之外的局部看到的是经过上下文切换机构变换后的虚拟地址。2.5.3ARM存储系统简介6、存储器映射的输入/输出在ARM系统中,I/O操作通常被映射成存储器操作,即输入/输出是通过存储器映射的可寻址外围存放器和中断输入的组合来实现的。在ARM中,I/O的输出操作可以通过存储器写入操作实现;I/O的输入操作可以通过存储器读取操作实现。这样I/O空间就被映射成了存储空间。但这些存储器映射的I/O空间不满足Cache所要求的特性。例如,从一个普通的存储单元连续读取两次,将会返回同样的结果。对于存储器映射的I/O空间,连续读取两次,返回的结果可能不同。这可能是由于第1次读操作有副作用或者其他的操作可能影响了该存储器映射的I/O单元的内容。因而对于存储器映射的I/O空间的操作就不能使用Cache技术。某些ARM系统也可能有存储器直接访问〔DMA〕硬件。2.5.4ARM协处理器
ARM通过增加硬件协处理器来支持对其指令集的通用扩展,通过未定义指令陷阱支持这些协处理器的软件仿真。简单的ARM核提供板级协处理器接口,因此协处理器可以作为一个独立的元件接入。高速时钟使得板级接口非常困难,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行入职职业规划
- 哈工程大学生创业规划书
- 人教版初二函数教育课件
- 高中生医生职业规划
- 2025年部门预算支出经济分类科目说明表
- 蓝狐社区运营职业规划
- 浙江省强基联盟2024-2025学年高二上学期11月期中联考数学试题 含解析
- 2024预制混凝土桩行业趋势分析报告
- b 机场移动式玻璃钢FOD塔架的优势是什么
- 科学营养促进健康课件
- GB 45067-2024特种设备重大事故隐患判定准则
- 《陆上风电场工程概算定额》NBT 31010-2019
- 2024年北京证券交易所全国股转公司招聘笔试参考题库附带答案详解
- 人教版数学三年级上册 第8单元 分数的初步认识 易错题强化卷含答案
- 部编(统编)版高中历史必修《中外历史纲要(上)》全册教案教学设计-新教材-含教学计划 教学进度 培优补差计划-
- 2021年西南医院医护人员招聘笔试试题及答案解析
- 龙滩碾压混凝土大坝设计概述
- FZ∕T 63006-2019 松紧带
- InCloud Sphere 5.8.2部署手册详细
- 诊所备案申请表格(卫健委备案)
- 风力发电系统
评论
0/150
提交评论