ARM体系结构与编程ARM处理器

上传人:M****1 文档编号:568778173 上传时间:2024-07-26 格式:PPT 页数:89 大小:7.76MB
返回 下载 相关 举报
ARM体系结构与编程ARM处理器_第1页
第1页 / 共89页
ARM体系结构与编程ARM处理器_第2页
第2页 / 共89页
ARM体系结构与编程ARM处理器_第3页
第3页 / 共89页
ARM体系结构与编程ARM处理器_第4页
第4页 / 共89页
ARM体系结构与编程ARM处理器_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《ARM体系结构与编程ARM处理器》由会员分享,可在线阅读,更多相关《ARM体系结构与编程ARM处理器(89页珍藏版)》请在金锄头文库上搜索。

1、ARM体系结构与编程 ARM处理器指令集CISC:复杂指令集(Complex Instruction Set Computer)具有大量的指令和寻址方式,指令长度可变8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。RISC:精简指令集(Reduced Instruction Set Computer)只包含最有用的指令,指令长度固定确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单CISC的背景和特点背景:存储资源紧缺, 强调编译优化。增强指令功能,设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的(微程序)指令系统来实现。为节省存

2、储空间,强调高代码密度,指令格式不固定,指令可长可短,操作数可多可少。寻址方式复杂多样,操作数可来自寄存器,也可来自存储器。采用微程序控制,执行每条指令均需完成一个微指令序列。CPI ,指令越复杂,CPI越大。CISC的主要缺点指令使用频度不均衡。高频度使用的指令占据了绝大部分的执行时间,扩充的复杂指令往往是低频度指令。大量复杂指令的控制逻辑不规整,不适于VLSI工艺VLSI的出现,使单芯片处理机希望采用规整的硬联逻辑实现,而不希望用微程序,因为微程序的使用反而制约了速度提高。(微码的存控速度比CPU慢5-10倍)。软硬功能分配复杂指令增加硬件的复杂度,使指令执行周期大大加长,直接访存次数增多

3、,数据重复利用率低。不利于先进指令级并行技术的采用流水线技术。RISC基本设计思想减小CPI: CPUtime=Instr_Count * CPI * Clock_cycle。精简指令集:保留最基本的,去掉复杂、使用频度不高的指令。采用Load/Store结构,有助于减少指令格式,统一存储器访问方式。采用硬接线控制代替微程序控制。RISC:减少指令平均执行周期数CPUtime= Instr_Count *CPI * Clock_cycleICRISC IC CISC, 30%-40%CCRISC CCCISCCPIRISC CPICISC , 20%超标量、超流水线、VLIW等系统结构, 目标

4、在于减小CPI, 可使CPI1RISC的提出与发展Load/Store结构提出: CDC6600(1963)-CRAY1(1976)RISC思想最早在IBM公司提出,但不叫RISC, IBM801处理器是公认体现RISC思想的机器。1980年,Berkeley的Patterson和Dizel提出RISC名词,并研制了RISC-,实验样机。1981年Stenford的Hennessy研制MIPS芯片。85年后推出商品化RISC:MIPS1(1986)和SPARC V1(1987)典型的高性能RISC处理器SUN公司的SPARC(1987)MIPS公司的SGI:MIPS(1986)HP公司的PA-

5、RISC,IBM, Motorola公司的PowerPCDEC、Compac公司的Alpha AXPIBM的RS6000(1990)第一台Superscalar RISC机 CISC与RISC的对比类别CISCRISC指令系统指令数量很多较少,通常少于100执行时间有些指令执行时间很长,如整块的存储器内容拷贝;或将多个寄存器的内容拷贝到存贮器没有较长执行时间的指令编码长度编码长度可变,1-15字节编码长度固定,通常为4个字节寻址方式寻址方式多样简单寻址操作可以对存储器和寄存器进行算术和逻辑操作只能对寄存器对行算术和逻辑操作,Load/Store体系结构编译难以用优化编译器生成高效的目标代码程序

6、采用优化编译技术,生成高效的目标代码程序ARM 发展ARM处理器工作模式 ARM 有7个基本工作模式:User:非特权模式,大部分任务执行在这种模式正常程序执行的模式FIQ:当一个高优先级(fast)中断产生时将会进入这种模式高速数据传输和通道处理IRQ:当一个低优先级(normal)中断产生时将会进入这种模式通常的中断处理Supervisor:当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式Abort: 当存取异常时将会进入这种模式虚拟存储及存储保护Undef: 当执行未定义指令时会进入这种模式软件仿真硬件协处理器System: 使用和User模式相同寄存器集的特权模式特

7、权级的操作系统任务About 工作模式除用户模式外其它6种处理器模式称为特权模式(Privieged Modes)。这些模式下程序可以访问所有的系统资源,也可以任意的进行处理器模式切换。其中的5种又称之为特权模式,分别为:FIQ(Fast Interrupt reQuest)IRQ(Interrupt request)管理(Supervisor)中止(Abort)未定义(Undefined)ARM寄存器组织ARM处处理器有理器有37个个32位位长长的寄存器的寄存器1个用作PC(program Counter)1个用作CPSR(Current Program Status Register)5个

8、用作SPSR(Saved Program status Registers)30个用作通用寄存器。注:其中1个CPSR和5个SPSR通称为状态寄存器,虽然这些寄存器是32位的,但目前只使用了其中的12位。R0User modeR0-R7R15,andCPSRUser ModeR0R12,R15And CPSRUser ModeR0R12,R15And CPSRUser ModeR0R12,R15And CPSRUser ModeR0R12,R15And CPSRR1R2R3R4R5R6R7R8R9R10寄存器组织UserFIQIRQSVCUndefAbortR11R11R12R12R13(SP

9、)R13(SP)R13R13R13R13R14(LR)R14(LR)R14R14R14R14R15(PC)CPSRSPSRSPSRSPSRSPSRSPSR寄存器组织注:当前处理器的模式决定着哪组寄存器可操作用户模式和系统模式使用相同的寄存器UserFIQIRQSVCUndefAbort通用寄存器通用寄存器根据其分通用寄存器根据其分组组与否和使用目的可分与否和使用目的可分为为以下以下3类类。未分组寄存器(The unbanked registers),包括R0R7。分组寄存器(The banked register),包括R8R14。程序计数器(Program Counter),即R15。分组寄

10、存器R8R14是分组寄存器,它们每个访问的物理寄存器取决于当前的处理器模式。对于R8R12,一组用于FIQ模式,一组用于FIQ以外的模式。不同模式下寄存器的使用,要使用寄存器名后缀加以区分。如:FIQ:r8_fiq,r9_fiqUSER: r8_user,r9_user分组寄存器对对于分于分组组寄存器寄存器R13和和R14来来说说,每个寄存器,每个寄存器对应对应于于6个不同的物理寄存器。用个不同的物理寄存器。用户户模式和系模式和系统统模式公模式公用,另外用,另外5个个对应对应于于5种异常模式。种异常模式。访问时访问时需指定需指定它它们们的模式。的模式。r13_r14_其中其中可以是以下之一:可

11、以是以下之一:usr、svc、abt、und、irp和和fiq。分组寄存器r13寄存器在寄存器在ARM中常用作堆中常用作堆栈栈指指针针,称,称为为SPr14又被称又被称为连为连接寄存器接寄存器(Link Register,LR)每种处理模式用自己的r14存放当前子程序的返回地址典型用法:1、MOV PC LRBX LR2、在子程序入口处使用STMFD SP!,LR子程序返回时LDMFD SP!,PC程序计数器r15程序计数器也称PC,用于两种特殊目的:读程序计数器SUB R1,PC,#4;r1中存放STR指令地址STRPC,R0;将PC=STRLDRR0,R0SUBR0,R0,R1;offse

12、t=PC-STR地址写程序计数器程序状态寄存器当前程序状态寄存器CPSR(Current Program Status Register),可以在任何处理器模式下被访问,它包括下列内容:ALU(Arithmetic Logic Unit)状态标志的备份。当前的处理器模式。中断使能标志。设置处理器的状态。程序状态寄存器SPSR(Saved Program Status Register)当特定的异常中断发生时,这个物理寄存器负责存放当前程序状态寄存器的内容。当异常处理程序返回时,再将其内容恢复到当前程序状态寄存器。在User模式和System模式下没有SPSR状态寄存器模式位含义M4:0处理器模

13、式0b10000用户模式0b10001FIQ0b10010IRQ0b10011管理模式0b10111终止模式0b11011未定义模式0b11111系统模式ARM存储体系ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从第0字节到第3字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(32位)。ARM体系结构可以用两种方法存储字数据,称之为大端格式大端格式和小端格式小端格式。ARM存储体系ARM微处理器的指令系统 ARM微处理器的指令集是加载微处理器的指令集是加载/存储型的,也即存储型的

14、,也即指令集仅能处理寄存器中的数据,而且处理结果指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载要通过专门的加载/存储指令来完成。存储指令来完成。ARM微处理器的指令集可以分为六大类微处理器的指令集可以分为六大类 :跳转指令数据处理指令程序状态寄存器(PSR)处理指令加载/存储指令协处理器指令和异常产生指令ARM微处理器指令表微处理器指令表-1助记符指令功能描述ADC带进位加法指令ADD加法指令AND逻辑与指令B跳转指令BIC位清零指令BL带返回的跳转指令BLX带返回和状态切换的跳转指令BX带状态切换

15、的跳转指令ARM微处理器指令表微处理器指令表-2助记符指令功能描述CDP协处理器数据操作指令CMN比较反值指令CMP比较指令EOR异或指令LDC存储器到协处理器的数据传输指令LDM加载多个寄存器指令LDR存储器到寄存器的数据传输指令MCRARM寄存器到协处理器寄存器数据传输ARM微处理器指令表微处理器指令表-3助记符指令功能描述MLA乘加运算指令MOV数据传送指令MRC协处理器寄存器到ARM寄存器数据传输MRS传送CPSR或SPSR的内容到通用寄存器MSR传送通用寄存器到CPSR或SPSR的指令MUL32位乘法指令MLA32位乘加指令ARM微处理器指令表微处理器指令表-4助记符指令功能描述OR

16、R逻辑或指令RSB逆向减法指令RSC带借位的逆向减法指令SBC带借位减法指令STC协处理器寄存器写入存储器指令STM批量内存字写入指令STR寄存器到存储器的数据传输指令SUB减法指令ARM微处理器指令表微处理器指令表-5助记符指令功能描述SWI软件中断指令SWP交换指令TEQ相等测试指令TST位测试指令ARM指令概述条件码条件码助记符后缀助记符后缀标志标志含含义义0000EQZ置位相等0001NEZ清零不相等0010CSC置位无符号数大于或等于0011CCC清零无符号数小于0100MIN置位负数0101PLN清零正数或零0110VSV置位溢出0111VCV清零未溢出1000HIC置位无符号数大

17、于1001LSC清零无符号数小于或等于1010GEN等于V带符号数大于或等于1011LTN不等于V带符号数小于1100GTZ清零且(N等于V)带符号数大于1101LEZ 置位或(N 不等于V)带符号数小于或等于1110AL忽略无条件执行ARM指令的寻址方式ARMARM指令系统支持如下几种常见的寻址方式:指令系统支持如下几种常见的寻址方式:立即寻址 寄存器寻址 寄存器间接寻址 基址变址寻址 多寄存器寻址 相对寻址 堆栈寻址 立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令方式,操作数本身就在指令中给出,只要

18、取出指令也就取到了操作数。这个操作数被称为立即数,对也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。应的寻址方式也就叫做立即寻址。例如以下指令: ADD R0,R0,1 /*R0R01 */ ADD R0,R0,0x3f /*R0R00x3f*/在以上两条指令中,第二个源操作数即为立即数,在以上两条指令中,第二个源操作数即为立即数,要求以要求以“”为前缀,对于以十六进制表示的立即为前缀,对于以十六进制表示的立即数,还要求在数,还要求在“”后加上后加上“0x0x”。 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,寄存器寻址就是利用寄存器中的数值作为操作数,这种

19、寻址方式是各类微处理器经常采用的一种方式,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。也是一种执行效率较高的寻址方式。以下指令: ADD R0,R1,R2/*R0R1R2*/该指令的执行效果是将寄存器该指令的执行效果是将寄存器R1R1和和R2R2的内容相加,的内容相加,其结果存放在寄存器其结果存放在寄存器R0R0中。中。 寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。作数本身存放在存储器中。例如以下指令: LDR R0, R1/*R0R1*/ STR R0,

20、R1/*R1R0*/在在第第一一条条指指令令中中,以以寄寄存存器器R2R2的的值值作作为为操操作作数数的的地地址址,在在存存储储器中取得一个操作数后与器中取得一个操作数后与R1R1相加,结果存入寄存器相加,结果存入寄存器R0R0中中; ;第二条指令将以第二条指令将以R1R1的值为地址的存储器中的数据传送到的值为地址的存储器中的数据传送到R0R0中中第三条指令将第三条指令将R0R0的值传送到以的值传送到以R1R1的值为地址的存储器中。的值为地址的存储器中。 基址变址寻址 基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指

21、令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,令常见有以下几种形式,如下所示:LDR R0,R1,4;R0R14LDR R0,R1,4!;R0R14、R1R14LDR R0,R1,4;R0R1、R1R14LDR R0,R1,R2;R0R1R2在在第第一一条条指指令令中中,将将寄寄存存器器R1R1的的内内容容加加上上4 4形形成成操操作作数数的的有有效效地地址址,从从而而取得操

22、作数存入寄存器取得操作数存入寄存器R0R0中。中。在在第第二二条条指指令令中中,将将寄寄存存器器R1R1的的内内容容加加上上4 4形形成成操操作作数数的的有有效效地地址址,从从而而取得操作数存入寄存器取得操作数存入寄存器R0R0中,然后,中,然后,R1R1的内容自增的内容自增4 4个字节。个字节。在在第第三三条条指指令令中中,以以寄寄存存器器R1R1的的内内容容作作为为操操作作数数的的有有效效地地址址,从从而而取取得得操作数存入寄存器操作数存入寄存器R0R0中,然后,中,然后,R1R1的内容自增的内容自增4 4个字节。个字节。在第四条指令中,将寄存器在第四条指令中,将寄存器R1的内容加上寄存器

23、的内容加上寄存器R2的内容形成操作数的的内容形成操作数的有效地址,从而取得操作数存入寄存器有效地址,从而取得操作数存入寄存器R0中。中。 多寄存器寻址 采采用用多多寄寄存存器器寻寻址址方方式式,一一条条指指令令可可以以完完成成多多个个寄寄存存器器值值的的传传送送。这这种种寻寻址址方方式式可可以以用用一一条条指指令令完完成成传传送送最最多多1616个个通用寄存器的值。通用寄存器的值。以下指令:LDMIA R0,R1,R2,R3,R4;R1R0;R2R04;R3R08;R4R012该指令的后缀该指令的后缀IA表示在每次执行完加载表示在每次执行完加载/存储操作后,存储操作后,R0按字长度增加,因此,

24、指令可将连续存储单元的值传送到按字长度增加,因此,指令可将连续存储单元的值传送到R1R4。 相对寻址 与与基基址址变变址址寻寻址址方方式式相相类类似似,相相对对寻寻址址以以程程序序计计数数器器PCPC的的当当前前值值为为基基地地址址,指指令令中中的的地地址址标标号号作作为为偏偏移移量量,将将两两者者相相加加之之后后得得到到操操作作数数的的有有效效地地址址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:BLNEXT;跳转到子程序NEXT处执行NEXTMOV PC,LR;从子程序返回 堆栈寻址 堆堆栈栈是是一一种种数数据据结结构构,按按先先进进后后出出(First First

25、In In Last Last OutOut,FILOFILO)的的方方式式工工作作,使使用用一一个个称称作作堆堆栈栈指指针针的的专专用用寄寄存存器器指指示示当当前前的的操操作位置,堆栈指针总是指向栈顶。作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的数据时,称当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(为满堆栈(Full Stack),而当堆栈指针指),而当堆栈指针指向下一个将要放入数据的空位置时,称为空向下一个将要放入数据的空位置时,称为空堆栈(堆栈(Empty Stack)。)。 堆栈寻址根据堆栈的生成方式,又可以分为递增堆栈根据堆栈的生成方式,又可以分为递增堆栈(Asce

26、nding Stack)和递减堆栈()和递减堆栈(Decending Stack),当堆栈由低地址向高地址生成时,称为),当堆栈由低地址向高地址生成时,称为递增堆栈递增堆栈,当堆栈由高地址向低地址生成时,称,当堆栈由高地址向低地址生成时,称为为递减堆栈递减堆栈。这样就有四种类型的堆栈工作方式。这样就有四种类型的堆栈工作方式 满满递递增增堆堆栈栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。满满递递减减堆堆栈栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。空空递递增增堆堆栈栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。空递减堆栈:空递减堆栈:堆栈指针指向下一

27、个将要放入数据的空位置,且由高地址向低地址生成 ARM体系结构与编程 ARM处理器内核简要定义固化宏单元(硬核)ARM920TARM7TDMIARM720TARM1022E可综合内核(软核)ARM926EJ-SARM7TDMI-SARM1026EJ-S测试芯片ARM10200EARM处理器内核ARM7TDMI 处理器内核系列ARM9TDMI 处理器内核系列ARM10E处理器内核系列其他处理器什么是 ARM7TDMI?ARM7TDMI 是基于 ARM7 内核3 级流水线-0.9MIPS/MHz冯.诺依曼架构CPI(Cycle Per Instruction) 约为1.9 T - Thumb 架构

28、扩展, 提供两个独立的指令集:ARM 指令,均为 32位Thumb指令,均为 16位两种运行状态,用来选择哪个指令集被执行D - 内核具有Debug扩展结构M - 增强乘法器 (32x8) 支持64位结果.I - EmbeddedICE-RT逻辑-提供片上断点和调试点支持ARM7TDMI 内核信号ARM7TDMI内核MCLKnIRQnFIQnRESETBUSENBIGENDISYNCnWAITVDDVSSAPEDBE协处理器接口存储器管理存储器接口ABORTnOPCCPBCPAnCPInTRANSnM4:0MAS1:0nRWnMREQLOCKSEQnENOUTA31:0DOUT31:0DIN3

29、1:0D31:0电源总线控制时钟配置中断ARM7TDMI 方框图ARM7TDM内核TAP 控制器JTAG 接口数据总线控制信号D31:0地址总线A31:0DIN31:0DOUT31:0BUSSplitterEmbeddedICE逻辑ARM7TDMI 内核乘法器指令解码地址自增器nRESETnMREQSEQABORTnIRQnFIQnRWMAS1:0LOCKnCPICPACPBnWAITMCLKnOPCBIGENDISYNCnTRANSnM4:0D31:0桶形移位器32 位 ALUDBE写数据 寄存器读数据 寄存器地址寄存器寄存器A31:0ABE及控制 逻辑PC Update解码站指令解码Inc

30、rementerPCABusBBusALUBus外部地址产生PC31:2 ARM StatePC31:1 Thumb StateALU31:0INC自增器A31:0向量0x1C0x00地址寄存器指令流水线为增加处理器指令流的速度,ARM7 系列使用3级流水线.允许多个操作同时处理,比逐条指令执行要快。 PC指向正被取指的指令,而非正在执行的指令FetchDecodeExecute从存储器中读取指令解码指令寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank )PCPCPC - 4 PC-2PC 8 PC - 4ARMThumb 最佳流水线该例中用6个时钟周期执行了6条指令所有

31、的操作都在寄存器中(单周期执行)指令周期数 (CPI) = 1 操作周期 1 2 3 45 6 ADD SUB MOV AND ORR EOR CMP RSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch LDR 流水线举例该例中,用6周期执行了4条指令指令周期数 (CPI) = 1.5 周期操作1 23456 ADD SUB LDR MOV AND ORRFetchDecodeExecuteF

32、etchDecodeExecuteFetchDecodeExecuteDataWritebackFetchDecodeExecuteFetchDecodeFetch分支流水线举例流水线被阻断注意:内核运行在ARM状态周期 1 2 3 4 5 0x8000 BL 0x8004 X0x8008 XX0x8FEC ADD0x8FF0 SUB0x8FF4 MOV地址 操作FetchDecodeExecuteFetchDecodeExecuteFetchDecodeFetchFetchDecode ExecuteLinkret AdjustFetchDecodeFetch中断流水线举例周期 1 2 3

33、4 5 6 7 8IRQIRQ 中断的反应时间最小=7周期地址 操作FDELinkretAdjustFFDecode IRQLinkretExecute IRQAdjustFDEFDFFDEFDFF0x8000 ADD0x8008 MOV0x0018 B (to 0xAF00)0x8004 SUB0x001C XX0x0020 XXX0xAF00 STMFD 0xAF04 MOV0xAF08 LDR0x800C X超标量执行超标量(Superscalar)执行:超标量CPU采用多条流水线结构 执行1取指指令译码2译码1执行2执行1取指译码2译码1执行2流水线1流水线2数据回写对齐存储器访问必须

34、始终适当地保持地址对齐非对齐地址将产生不可预测的/未定义的结果用Data Abort 异常来检测无效的非对齐数据存取扩展逻辑要求,或使用MMU在 720T, 920T, 926E-S, 1020E谨防指令读取时出现非对齐非对齐数据存取能够完成, 但不是用 LDR使用 LDRB, STRB 传递字节,或使用LDM 加移位/屏蔽字节访问(字节对齐)半字访问(半字对齐)字访问(字对齐)3210765402468ace089abcdef48cT标志位的作用161632-bit data16A1MuxThumb指令解码MuxMuxT标志ARM指令解码阶段 1阶段 2D31:00110FetchDecod

35、eExecute带Cache的ARM7TDMI ARM710T8K 统一的 cache 完整的内存管理单元(mmu),支持虚拟地址和存储器保护写缓冲ARM720T同ARM710T,但支持 WinCEARM740T8K 统一的 cache内存管理单元写缓冲ARM7TDMI内核地址地址数据读AMBA接口写缓冲MMU数据写数据ARM7xxT控制逻辑CacheAMBA总线接口JTAG 和非 AMBA 信号CP15ARM7TDMI-SARM7TDMI-S 是ARM7TDMI 的完全可综合版本指令集和周期与ARM7TDMI 固化版本兼容完全可综合的 RTL使用了纲要设计构件的组件ALU寄存器组单时钟设计(

36、上升沿)单一总线接口SecurCore SC100第一个适合安全应用的32位 RISC 处理器.可用于smart 卡和其他有安全性要求的嵌入式领域.基于ARM7内核的专为安全解决方案设计完全可综合的,全静态设计提供安全的存储器保护单元Thumb指令支持,提高代码密度和系统性能特殊的、独一无二的防伪造设计小尺寸 (1mm2 典型的 0.25 工艺)低功耗 ( 0.7mW/MHz at 2.5V)小测验1)一条简单的算术操作( 如:ADD )要占用几个周期?2)ARM7TDMI指令流水线有几个阶段?3)ARM7TDMI 是否使用 ALU 计算地址? 4)ARM在存储器里,可寻址几种类型的数据?5)

37、试举一非顺序周期的例子?6)数据总线的哪一半可被内核用作Thumb 指令?ARM处理器内核ARM7TDMI 处理器内核系列ARM9TDMI 处理器内核系列ARM10E处理器内核系列其他处理器ARM9TDMIHarvard架构增加了可用的存储器宽度指令存储器接口数据存储器接口可以实现对指令和数据存储器的同时访问5 级流水线实现了以下改进:改进 CPI 到 1.5提高了最大时钟频率ARM9TDMI流水线的变化InstructionFetch Shift + ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM

38、9TDMIARM or ThumbInst DecodeReg SelectRegReadShiftALURegWriteThumbARMdecompressARM decodeInstructionFetchFETCHDECODEEXECUTEARM7TDMIARM9TDMI数据通道 (1)寄存器BankALUCBADINFWD结果DADD数据递增向量指令递增IA字节旋转/符号扩展.MU 逻辑双向缓冲器字节/半字复制MU逻辑单元包含有:多路复用器,乘法器和桶形移位器数据总线地址总线字节/半字指令地址总线ARM9TDMI 数据通道 (2)寄存器BankPSR乘法器移位器ALUBAImmDINF

39、WDBDATAADATA锁存锁存MU 逻辑(至 IA 生成逻辑)结果周期操作ADD R1, R1, R2SUB R3, R4, R1ORR R8, R3, R4AND R6, R3, R1EOR R3, R1, R212345678LDRR4, R79FDEFDEWFDEWFDEWFDWEFDEWF 取指(Fetch)D 解码(Decode)E 执行(Execute)I 互锁(Interlock) M 存储器 (Memory) W 写回(Writeback)ILDR互锁 本例中,用了7个时钟周期执行6条指令, CPI = 1.2 。LDR指令之后立即跟一条数据操作指令,由于使用了相同的寄存器,

40、将会导致互锁 。WIM周期操作ADD R1, R1, R2SUB R3, R4, R1ORR R8, R3, R4AND R6, R3, R1EOR R3, R1, R2LDRR4, R7最佳流水线本例中,用了6个时钟周期执行6条指令, CPI = 1。LDR指令没有引起流水线互锁123456789FDEWFDEWFEWFDEWFDWEFDEWF 取指(Fetch)D 解码(Decode)E 执行(Execute)I 互锁(Interlock)M 存储器(Memory )W 写回( Writeback)MDLDM互锁 (1)本例中,用了8个时钟周期执行5条指令, CPI = 1.6在LDM期间

41、,有并行的存储器访问和回写周期周期操作LDMIA R13!, R0-R3SUB R9, R7, R8ORR R8, R4, R3AND R6, R3, R112345678STRR4, R99F 取指(Fetch) D 解码(Decode) E 执行(Execute) MW-存储器和回写同时执行I 互锁(Interlock) M 存储器(Memory ) W 写回(Writeback)FDEWFDEWDEFDEWFMDWEIIIIIIMFMWMWMWLDM 互锁 (2)本例中,用了9个时钟周期执行5条指令, CPI = 1.8 此处SUB 使用了 R3,增加了一个额外的互锁周期来完成该寄存器数

42、据的获取 这种情况对任何LDM 指令,像带IA, DB, FD,等,都会发生 。周期操作LDMIA R13!, R0-R3SUB R9, R7, R3ORR R8, R4, R3AND R6, R3, R112345678STRR4, R99F 取指(Fetch) D 解码(Decode)E 执行(Execute)I 互锁(Interlock) M 存储器(Memory ) W 写回(Writeback)FDEWFDEWDEFDEWFMDWEMW MW MWIIIIIIMIIFARM9TDMI系统举例ARM9TDMI数据存储器指令存储器CTRLDA.DD.CTRLIA.ID.GLUEGLUE注

43、意:数据接口必须能够读取指令存储器中的数据。为调试方便,建议数据接口能够读写指令存储器。带Cache的ARM9TDMIARM9TDMID CacheI CacheMMUGLUE外部存储器ARM920T2x 16K caches MMU支持虚拟地址和内存保护 写缓冲ARM940T2x 4K caches MPU写缓冲ARM9xxT16KInstructioncacheMMUCoprocessorInterfaceAMBA ASB interfaceETM InterfaceControl Logic and Bus Interace UnitWrite Buffer16KDatacacheMMU

44、ARM920TARM9TDMIcoreARM .PoweredARM9E-S 系列概述ARM9E 基于 ARM9TDMI 内核,有以下扩展和增强:单周期 32x16 乘法器EmbeddedICE 逻辑 RT改进的 ARM/Thumb 交互操作新的32x16和 16x16 乘法指令新的计数到零指令新的饱和算术指令ARM946E-SARM9E-S 内核指令和数据cache, 大小可选择指令和数据RAM,大小可选择保护单元AHB 总线接口ARM966E-S与 ARM946E-S相似, 但无 cache。v5TE架构ARM926EJ-S 概述Jazelle状态允许直接执行Java 8位码ARM926E

45、J-SARM9E-S 内核可配置的cacheTCMTCM(Terminal-to-ComputerMultiplexer终端设备至计算机多路转接器)内存管理单元双重 32位 AHB 总线接口 (多层)小测验1) Harvard结构带来了哪些优势?2)ARM9TDMI流水线有几级?3)在流水线的哪一个阶段读寄存器?4)寄存器 bank由几个读或写端口?5)什么条件下会出现互锁?ARM处理器内核ARM7TDMI 处理器内核系列ARM9TDMI 处理器内核系列ARM10E处理器内核系列其他处理器ARM10E 系列概述ARM1020Ev5TE架构CPI 1.36 级流水线静态分支预测32kB 指令ca

46、che和32kB数据cache支持“Hit under miss” 非阻塞的执行单元每周期64 位的 LDM / STM操作EmbeddedICE逻辑 - RT-II支持新的 VFPv1 结构ARM1022E同上,除了cache大小为16kB对SUDL(single user design license )有效ARM10 与ARM9的流水线对比指令取指 移位+ ALU寄存器写寄存器读寄存器译码FETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARM 或Thumb指令解码ARM10指令地址 生成移位+ ALU数据 Cache 接口寄存器写FETCHDECODEEXECU

47、TEMEMORYWRITE寄存器读+ 结果 前向迁移 + 记分板乘法乘 加协处理器 数据接口分支预测指令取指ISSUE寄存器访问数据+ 分支地址生成ARM 或 Thumb指令解码协处理器 指令发出ARM10 整数单元数据通道写端口寄存器BankPSR乘法器移位器ALUBAImmBA结果CLZPC数据装载周期OperationLDR A B CADD A B1234567MUL AF - Fetch I - Issue D - Decode E - Execute M Memory Wb - Writeback Wl - Write to register using load port 顺序代

48、码的执行 开始于64位的对齐地址Address0x073340x0732C0x07330SUB B C0x07328ADDA C0x07324ADDB0x07320Fetch to Buffer89MWlDWbDDWbDWbFDWbDEEEEFFFFFIIIIIIARM1026EJ-S 概述Jazelle状态允许直接执行Java 8位码ARM1026EJ-SARM10EJ-S 内核可配置的cache和 TCM支持MMU 和MPU两个 64位 AHB 总线接口 (多层)ARM处理器内核ARM7TDMI 处理器内核系列ARM9TDMI 处理器内核系列ARM10E处理器内核系列其他处理器Intel

49、StrongARM 概述ARM V4 架构 (无Thumb 支持)5级流水线,降低跳转损耗-stage pipeline, 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位协处理器接口调试和性能监控逻辑(通过CP14 )乘-加模块(作为CP0 )可配置的内核时钟速度100-733MHz ,来自 33-66MHz 输入时钟异步输入总线时钟可到100 MHz (最大总线内核时钟的1/3 )举例:XScale 80200: 中断控制器 (implemented as CP13)ECC 存储器保护

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号