免费预览已结束,剩余35页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
arm处理器的应用选型,1、内核的选择 2、系统工作频率 3、芯片内存储器的容量 4、片内外围电路的选择,arm处理器工作模式,cpsr(当前程序状态寄存器)的低5位用于定义当前操作模式 , 如图示:,arm处理器工作模式,除用户模式外的其他模式称为特权模式 。 特权模式中除系统模式以外的5种模式又称为异常模式,即 : fiq(fast interrupt request) irq(interrupt request) svc(supervisor) 中止(abort) 未定义(undefined),arm寄存器组成概述,arm处理器总共有37个寄存器,可以分为以下两类寄存器 : 1) 31个通用寄存器 : r0r15; r13_svc、r14_svc; r13_abt、r14_abt; r13_und、r14_und; r13_irq、r14_irq; r8_frq-r14_frq。 2)6个状态寄存器 cpsr;spsr_svc、spsr_abt、spsr_und、spsr_irq和spsr_fiq 。,arm状态下的寄存器组织,1)arm状态的寄存器简介: arm状态下的寄存器组织:,arm状态下的寄存器组织,2) arm状态的通用寄存器 不分组寄存器(the unbanked registers) r0r7 分组寄存器(the banked registers): r8r14 程序计数器:r15(pc),arm状态下的寄存器组织,cpsr和spsr的格式,异常中断的优先级,当几个异常中断同时发生时,在arm中通过给各异常中断赋予一定的优先级来实现处理次序 : 复位(最高优先级); 数据异常中止; fiq; irq; 预取指异常中止; swi、,未定义指令(包括缺协处理器)。,arm的异常中断,在arm体系结构中,异常中断用来处理软件中断、未定义指令陷阱(它不是真正的“意外”事件)及系统复位功能(它在逻辑上发生在程序执行前而不是在程序执行中,尽管处理器在运行中可能再次复位)和外部事件,这些“不正常”事件都被划归“异常”,因为在处理器的控制机制中,它们都使用同样的流程进行异常处理。,arm的异常中断,arm的异常中断响应过程; 异常中断向量表; 从异常中断处理程序中返回 ;,arm的异常中断响应过程,arm处理器对异常中断的响应过程如下: 将cpsr的内容保存到将要执行的异常中断对应的spsr中 。 设置当前状态寄存器cpsr中的相应位 将引起异常指令的下一条指令的地址保存到新的异常工作模式的r14 。 给程序计数器(pc)强制赋值 。,异常中断向量表,中断向量表中指定了各异常中断与其处理程序的对应关系 。 每个异常中断对应的中断向量表的4个字节的空间中存放一个跳转指令或者一个向pc寄存器中赋值的数据访问指令 。 存储器的前8个字中除了地址0x00000014之外,全部被用作异常矢量地址 。,arm的异常中断响应过程,每个异常模式对应有两个寄存器r13_、r14_分别保存相应模式下的堆栈指针、返回地址;堆栈指针可用来定义一个存储区域保存其它用户寄存器,这样异常处理程序就可以使用这些寄存器。 fiq模式还有额外的专用寄存器r8_fiqr12_fiq,使用这些寄存器可以加快快速中断的处理速度。,从异常中断处理程序中返回,从异常中断处理程序中返回时,需要执行 以下四个基本操作 : 所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(即出栈)。 将spsr_mode寄存器内容复制到cpsr中,使得cpsr从相应的spsr中恢复,即恢复被中断的程序工作状态。 根据异常类型将pc变回到用户指令流中相应指令处。 最后清除cpsr中的中断禁止标志位i/f。,r14_=return link spsr_ _=cpsr cspr4:0= exception mode number cspr5=0 cspr7=1 if =reset or riq then cspr6=1 pc=exception vector address,处理器数据类型和长度,arm处理器支持以下数据类型: byte 字节,8位 halfword 半字,16位 (半字必须与2字节边界对准,地址低两位总为0) word 字,32位(字必须与4字节边界对准,地址的最低位为0),说明: (1) 数据类型被说明成unsigned类型时,n位数据值表示范围是02n1的非负整数,使用通常的二进制格式。 (2) 数据类型被说明成signed类型时,n位数据值表示范围是2n12n11的整数,使用二进制的补码格式。 (3) 所有的数据操作,如add,都以字进行处理。 (4) 加载和存储操作,以字节、半字或字的大小与存储器交换数据。加载时自动进行字节或半字的零扩展或符号扩展。 (5) arm指令的长度为一个字(与4字节边界对准),thumb指令的长度为一个半字(与2字节边界对准)。,3.处理器数据存储格式,存储器格式包括小端和大端两种格式。,在小端存储格式下,字或半字地址的低字节(对准字节)存放在低地址;在大端存储格式下,字或半字地址的低字节(对准字节)存放在高地址。下面举例说明大、小端存储格式对程序的影响,如图所示。,指令str r0,r1将r0中的字存入r1的地址,指令ldrb r2,r1将r1中的一个字节加载到r2。可以看到,对于r00x11223344,如果配置成小端存储格式,则r2的值为0x44;如果配置成大端存储格式,则r2的值为0x11。 arm处理器的大、小端存储格式是通过硬件配置的,如果连接有系统控制协处理器,则另当别论。小端存储格式是arm处理器的缺省格式。,arm典型流水线技术简介,三级流水线arm的组织,流水线 arm7系列的处理器采用三级流水线的组织结构,arm9系列的处理器采用五级流水线的组织结构。 流水线技术是现代微处理器普遍采用的一种技术,它可以使得几条指令并行执行,因此可以大大提高处理器的运行效率。,三级流水线分为以下三级: (1) 取指:从程序存储器中读取指令,放入流水线中。 (2) 译码:操作码和操作数被译码,决定执行什么功能,为下一个时钟周期准备数据路径所需要的控制信号。 (3) 执行:执行已译码的指令。具体过程是,指令进入数据路径,寄存器堆被读取,操作数被移位,alu进行相应的运算,将结果写到目的寄存器,同时alu运算的结果还会根据指令的要求改变寄存器的条件位。,在正常情况下,每条指令都被划分成3个时钟周期来完成,即取指、译码和执行。但对于流水线来讲,可以使得每个时钟周期完成一条指令,即每个周期流水线都有一条指令的吞吐量(throughput)。通常将这种情况称为单周期指令的三级流水线操作,如图所示。,arm寻址方式,立即寻址 寄存器寻址 寄存器间接寻址 寄存器移位寻址 基址加偏址寻址 多寄存器寻址 堆栈寻址 块拷贝寻址 相对寻址,立即寻址,立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数,这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令: add r0,r0,1 /*r0r01*/ add r0,r0,0x3f /*r0r00x3f*/ 在以上两条指令中,第二个源操作数即为立即数,要求以“”为前缀,对于以十六进制表示的立即数,还要求在“”后加上“0x”。,寄存器寻址,寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令: add r0,r1,r2 /*r0r1r2*/ 该指令的执行效果是将寄存器r1和r2的内容相加,其结果存放在寄存器r0中。,寄存器移位寻址,第二操作数为寄存器型的移位操作 在arm指令的数据处理指令中参与操作的第二操作数为寄存器型时,在执行寄存器寻址操作时,可以选择是否对第二操作数进行移位,即rm,。例如指令: add r3,r2,r1,lsr #2 ;,第二操作数移位方式 lsl:逻辑左移,空出的最低有效位用0填充。 lsr:逻辑右移,空出的最高有效位用0填充。 asl:算术左移,由于左移空出的有效位用0填充,因此 它与lsl同义。 asr:算术右移,算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用0填充,如果是负数用1填充。 ror:循环右移,移出的字的最低有效位依次填入空出的最高有效位。 rrx:带扩展的循环右移。将寄存器的内容循环右移1位,空位用原来c标志位填充。,寄存器间接寻址,寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令: ldr r0,r1 /*r0r1*/ str r0,r1 /*r1r0*/ 第一条指令将以r1的值为地址的存储器中的数据传送到r0中。第二条指令将r0的值传送到以r1的值为地址的存储器中。,基址加偏移量寻址,基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令又可以分为以下几种形式: 前变址模式: ldr r0,r1,4;r0r14 后变址模式: ldr r0,r1 ,4;r0r1、r1r14 自动变址模式: ldr r0,r1,4! ;r0r14、r1r14,基址加偏移量寻址,基址寄存器的地址偏移可以是一个立即数,也可以是另一个寄存器,并且在加到基址寄存器前还可以经过移位操作,如下所示: ldr r0,r1,r2;r0mem32r1+r2 ldr r0,r1,r2,lsl #2;r0r1+r2*4 但常用的是立即数偏移的形式,地址偏移为寄存器形式的指令很少使用。,多寄存器寻址 多寄存器寻址是指一次可以传送多个寄存器的值,允许一条指令一次传送16个寄存器的任何子集,包括16个寄存器。例: ldmia r1,r0,r2,r5 ; r0r1 ; r2r1+4 ; r5r1+8 由于传送的数据总是32位的字,因此基址寄存器r1应当字对准。这条指令是将r1指向的连续存储单元的内容送到寄存器r0、r2和r5。,堆栈寻址,堆栈是一种数据结构,按先进后出(first in last out,filo)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(full stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(empty stack)。 即访问存储器时,存储器的地址向高地址方向生长,称为递增堆栈(ascending stack)。 存储器的地址向低地址方向生长,称为递减堆栈(descending stack)。,堆栈寻址,四种类型的堆栈工作方式 : 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。,块拷贝寻址,块拷贝寻址是多寄存器传送指令ldm/stm的寻址方式。ldm/stm指令可以把存储器中的一个数据块加载到多个寄存器中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东江门市蓬江区教师招聘50人(贵州师范大学专场编制)笔试参考题库及答案解析
- 2026山东省环科院股份有限公司及权属企业校园招聘33人考试参考试题及答案解析
- 2026黑龙江哈尔滨电气国际工程有限责任公司招聘机械工程师笔试备考题库及答案解析
- 2026广东广州白云区梓元岗中学招聘3人考试参考试题及答案解析
- 2026海南儋州洋浦招聘13人考试参考试题及答案解析
- 2026四川成都市武侯区爱康国宾招聘口腔医生3人考试参考题库及答案解析
- 2026广西南宁市隆安县城厢镇招聘党建联络员1人笔试备考试题及答案解析
- 医院内部审计相关制度
- 办公室内部管理规章制度
- 中心内部采购管理制度
- GB/T 18998.3-2003工业用氯化聚氯乙烯(PVC-C)管道系统第3部分:管件
- 2023年一级建造师机电实务真题及答案解析
- 高校辅导员应聘考试真题及答案
- 地理课堂教学技能课件
- 电气设备预防性试验合同范本-
- 赣美版八年级美术下册全册课件汇总
- 事业单位人事管理条例完整版x课件
- 高处作业安全技术交底-
- 人美版四年级下册美术《鸢尾花》课件
- 关键工序一览表
- 2022年书法五下教案河北美术出版社
评论
0/150
提交评论