ARM体系结构与编程-ARM处理器.ppt_第1页
ARM体系结构与编程-ARM处理器.ppt_第2页
ARM体系结构与编程-ARM处理器.ppt_第3页
ARM体系结构与编程-ARM处理器.ppt_第4页
ARM体系结构与编程-ARM处理器.ppt_第5页
免费预览已结束,剩余84页可下载查看

下载本文档

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

文档简介

arm体系结构与编程 arm处理器,指令集,cisc:复杂指令集(complex instruction set computer) 具有大量的指令和寻址方式,指令长度可变 8/2原则:80%的程序只使用20%的指令 大多数程序只使用少量的指令就能够运行。 risc:精简指令集(reduced instruction set computer) 只包含最有用的指令,指令长度固定 确保数据通道快速执行每一条指令 使cpu硬件结构设计变得更为简单,cisc的背景和特点,背景:存储资源紧缺, 强调编译优化。 增强指令功能,设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的(微程序)指令系统来实现。 为节省存储空间,强调高代码密度,指令格式不固定,指令可长可短,操作数可多可少。 寻址方式复杂多样,操作数可来自寄存器,也可来自存储器。 采用微程序控制,执行每条指令均需完成一个微指令序列。 cpi ,指令越复杂,cpi越大。,cisc的主要缺点,指令使用频度不均衡。 高频度使用的指令占据了绝大部分的执行时间,扩充的复杂指令往往是低频度指令。 大量复杂指令的控制逻辑不规整,不适于vlsi工艺 vlsi的出现,使单芯片处理机希望采用规整的硬联逻辑实现,而不希望用微程序,因为微程序的使用反而制约了速度提高。(微码的存控速度比cpu慢5-10倍)。 软硬功能分配 复杂指令增加硬件的复杂度,使指令执行周期大大加长,直接访存次数增多,数据重复利用率低。 不利于先进指令级并行技术的采用 流水线技术。,risc基本设计思想,减小cpi: cputime=instr_count * cpi * clock_cycle。 精简指令集:保留最基本的,去掉复杂、使用频度不高的指令。 采用load/store结构,有助于减少指令格式,统一存储器访问方式。 采用硬接线控制代替微程序控制。,risc:减少指令平均执行周期数,cputime= instr_count *cpi * clock_cycle icrisc ic cisc, 30%-40% ccrisc cccisc cpirisc cpicisc , 20% 超标量、超流水线、vliw等系统结构, 目标在于减小cpi, 可使cpi1,risc的提出与发展,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-risc, ibm, motorola公司的powerpc dec、compac公司的alpha axp ibm的rs6000(1990)第一台superscalar risc机,cisc与risc的对比,arm 发展,arm处理器工作模式,arm 有7个基本工作模式: user:非特权模式,大部分任务执行在这种模式 正常程序执行的模式 fiq:当一个高优先级(fast)中断产生时将会进入这种模式 高速数据传输和通道处理 irq:当一个低优先级(normal)中断产生时将会进入这种模式 通常的中断处理 supervisor:当复位或软中断指令执行时将会进入这种模式 供操作系统使用的一种保护模式 abort: 当存取异常时将会进入这种模式 虚拟存储及存储保护 undef: 当执行未定义指令时会进入这种模式 软件仿真硬件协处理器 system: 使用和user模式相同寄存器集的特权模式 特权级的操作系统任务,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个用作spsr(saved program status registers) 30个用作通用寄存器。 注: 其中1个cpsr和5个spsr通称为状态寄存器,虽然这些寄存器是32位的,但目前只使用了其中的12位。,寄存器组织,寄存器组织,注: 当前处理器的模式决定着哪组寄存器可操作 用户模式和系统模式使用相同的寄存器,通用寄存器,通用寄存器根据其分组与否和使用目的可分为以下3类。 未分组寄存器(the unbanked registers),包括r0r7。 分组寄存器(the banked register),包括r8r14。 程序计数器(program counter),即r15。,分组寄存器,r8r14是分组寄存器,它们每个访问的物理寄存器取决于当前的处理器模式。 对于r8r12,一组用于fiq模式,一组用于fiq以外的模式。 不同模式下寄存器的使用,要使用寄存器名后缀加以区分。 如: fiq: r8_fiq,r9_fiq user: r8_user,r9_user,分组寄存器,对于分组寄存器r13和r14来说,每个寄存器对应于6个不同的物理寄存器。用户模式和系统模式公用,另外5个对应于5种异常模式。访问时需指定它们的模式。 r13_ r14_ 其中可以是以下之一:usr、svc、abt、und、irp和fiq。,分组寄存器,r13寄存器在arm中常用作堆栈指针,称为sp r14又被称为连接寄存器(link register,lr) 每种处理模式用自己的r14存放当前子程序的返回地址 典型用法: 1、 mov pc lr bx lr 2、在子程序入口处使用 stmfd sp!,lr 子程序返回时 ldmfd sp!,pc,程序计数器r15,程序计数器也称pc,用于两种特殊目的: 读程序计数器 sub r1,pc,#4 ;r1中存放str指令地址 str pc,r0 ;将pc=str ldr r0,r0 sub r0,r0,r1 ;offset=pc-str地址 写程序计数器,程序状态寄存器,当前程序状态寄存器cpsr(current program status register),可以在任何处理器模式下被访问,它包括下列内容: alu(arithmetic logic unit)状态标志的备份。 当前的处理器模式。 中断使能标志。 设置处理器的状态。,程序状态寄存器,spsr(saved program status register) 当特定的异常中断发生时,这个物理寄存器负责存放当前程序状态寄存器的内容。当异常处理程序返回时,再将其内容恢复到当前程序状态寄存器。在user模式和system模式下没有spsr,状态寄存器模式位含义,arm存储体系,arm体系结构将存储器看作是从零地址开始的字节的线性组合。从第0字节到第3字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列。 作为32位的微处理器,arm体系结构所支持的最大寻址空间为4gb(32位)。 arm体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。,arm存储体系,arm微处理器的指令系统,arm微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。 arm微处理器的指令集可以分为六大类 : 跳转指令 数据处理指令 程序状态寄存器(psr)处理指令 加载/存储指令 协处理器指令和异常产生指令,arm微处理器指令表-1,arm微处理器指令表-2,arm微处理器指令表-3,arm微处理器指令表-4,arm微处理器指令表-5,arm指令概述,arm指令的寻址方式,arm指令系统支持如下几种常见的寻址方式: 立即寻址 寄存器寻址 寄存器间接寻址 基址变址寻址 多寄存器寻址 相对寻址 堆栈寻址,立即寻址,立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。 例如以下指令: add r0,r0,1 /*r0r01 */ add r0,r0,0x3f /*r0r00x3f*/ 在以上两条指令中,第二个源操作数即为立即数,要求以“”为前缀,对于以十六进制表示的立即数,还要求在“”后加上“0x”。,寄存器寻址,寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。 以下指令: add r0,r1,r2 /*r0r1r2*/ 该指令的执行效果是将寄存器r1和r2的内容相加,其结果存放在寄存器r0中。,寄存器间接寻址,寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。 例如以下指令: ldr r0, r1 /*r0r1*/ str r0, r1 /*r1r0*/ 在第一条指令中,以寄存器r2的值作为操作数的地址,在存储器中取得一个操作数后与r1相加,结果存入寄存器r0中; 第二条指令将以r1的值为地址的存储器中的数据传送到r0中 第三条指令将r0的值传送到以r1的值为地址的存储器中。,基址变址寻址,基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示: ldr r0,r1,4 ;r0r14 ldr r0,r1,4! ;r0r14、r1r14 ldr r0,r1,4 ;r0r1、r1r14 ldr r0,r1,r2 ;r0r1r2 在第一条指令中,将寄存器r1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器r0中。 在第二条指令中,将寄存器r1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器r0中,然后,r1的内容自增4个字节。 在第三条指令中,以寄存器r1的内容作为操作数的有效地址,从而取得操作数存入寄存器r0中,然后,r1的内容自增4个字节。 在第四条指令中,将寄存器r1的内容加上寄存器r2的内容形成操作数的有效地址,从而取得操作数存入寄存器r0中。,多寄存器寻址,采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令: ldmia r0,r1,r2,r3,r4 ;r1r0 ;r2r04 ;r3r08 ;r4r012 该指令的后缀ia表示在每次执行完加载/存储操作后,r0按字长度增加,因此,指令可将连续存储单元的值传送到r1r4。,相对寻址,与基址变址寻址方式相类似,相对寻址以程序计数器pc的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令bl采用了相对寻址方式: bl next ;跳转到子程序next处执行 next mov pc,lr ;从子程序返回,堆栈寻址,堆栈是一种数据结构,按先进后出(first in last out,filo)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(full stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(empty stack)。,堆栈寻址,根据堆栈的生成方式,又可以分为递增堆栈(ascending stack)和递减堆栈(decending stack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成,arm体系结构与编程 arm处理器内核,简要定义,固化宏单元(硬核) arm920t arm7tdmi arm720t arm1022e,可综合内核(软核) arm926ej-s arm7tdmi-s arm1026ej-s,测试芯片 arm10200e,arm处理器内核,arm7tdmi 处理器内核系列 arm9tdmi 处理器内核系列 arm10e处理器内核系列 其他处理器,什么是 arm7tdmi?,arm7tdmi 是基于 arm7 内核 3 级流水线-0.9mips/mhz 冯.诺依曼架构 cpi(cycle per instruction) 约为1.9 t - thumb 架构扩展, 提供两个独立的指令集: arm 指令,均为 32位 thumb指令,均为 16位 两种运行状态,用来选择哪个指令集被执行 d - 内核具有debug扩展结构 m - 增强乘法器 (32x8) 支持64位结果. i - embeddedice-rt逻辑-提供片上断点和调试点支持,arm7tdmi 内核信号,arm7tdmi 方框图,arm7tdm 内核,tap 控制器,jtag 接口,数据总线,控制信号,d31:0,地址总线,a31:0,din31:0,dout31:0,bus splitter,embedded ice 逻辑,arm7tdmi 内核,外部地址产生,指令流水线,为增加处理器指令流的速度,arm7 系列使用3级流水线. 允许多个操作同时处理,比逐条指令执行要快。 pc指向正被取指的指令,而非正在执行的指令,最佳流水线,该例中用6个时钟周期执行了6条指令 所有的操作都在寄存器中(单周期执行) 指令周期数 (cpi) = 1,操作,周期,1 2 3 4 5 6,fetch,decode,execute,fetch,decode,execute,fetch,decode,execute,fetch,decode,execute,fetch,decode,execute,decode,execute,fetch,decode,fetch,fetch,ldr 流水线举例,该例中,用6周期执行了4条指令 指令周期数 (cpi) = 1.5,分支流水线举例,流水线被阻断 注意:内核运行在arm状态,周期,1 2 3 4 5,地址 操作,fetch,decode,execute,fetch,decode,execute,fetch,decode,fetch,fetch,decode,execute,linkret,adjust,fetch,decode,fetch,中断流水线举例,周期,1 2 3 4 5 6 7 8,irq,irq 中断的反应时间最小=7周期,地址 操作,f,d,e,linkret,adjust,f,f,decode irq,linkret,execute irq,adjust,f,d,e,f,d,f,f,d,e,f,d,f,f,超标量执行,超标量(superscalar)执行:超标量cpu采用多条流水线结构,对齐,存储器访问必须始终适当地保持地址对齐 非对齐地址将产生不可预测的/未定义的结果 用data abort 异常来检测无效的非对齐数据存取 扩展逻辑要求,或使用mmu在 720t, 920t, 926e-s, 1020e 谨防指令读取时出现非对齐 非对齐数据存取能够完成, 但不是用 ldr 使用 ldrb, strb 传递字节,或使用ldm 加移位/屏蔽,t标志位的作用,16,16,32-bit data,16,a1,mux,thumb 指令 解码,mux,mux,t标志,arm 指令 解码,阶段 1,阶段 2,d31:0,0,1,1,0,fetch,decode,execute,带cache的arm7tdmi,arm710t 8k 统一的 cache 完整的内存管理单元(mmu),支持虚拟地址和存储器保护 写缓冲,arm720t 同arm710t,但支持 wince arm740t 8k 统一的 cache 内存管理单元 写缓冲,arm7tdmi 内核,地址,地址,数据读,amba 接口,写 缓冲,mmu,数据写,数据,arm7xxt,控制 逻辑,cache,amba 总线 接口,jtag 和非 amba 信号,cp15,arm7tdmi-s,arm7tdmi-s 是arm7tdmi 的完全可综合版本 指令集和周期与arm7tdmi 固化版本兼容 完全可综合的 rtl 使用了纲要设计构件的组件 alu 寄存器组 单时钟设计(上升沿)单一总线接口,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)试举一非顺序周期的例子? 6)数据总线的哪一半可被内核用作thumb 指令?,arm处理器内核,arm7tdmi 处理器内核系列 arm9tdmi 处理器内核系列 arm10e处理器内核系列 其他处理器,arm9tdmi,harvard架构 增加了可用的存储器宽度 指令存储器接口 数据存储器接口 可以实现对指令和数据存储器的同时访问 5 级流水线 实现了以下改进: 改进 cpi 到 1.5 提高了最大时钟频率,arm9tdmi流水线的变化,instruction fetch,shift + alu,memory access,reg write,reg read,reg decode,fetch,decode,execute,memory,write,arm9tdmi,arm or thumb inst decode,reg select,reg read,shift,alu,reg write,thumbarm decompress,arm decode,instruction fetch,fetch,decode,execute,arm7tdmi,arm9tdmi数据通道 (1),寄存器 bank,a l u,c,b,a,dinfwd,结果,da,dd,数据递增,向量,指令递增,ia,字节旋转 /符号扩展.,mu 逻辑,双向 缓冲器,字节/半字 复制,mu逻辑单元包含有:多路复用器,乘法器和桶形移位器,数据总线,地址总线,字节/半字,指令地址总线,arm9tdmi 数据通道 (2),寄存器 bank,psr,乘法器,移位器,alu,b,a,imm,dinfwd,bdata,adata,锁存,锁存,mu 逻辑,(至 ia 生成逻辑),结果,周期,操作,add r1, r1, r2,sub r3, r4, r1,orr r8, r3, r4,and r6, r3, r1,eor r3, r1, r2,1,2,3,4,5,6,7,8,ldr r4, r7,9,f,d,e,f,d,e,w,f,d,e,w,f,d,e,w,f,d,w,e,f,d,e,w,f 取指(fetch)d 解码(decode)e 执行(execute) i 互锁(interlock) m 存储器 (memory) w 写回(writeback),i,ldr互锁,本例中,用了7个时钟周期执行6条指令, cpi = 1.2 。 ldr指令之后立即跟一条数据操作指令,由于使用了相同的寄存器,将会导致互锁 。,w,i,m,周期,操作,add r1, r1, r2,sub r3, r4, r1,orr r8, r3, r4,and r6, r3, r1,eor r3, r1, r2,ldr r4, r7,最佳流水线,本例中,用了6个时钟周期执行6条指令, cpi = 1。 ldr指令没有引起流水线互锁,ldm互锁 (1),本例中,用了8个时钟周期执行5条指令, cpi = 1.6 在ldm期间,有并行的存储器访问和回写周期,ldm 互锁 (2),本例中,用了9个时钟周期执行5条指令, cpi = 1.8 此处sub 使用了 r3,增加了一个额外的互锁周期来完成该寄存器数据的获取 这种情况对任何ldm 指令,像带ia, db, fd,等,都会发生 。,arm9tdmi系统举例,注意: 数据接口必须能够读取指令存储器中的数据。 为调试方便,建议数据接口能够读写指令存储器。,带cache的arm9tdmi,arm9tdmi,d cache,i cache,mmu,glue,外部 存储器,arm920t 2x 16k caches mmu 支持虚拟地址和内存保护 写缓冲,arm940t 2x 4k caches mpu 写缓冲,arm9xxt,arm9e-s 系列概述,arm9e 基于 arm9tdmi 内核,有以下扩展和增强: 单周期 32x16 乘法器 embeddedice 逻辑 rt 改进的 arm/thumb 交互操作 新的32x16和 16x16 乘法指令 新的计数到零指令 新的饱和算术指令 arm946e-s arm9e-s 内核 指令和数据cache, 大小可选择 指令和数据ram,大小可选择 保护单元 ahb 总线接口 arm966e-s 与 arm946e-s相似, 但无 cache。,v5te架构,arm926ej-s 概述,jazelle状态允许直接执行java 8位码 arm926ej-s arm9e-s 内核 可配置的cachetcm tcm(terminal-to-computermultiplexer终端设备至计算机多路转接器) 内存管理单元 双重 32位 ahb 总线接口 (多层),小测验,1) harvard结构带来了哪些优势? 2) arm9tdmi流水线有几级? 3) 在流水线的哪一个阶段读寄存器? 4) 寄存器 bank由几个读或写端口? 5) 什么条件下会出现互锁?,arm处理器内核,arm7tdmi 处理器内核系列 arm9tdmi 处理器内核系列 arm10e处理器内核系列 其他处理器,arm10e 系列概述,arm1020e v5te架构 cpi 1.3 6 级流水线 静态分支预测 32kb 指令cache和32kb数据cache 支持“hit under miss” 非阻塞的执行单元 每周期64 位的 ldm / stm操作 embeddedice逻辑 - rt-ii 支持新的 vfpv1 结构 arm1022e 同上,除了cache大小为16kb 对sudl(single user design license )有效,arm10 与arm9的流水线对比,指令 取指,移位+ alu,寄存器 写,寄存器 读,寄存器 译码,fetch,decode,execute,memory,write,arm9tdmi,arm 或thumb 指令解码,arm10,指令地址 生成,移位+ alu,数据 cache 接口,寄 存 器 写,fetch,decode,execute,memory,write,寄存器 读 + 结果 前向迁移 + 记分板,乘法,乘 加,

温馨提示

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

评论

0/150

提交评论