第二章ARM微处理器及其硬件体系结构1.1硬件基础1、冯·诺依曼体系结构模型指令寄存器控制器数据通道输入输出中央处理器存储器程序指令0指令1指令2指令3指令4数据数据0数据1数据22、冯·诺依曼体系的特点1)数据与指令都存储在存储器中2)被大多数计算机所采用3)ARM7——冯诺依曼体系3、哈佛体系结构指令寄存器控制器数据通道输入输出中央处理器程序存储器指令0指令1指令2数据存储器数据0数据1数据2地址指令地址数据4、哈佛体系结构的特点1)程序存储器与数据存储器分开2)提供了较大的数存储器带宽3)适合于数字信号处理4)大多数DSP都是哈佛结构5)ARM9是哈佛结构5、CISC:复杂指令集(ComplexInstructionSetComputer)具有大量的指令和寻址方式8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。6、RISC:精简指令集(ReducedInstructionSetComputer)在通道中只包含最有用的指令确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单为增加处理器指令流的速度,ARM7系列使用3级流水线.允许多个操作同时处理,而非顺序执行。DecodeFetchExecute从存储器中读取指令解码指令中用到的寄存器寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank)PCPCPC-4PC-2PC-8PC-4ARMThumbPC指向正被取指的指令,而非正在执行的指令7、流水线技术:几个指令可以并行执行提高了CPU的运行效率内部信息流要求通畅流动该例中用6个时钟周期执行了6条指令所有的操作都在寄存器中(单周期执行)指令周期数(CPI)=1CycleOperationADDSUBORRANDEORORR123456789FDEFDEFEFDEFDEDFDEWF–取指D–解码E–执行M8、最佳流水线9、超标量执行超标量CPU采用多条流水线结构执行1预取指令CACHE译码2译码1执行2执行1预取译码2译码1执行2流水线1流水线2数据10、高速缓存(CACHE)1、为什么采用高速缓存微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性能。2、高速缓存的工作原理高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。CPU高速缓存控制器CACHE主存数据数据地址11、总线和总线桥CPU低速设备桥数据高速总线存储器高速设备高速设备低速总线12、存储器系统RAM:随机存取存储器SRAM:静态随机存储器DRAM:动态随机存储器1)SRAM比DRAM快2)SRAM比DRAM耗电多3)DRAM存储密度比SRAM高得多4)DRAM需要周期性刷新ROM:只读存储器FLASH:闪存CSR/WAddrDataSRAMCSR/WCASDataRASAddrDRAM1.2ARM7处理器内核ARM7TDMI特性3级流水线冯.诺依曼架构CPI(CyclePerInstruction)约为1.9T-Thumb架构扩展,提供两个独立指令集:ARM指令,均为32位Thumb指令,均为16位两种运行状态,用来选择哪个指令集被执行D-内核具有Debug扩展结构M–增强乘法器(32x8)支持64位结果.I-EmbeddedICE逻辑1、ARM7TDMI处理器2、ARM7TDMI外部接口ARM7TDMI内核存储器接口地址总线数据总线控制协处理器接口时钟中断复位3、ARM7TDMI方框图DOUT[31:0]ARM7TDM内核TAP控制器JTAG接口数据总线控制信号D[31:0]地址总线A[31:0]DIN[31:0]BUSSplitterEmbeddedICE逻辑4、ARM7TDMI内核寄存器Bank乘法器地址自增器ALUBAVectors地址寄存器桶移位器PCALU读数据寄存器写数据寄存器指令解码D[31:0]5、外部地址产生PC[31:2]ARMStatePC[31:1]ThumbStateALU[31:0]INC自增器A[31:0]向量0x1C0x00地址寄存器ARM7TDMI-S是ARM7TDMI的完全可合成版本指令集和周期与ARM7TDMI固化版本兼容完全可合成的RTL使用了纲要设计构件的组件ALU寄存器bank单周期设计(上升沿)单一总线接口6、ARM7TDMI-SARM7EJ-S是可综合的内核版本:ARM体系结构V5TEJJazelleJava加速技术增强的DSP指令系统5级流水线高性能乘法器实时调试EmbeddedICE-RTETM接口向后兼容其它ARM7内核兼容V5TE体系7、ARM7EJ-SV3版本推出32位寻址能力,结构扩展变化为T—16位压缩指令集M—增强型乘法器,产生全64位结果(32X3264or32X32+6464)V4版本增加了半字load和store指令V5版本改进了ARM和Thumb之间的交互,结构扩展变化为:E---增强型DSP指令集,包括全部算法操作和16位乘法操作J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能ARM体系结构版本-21.3ARM架构1、数据和指令类型ARM采用的是32位架构.ARM约定:Byte:8bitsHalfword:16bits(2byte)Word:32bits(4byte)大部分ARMcore提供:ARM指令集(32-bit)Thumb指令集(16-bit)Jazellecores支持Javabytecode2、处理器工作模式(ARM有7个)User(用户模式):非特权模式,大部分任务执行在这种模式FIQ(快速中断模式):高优先级(fast)中断产生时将会进入这种模式IRQ(中断模式):低优先级(normal)中断产生时将会进入这种模式Supervisor(管理员模式):当复位或软中断指令执行时将会进入这种模式Abort(中止模式):当存取(数据和指令)异常时将会进入这种模式Undef(未定义模式):当执行未定义指令时会进入这种模式System(系统模式):使用和User模式相同寄存器集的特权模式特权模式=异常模式+System异常模式3、ARM寄存器(37)AbortModer0r1r2r3r4r5r6r7r8r9r10r11r12r15(pc)cpsrr13(sp)r14(lr)spsr当前可见寄存器r13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr8r9r10r11r12r13(sp)r14(lr)spsr备用寄存器UserFIQIRQSVCUndefr13(sp)r14(lr)30个通用32位寄存器,1个程序计数器PC6个状态寄存器15个通用寄存器(R0-R14),1或者2个状态寄存器和程序计数器在任何时候都中可见的2ThumbstateLowregistersThumbstateHighregistersNote:System模式使用user模式寄存器集FIQUsermoder0-r7,r15,andcpsrr8r9r10r11r12r13(sp)r14(lr)spsrUserr8r9r10r11r12r13(sp)r14(lr)r15(pc)cpsrr0r1r2r3r4r5r6r7IRQr13(sp)r14(lr)spsrUsermoder0-r12r15,andcpsrSVCr13(sp)r14(lr)spsrUsermoder0-r12r15,andcpsrUndefr13(sp)r14(lr)spsrUsermoder0-r12r15,andcpsrAbortr13(sp)r14(lr)spsrUsermoder0-r12r15,andcpsr寄存器组织ARM寄存器名称ARM有37个32-Bits长的寄存器.1个用作PC(programcounter)(r15)1个用作CPSR(currentprogramstatusregister)5个用作SPSR(savedprogramstatusregisters)30个通用寄存器当前处理器的模式决定着哪组寄存器可操作.任何模式都可以存取:相应的r0-r12子集相应的r13(thestackpointer,sp)andr14(thelinkregister,lr)相应的r15(theprogramcounter,pc)相应的CPSR(currentprogramstatusregister,cpsr)特权模式(除system模式的异常模式)还可以存取;相应的spsr(savedprogramstatusregister)4、程序状态寄存器条件位:N=NegativeresultfromALUZ=ZeroresultfromALUC=ALUoperationCarriedoutV=ALUoperationoVerflowedQ位:仅ARM5TE/J架构支持指示饱和状态J位仅ARM5TE/J架构支持J=1:处理器处于Jazelle状态中断禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit仅ARMxT架构支持T=0:处理器处于ARM状态T=1:处理器处于Thumb状态Mode位:处理器模式位2731NZCVQ2867IFTmode162381554024fsxcUndefinedJ说明5、程序指针PC(r15)当处理器执行在ARM状态:所有指令32bits宽所有指令必须word对齐所以pc值由bits[31:2]决定,bits[1:0]未定义(所以指令不能halfword/byte对齐).当处理器执行在Thumb状态:所有指令16bits宽所有指令必须halfword对齐所以pc值由bits[31:1]决定,bits[0]未定义(所以指令不能byte对齐).当处理器执行在Jazelle状态:所有指令8bits宽处理器执行word存取一次取4条指令6、存储器模式大端模式(高对低)最高位字节保存在最低位地址字由最低位字节的字节地址寻址3124231615870字地址89101184567401230低地址高地址小端模式(低对低)最低位字节保存在最低位地址字由最低位字节的字节地址寻址3124231615870字地址11109887654432100低地址高地址1.4异常1、什么是异常?内部或外部中断源产生并引起处理器处理一个事件,如外部中断或试图执行未定义指令都会引起异常。处理异常之前必须保留处理器的状态2、异常类型FIQIRQ(InterruptReQuest)未定义指令预取中止数据中止复位软件中断Softwareinterrupt通过软件中断产生进行管理员模式中获得通常要求特殊的管理功能,如操作系统支持3、异常优先级(1)Reset(highestpriority)(2)Dataabort(3)FIQ(4)IRQ(5)Prefetchabort(6)未定义指令,Softwareinterrupt(最低优先级)只要产生异常就会导致正常的程序流程被临时停止,例如外围中断服务程序在异常被处理前,当前的处理器状态必须被保存,以便处理程序完成后,最后的程序可以被恢复.4、异常向量5、进入异常的操作在相应的链接寄存器LR(r14)中保存下一条指令的地址将CPSR复制到相应的SPSR中强制使CPSR模式位置成对应异常类型的值强制使程序计数器指向相应异常向量,取下一条指令例子:用户模式到FIQ模式异常r15(pc)r13_fiqr10_fiqr8_fiqspsr_fiqcpsrr7r4r5r2r1r0r3r6r14_fiqr12_fiqr11_fiqr9_fiqr14(lr)r13(sp)r12r10r11r9r8RegistersinuseFIQ模式cpsrr15(pc)r14(lr)r13(sp)r12r10r11r9r8r7r4r5r2r1r0