3arm的体系结构与指令集_第1页
3arm的体系结构与指令集_第2页
3arm的体系结构与指令集_第3页
3arm的体系结构与指令集_第4页
3arm的体系结构与指令集_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、ARM的体系结构和指令集胡振亮典型的ARM体系结构包含有32位ALU、31个32位通用寄存器及6位状态寄存器、328位乘法器、3232位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据地址寄存器等ALUARM体系结构的ALU与常用的ALU逻辑结构基本相同,由两个操作数锁存器、加法器、逻辑功能、结果及零检测逻辑构成。ALU的最小数据通路周期包含寄存器读时间、移位器延迟、ALU延迟、寄存器写建立时间、双相时钟间非重叠时间等几部分。桶形移位寄存器ARM采用了3232位桶形移位寄存器,左移右移n位、环移n位和算术右移n位等都可以一次完成,可以有效的减少移位的延迟时间。在桶形移位寄存器中,所有的输入

2、端通过交叉开关(Crossbar)与所有的输出端相连。交叉开关采用NMOS晶体管来实现高速乘法器ARM为了提高运算速度,采用两位乘法的方法,2位乘法可根据乘数的2位来实现“加移位”运算。ARM的高速乘法器采用328位的结构,完成322位乘法也只需5个时钟周期。浮点部件在ARM体系结构中,浮点部件作为选件可根据需要选用,FPA10浮点加速器以协处理器方式与ARM相连,并通过协处理器指令的解释来执行。控制器ARM的控制器采用硬接线的可编程逻辑阵列PLA,其输入端有14根、输出端有40根,分散控制Load/Store多路、乘法器、协处理器以及地址、寄存器ALU和移位器寄存器ARM内含37个寄存器,包

3、括31个通用32位寄存器和6个状态寄存器。ARM处理器发展ArchitectureFamilyARMv1ARM1ARMv2ARM2,ARM3ARMv3ARM6,ARM7ARMv4StrongARM,ARM7TDMI,ARM9TDMIARMv5ARM7EJ,ARM9E,ARM10E,XScaleARMv6ARM11, Cortex-MARMv7Cortex-A,Cortex-M,Cortex-RARMv8-左侧的一列可以视作是ARM处理器的各个“代”,而右侧则是同一代的各个“家族”(或者说“系列”)。现在基本已是ARMv7的时代,ARMv6及更早的Architecture只在一些低端的设备上能见

4、到了。而ARMv8则是ARM平台的未来时,被设计为64位的架构,显然不是主要面向移动设备的。不过到现在为止ARMv8也只是有一些资料,离真正面世还有一段时间。ARM寄存器组ARM处理器共有37个寄存器。其中包括:31个32位通用寄存器(含程序计数器PC在内),以及6个32位状态寄存器。CORTEX-A8多了三个寄存器 : R13_mon、R14_mon、CPSR_mon许多寄存器都有专门用途,并且使用别名来操作。例如:R9-SB,静态基地址寄存器。R10-SL,数据堆栈限制指针。R11-FP,(frame pointer) 帧指针。R12-IP,(Intra-Procedure-call Sc

5、ratch Register)子程序内部调用暂存寄存器。R13-SP,堆栈指针stack pointerR14-LR,连接寄存器linker register,用于跳转后返回(PCPC,程序计数器program counter,用于指向程序执行代码。寄存器使用规则CPSR:当前程序状态寄存器,其数值反映出当前程序运行的一些状态指示。SPSR:保存程序状态寄存器,在程序调用等情况下,需要保存一下当前程序状态寄存器的值(SPSR=CPSR),便于日后回复。SP(R13):堆栈指针寄存器,其值用于执行当前堆栈栈顶(或栈底)位置。LR(R14):链接返回寄存器,保存要返回的地址,PCR0 = R0 +

6、 10 特点:快,单周期;但受合法立即数的限制;寄存器寻址利用寄存器中的值作为操作数,如:ADD R0,R1,R2 -R0 = R 1 + R 2特点:也是单周期寄存器移位寻址寄存器中的值移位后得到操作数,用到桶形移位器 介绍一下桶形移位器: LSL:(逻辑左移),相当于无符号数x2; ASR: (算术右移),相当于带符号的数除2; LSR: (逻辑左移),相当于无符号数除2; ROR:(循环右移),相当于位轮换; RRX:(带扩展的循环右移),位轮换, 如:ADD R0,R1,R2,LSL #2 -R0 = R1 + R2R0 = R1,取出R1存的地址中的值,赋给R0;基址变址寻址基址寄存

7、器的内容与指令中的偏移量相加,得到有效操作数的地址,然后访问该地址空间;分三种: 1)、前索引: 如:LDR R0,R1,#4 -R1存的地址+4,访问新地址里面的值,放到R0; 2)、自动索引: 如:LDR R0, R1,#4! -在前索引的基础上,新地址回写进R1; 注:!表示回写地址 3)、后索引: 如:LDR R0 R1,#4 -R1存的地址的内容写进R0,R1存的地址+4再写进R1;多寄存器寻址一条指令完成多个寄存器的传送,最多16个寄存器; 如:STMxx R0!,R1-R5 注:xx是IDAB的任意组合:I-增;D-减;A-后;B-先; 执行这类指令要考虑如下几个问题: 1)、基址寄存器指向原始地址有没有放一个有效值? 2)、寄存器列表哪个寄存器被最先传送? 3)、存储器地址增长方向? 4)、指令执行完成后,基址寄存器有没有指向一个有效值? LDMIA R0, R1, R2, R3, R4; R1R0 ; R2R0+4 ; R3R0+8 ; R4R0+12 相对寻址相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址BL NEXT; 跳转到子程序NEXT 处执行NEXTMOV PC, LR; 从子程序返回堆栈寻址 先进先出

温馨提示

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

评论

0/150

提交评论