ARM体系结构与接口技术(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ARM920TDMA处理器是哈佛结构,包括取指、译码、执行、存储、写入的五级流水线。包括cp14和cp15两个协处理器。16k数据缓存和16k指令缓存。虚拟地址64路相关缓存。每线8字。
ARM的基本数据类型:
ARM采用的是32位架构,基本上数据类型有以下三种:
Byte :字节,8位
Halfword:半字,16bit(半字必须与2字节边界对齐
Word:字,32bit(必须与4字节边界对齐
所有的数据类型指令的操作数都是字类型。
ARM指令编译后是4字节(与字边界对齐,Thumb指令编译后是2字节(与半字对齐
存储器大/小端
Arm支持大端模式和小端模式。在大端模式下,一个字的高地址放的是数据的地位,在小端模式下,数据的低地址放的是数据的低位。
ARM920T,有7中工作模式:
用户模式(User,正常程序执行模式。
快速中断模式(FIQ,当一个高优先级中断产生时将会进入该模式,一般用于高速数据传输和通道处理。
外部中断模式(IRQ,当一个低优先级中断产生时将会进入该模式,一般用于通常的中断处理
特权模式(Supervise,当复位或软中断指令执行时进入该模式,是一种供操作系统使用的保护模式。
数据访问中止模式(abort,当存取异常时将会进入该模式,用于虚拟存储或存储保护未定义指令中止模式(undef,当执行未定义指令时进入该模式,有时用于通过软件仿真协处理器硬件的工作方式
系统模式(system使用和user模式相同的寄存器集模式,用于运行特权级操作系统任务
除了用户模式,其他六中均为特权模式。在特权模式下,程序可以访问所有的系统资源,也可以任意的进行处理器模式切换。
流水线的概念与原理
处理器按照一系列的步骤来执行每一条指令,典型的步骤如下:
1、从存储器读取指令(fetch
2、译码以鉴别它是属于哪一条指令(decode
3、从指令中提取指令的操作数(这些操作数往往存在于寄存器中(reg
4、将操作数进行组合以得到结果或存储器地址(ALU
5、如果需要,则访问存储器以存储数据(mem
6、将结果写回到寄存器堆(res
流水线的分类:
1、3级流水线ARM组织
取指令—>译码—>执行
2、5级流水线ARM组织
取指令—>译码—>执行—>缓冲/数据—>回写
3、6级流水线ARM组织
取指令—>发射—>译码—>执行—>存储—>回写
影响流水线性能的因素:
1、互锁:即一条指令的结果被用作下一条指令的操作数
2、跳转指令:
ARM为微处理器指令系统
ARM处理器的寻址方式:
1、立即数寻址方式
2、寄存器寻址方式
3、寄存器移位寻址方式
内存访问指令寻址方式:
内存访问指令的寻址方式可以分为以下几种
1、字及无符号字节的load/store指令的寻址方式
2、杂类load/store指令的寻址方式
3、批量load/store指令的寻址方式
4、协处理器load/store指令的寻址方式
ARM处理器的指令集
操作数指令集:
MOV:执行的结果就是把一个数N送到目标寄存器Rd,其中N可以是寄存器也可以是立即数
MVN:是反相传送指令,它将操作数的反码传送到目的寄存器,多用于向寄存器传送一个负数或者生成位掩码。
AND:指令将shifter_operand表示的数值与寄存器Rn的值按位做逻辑与操作,并将结果保存到目标寄存器Rd中,同时根据操作的结果更新CPSR寄存器
EOR:指令时将寄存器Rn中的值和shifter_operand的执行行按位异或操作,并将执行结果存储到目的寄存器Rd中,同时根据指令的执行结果更新到 CPSR中相应的条件标志位
SUB:指令从急促安全Rn中减去shifter_operand表示的数值,并将结果存到目标寄存器Rd中,同时更具指令的执行结果设置CPSR中相应的标志位
RSB :指令从寄存器shifter_operand中减去Rn表示的数值,并将结果保存到目标寄存器Rd中,同时更具指令的执行结果设置CPSR中的相应位。
ADC:指令将寄存器shifter_operand的值加上Rn表示的值,再加上CPSR中的C 条件标志位的值,并将结果保存到目标寄存器Rd中,同时根据指令的执行结果设置CPSR中相应的标志位
SBC指令用于执行操作数大于32位时的减法操作。该指令从寄存器Rn中减去shifter_operand表示的数值,再减去寄存器CPSR中C条件标志位的反码,并将结果保存到目标寄存器Rd中,同时根据指令的执行结果哦设置CPSR中相应的标志位。
RSC指令从寄存器shifter_operand中减去Rn表示的数值,再减去寄存器CPSR 中C条件标志位的反码,并将结果保存到目标寄存器Rd中,同时根据指令的执行结果设置CPSR 中相应的标志位
TST 测试执行用于将一个寄存器的值和一个算术值进行比较,条件标志位根据两个操
作数做逻辑与后的结果设置。
TEQ 指令用于将一个寄存器的值和一个算术值做比较,条件标志位根据两个操作数做逻辑异或后的结果设置,以便以后的指令根据相应的条件标志来判断是否执行。
CMP 指令使用寄存器Rn的值减去shifter_operand的值,根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。
CMN 指令使用寄存器Rn的值将去shifter_operand表示的负数值,根据操作的结果跟新CPSR中相应的条件标志位,以便后面的指令更具相应的条件标志来判断是否执行。
ORR 位逻辑或操作指令,它将第二个源操作数shifter_operand的值与寄存器Rn 的值按位做逻辑或操作,并将结果保存到Rd中
BIC 位清零指令,将寄存器Rn中的值与第二个源操作数shifter_operand的值的反码按位做逻辑与操作,并将结果保存到目标寄存器中
乘法指令集
ARM异常中断处理概述
ARM处理器中有7中类型的异常,按优先级从高到低的排序如下:复位异常(reset、数据异常(data abort、快速中断异常(FIQ、外部中断异常(IRQ、预取异常(prefetch abort、软中断异常(swi和未定义异常(undefined instruction。
当异常发生的时候处理器会把PC设置为一个特定的存储器地址,之一地址房子被称为向量表的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理摸个异常或者中断的子程序。