第2章ARM技术与ARM体系结构(2)14563

上传人:痛*** 文档编号:243861634 上传时间:2024-10-01 格式:PPTX 页数:32 大小:187.22KB
返回 下载 相关 举报
第2章ARM技术与ARM体系结构(2)14563_第1页
第1页 / 共32页
第2章ARM技术与ARM体系结构(2)14563_第2页
第2页 / 共32页
第2章ARM技术与ARM体系结构(2)14563_第3页
第3页 / 共32页
点击查看更多>>
资源描述
Click to edit Master text styles,Second level,*,TM,Click to Edit Master Title Style,*,第,2,章,ARM,技术与,ARM,体系结构,本章主要介绍,ARM,处理器的产生及版本发展历史,以及各个版本的典型处理器及应用情况和性能分析;,ARM,处理器的内核调试结构,重点分析了,ARM7TDMI-S,、,ARM9TDMI,两种结构;,ARM,处理器的工作模式及寄存器组织结构,分析了在什么情况下进入到相应的工作模式;,ARM,处理器支持的内存数据存储格式,分为大端格式和小端格式;最后介绍了,ARM7,的三级流水线运行机制和,ARM9,的五级流水线运行机制。,内容提要,2,1 ARM,体系结构版本与内核,2,2 ARM,内核模块,2,3 ARM,处理器的工作模式,2,4 ARM,内部寄存器,2,5 ARM,异常处理,2,6,存储方式与存储器映射机制,2,7 ARM,流水线技术分析,2.5 ARM,异常处理,异常通常定义为:处理器需要中止指令正常执行的任何情形并转向相应的处理,包括,ARM,内核产生复位,取指或存储器访问失败,遇到未定义指令,执行软件中断指令,或者出现外部中断等。,大多数异常都对应一个软件的异常处理程序,也就是在异常发生时执行的软件程序。,2,5,1,异常入口,ARM,处理器的异常分为数据中止、快速中断请求、普通中断请求、预取指中止、软件中断、复位及未定义指令共,7,种。,异常类型,处理器模式,优先级,向量表偏移,复 位,SVC,1,0 x00000000,未定义指令,UND,6,0 x00000004,软件中断,SWI,SVC,6,0 x00000008,预取指中止,ABT,5,0 x0000000c,数据中止,ABT,2,0 x00000010,保留,/,/,0 x00000014,IRQ,中断,IRQ,4,0 x00000018,FIQ,中断,FIQ,3,0 x0000001c,1,复位,具有最高的优先级,是系统启动(或芯片复位)时调用的程序。复位程序对异常处理程序和系统进行初始化(包括配置储存器和,Cache,)。同时要保证在,IRQ,和,FIQ,中断允许之前初始化外部中断源,避免在没有设置好相应的处理程序前产生中断。还要设置好各种处理器模式的堆栈指针。,2,引起,未定义指令异常,:,ARM,试图执行一条真正的未定义指令;,ARM,遇到一条协处理器指令,可是系统中的协处理器硬件并不存在;,ARM,遇到一条协处理器指令,系统中协处理器硬件也存在,可是,ARM,不是在超级用户模式。,解决方法:,在处理程序中执行软协处理器仿真;,禁止在非超级用户模式下操作;,报告错误并退出。,3,数据中止异常,指示访问了无效的存储器地址,或者当前代码没有正确的数据访问权限。,4,预取指中止,由于处理器预取的指令地址不存在,或者地址无法访问,当被预取的指令执行时,发生预取指中止异常。,5.,FIQ,中断,的优先级比,IRQ,中断,的优先级要高,且内核进入,FIQ,处理程序时,把,FIQ,和,IRQ,都禁止,6,软中断(,SWI,),和未定义指令异常的优先级最低,共享同一优先级,两者不可能同时出现。,2,5,2,异常产生过程与返回,在异常发生后,,ARM,内核会作以下工作:,1.,在适当的,LR,中保存下一条指令的地址,当异常入口来自:,ARM,状态,那么,ARM,将当前指令地址加,4,或加,8,复制(取决于异常的类型)到,LR,中;,为,Thumb,状态,那么,ARM,将当前指令地址加,2,、,4,或加,8,(取决于异常的类型)复制到,LR,中;异常处理器程序不必确定状态。,2.,将,CPSR,复制到适当的,SPSR,中;,3.,将,CPSR,模式位强制设置为与异常类型相对应的值;,4.,强制,PC,从相关的异常向量处取指。,当异常结束时,异常处理程序必须:,1.,将,LR,(,R14,)中的值减去偏移量后存入,PC,,偏移量根据异常的类型而有所不同;,2.,将,SPSR,的值复制回,CPSR,;,3.,清零在入口置位的中断禁止标志。,注,:恢复,CPSR,的动作会将,T,、,F,和,I,位自动恢复为异常发生前的值。,Vector Table,FIQ,IRQ,(,Reserved),Data Abort,Prefetch Abort,Software Interrupt,Undefined Instruction,Reset,0,x1C,0,x18,0,x14,0,x10,0,x0C,0,x08,0,x04,0,x00,异常处理,当异常产生时,ARM core:,拷贝,CPSR,到,SPSR_,设置适当的,CPSR,位:,改变处理器状态进入,ARM,状态,改变处理器模式进入相应的异常模式,设置中断禁止位禁止相应中断(如果需要,),保存返回地址到,LR_,设置,PC,位相应的异常向量,返回时,异常处理需要:,从,SPSR_,恢复,CPSR,从,LR_,恢复,PC,Note:,这些操作只能在,ARM,态执行.,2,6,存储方式与存储器映射机制,ARM,处理器地址空间大小为,4G,字节,这些字节的单元地址是一个无符号的,32,位数值,其取值范围为,0232-1,。各存储单元地址作为,32,位无符号数,可以进行常规的整数运算。,当程序正常执行时,每执行一条,ARM,指令,当前指令计数器加,4,个字节;每执行一条,Thumb,指令,当前指令计数器加,2,个字节。,2,6,1,数据存储格式,小端存储格式(,Little-Endian,),大端存储格式(,Big-Endian,),The ARM,可以用,little/big endian,格式存取数据,.,r0=0 x11223344,STR r0,r1,LDRB r2,r1,r1=0 x100,Memory,3 2 1 0,0 1 2 3,Byte Lane,31,24,23,16,15,8,7,0,11,22,33,44,31,24,23,16,15,8,7,0,11,22,33,44,31,24,23,16,15,8,7,0,11,22,33,44,31,24,23,16,15,8,7,0,00,00,00,44,31,24,23,16,15,8,7,0,00,00,00,11,Little endian,Big endian,R2=0 x44,R2=0 x11,For more information,see:,“,Application Note:Big and Little Endian Byte Addressing,”,字节顺序,2,6,2,非对齐存储器地址访问问题分析,1,非对齐的指令预取操作,如果是在,ARM,状态下将一个非对齐地址写入,PC,,则数据在写入,PC,时数据的第,0,位和第,1,位被忽略,最终,PC,的,bit1,:,0,为,0,;如果是在,Thumb,状态下将一个非对齐地址写入,PC,,则数据在写入,PC,时数据的第,0,位被忽略,最终,PC,的,bit0,为,0,。,2,非对齐地址内存的访问操作,对于,LOAD/STORE,操作,系统定义了下面,3,种可能的结果:,*执行结果不可预知,*忽略字单元地址低两位的值,即访问地址为字单元;忽略半字单元最低位的值,即访问地址为半字单元。这种忽略是由存储系统自动实现的。,*在,LDR,和,SWP,指令中,对存储器访问忽略造成地址不对齐的低地址位,然后使用这些低地址位控制装载数据的循环。,2.7 ARM,流水线技术分析,ARM7,流水线技术 与三级流水线运行情况分析,ARM9,流水线技术与五级流水线互锁分析,ARM10E,系列概述,ARM7,流水线技术,为增加处理器指令流的速度,,ARM7,系列使用3级流水线,.,允许多个操作同时处理,比逐条指令执行要快。,PC,指向正被取指的指令,而非正在执行的指令,Fetch,Decode,Execute,从存储器中读取指令,解码指令,寄存器读(从寄存器,Bank),移位及,ALU,操作,寄存器写(到寄存器,Bank,),PCPC,PC-4PC-2,PC-8PC-4,ARMThumb,最佳流水线,该例中用6个机器周期执行了6条指令,所有的操作都在寄存器中(单周期执行),指令周期数(,CPI)=1,机器周期,操作,周期,1 2 3 45 6,ADD,SUB,MOV,AND,ORR,EOR,CMP,RSB,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,机器周期,周期,操作,123456,ADD,SUB,LDR,MOV,AND,ORR,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Data,Writeback,Fetch,Decode,Execute,Fetch,Decode,Fetch,分支流水线举例,流水线被阻断,注意:内核运行在,ARM,状态,周期,1 2 3 4 5,0,x8000 BL,0,x8004 X,0,x8008 XX,0,x8FEC ADD,0,x8FF0 SUB,0,x8FF4 MOV,地址,操作,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,0,x8000 ADD,0,x8008 MOV,0,x0018 B(to 0 xAF00),0,x8004 SUB,0,x001C XX,0,x0020 XXX,0,xAF00 STMFD,0,xAF04 MOV,0,xAF08 LDR,0,x800C X,D,ARM9TDMI,流水线的变化,Instruction,Fetch,Shift+ALU,Memory,Access,Reg,Write,Reg,Read,Reg,Decode,FETCH,DECODE,EXECUTE,MEMORY,WRITE,ARM9TDMI,ARM or ThumbInst Decode,Reg Select,Reg,Read,Shift,ALU,Reg,Write,Thumb,ARMdecompress,ARM decode,Instruction,Fetch,FETCH,DECODE,EXECUTE,ARM7TDMI,周期,操作,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,指令没有引起流水线互锁,1,2,3,4,5,6,7,8,9,F,D,E,W,F,D,E,W,F,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),M,D,周期,操作,ADD R1,R1,R2,SUB R3,R4,R1,ORR R8,R3
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!