




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章ARM技术与ARM体系构造本章主要引见ARM处置器的产生及版本开展历史,以及各个版本的典型处置器及运用情况和性能分析;ARM处置器的内核调试构造,重点分析了ARM7TDMI-S、ARM9TDMI两种构造;ARM处置器的任务方式及存放器组织构造,分析了在什么情况下进入到相应的任务方式;ARM处置器支持的内存数据存储格式,分为大端格式和小端格式;最后引见了ARM7的三级流水线运转机制和ARM9的五级流水线运转机制。内容提要2.1ARM体系构造版本与内核2.2ARM内核模块2.3ARM处置器的任务方式2.4ARM内部存放器2.5ARM异常处置2.6存储方式与存储器映射机制2.7ARM流水线技术分析2.5ARM异常处置异常通常定义为:处置器需求中止指令正常执行的任何情形并转向相应的处置,包括ARM内核产生复位,取指或存储器访问失败,遇到未定义指令,执行软件中断指令,或者出现外部中断等。大多数异常都对应一个软件的异常处置程序,也就是在异常发生时执行的软件程序。
2.5.1 异常入口ARM处置器的异常分为数据中止、快速中断恳求、普通中断恳求、预取指中止、软件中断、复位及未定义指令共7种。异常类型处理器模式优先级向量表偏移复
位SVC10x00000000未定义指令UND60x00000004软件中断SWISVC60x00000008预取指中止ABT50x0000000c数据中止ABT20x00000010保留//0x00000014IRQ中断IRQ40x00000018FIQ中断FIQ30x0000001c1.复位具有最高的优先级,是系统启动〔或芯片复位〕时调用的程序。复位程序对异常处置程序和系统进展初始化〔包括配置储存器和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位自动恢复为异常发生前的值。VectorTableFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x00异常处置当异常产生时,ARMcore:拷贝CPSR到SPSR_<mode>设置适当的CPSR位:改动处置器形状进入ARM形状改动处置器方式进入相应的异常方式设置中断制止位制止相应中断(假设需求)保管前往地址到LR_<mode>设置PC位相应的异常向量前往时,异常处置需求:从SPSR_<mode>恢复CPSR从LR_<mode>恢复PCNote:这些操作只能在ARM态执行.2.6存储方式与存储器映射机制ARM处置器地址空间大小为4G字节,这些字节的单元地址是一个无符号的32位数值,其取值范围为0~232-1。各存储单元地址作为32位无符号数,可以进展常规的整数运算。当程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。2.6.1 数据存储格式小端存储格式〔Little-Endian〕大端存储格式〔Big-Endian〕TheARM可以用little/bigendian格式存取数据.r0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587011223344312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianR2=0x44R2=0x11Formoreinformation,see:“ApplicationNote:BigandLittleEndianByteAddressing〞字节顺序2.6.2 非对齐存储器地址访问问题分析1.非对齐的指令预取操作假设是在ARM形状下将一个非对齐地址写入PC,那么数据在写入PC时数据的第0位和第1位被忽略,最终PC的bit[1:0]为0;假设是在Thumb形状下将一个非对齐地址写入PC,那么数据在写入PC时数据的第0位被忽略,最终PC的bit[0]为0。2.非对齐地址内存的访问操作
对于LOAD/STORE操作,系统定义了下面3种能够的结果:
*执行结果不可预知
*忽略字单元地址低两位的值,即访问地址为字单元;忽略半字单元最低位的值,即访问地址为半字单元。这种忽略是由存储系统自动实现的。*在LDR和SWP指令中,对存储器访问忽略呵斥地址不对齐的低地址位,然后运用这些低地址位控制装载数据的循环。2.7ARM流水线技术分析ARM7流水线技术与三级流水线运转情况分析ARM9流水线技术与五级流水线互锁分析ARM10E系列概述ARM7流水线技术为添加处置器指令流的速度,ARM7系列运用3级流水线.允许多个操作同时处置,比逐条指令执行要快。PC指向正被取指的指令,而非正在执行的指令FetchDecodeExecute从存储器中读取指令解码指令存放器读〔从存放器Bank〕移位及ALU操作存放器写〔到存放器Bank〕PC PCPC-4 PC-2PC-8 PC-4ARM Thumb最正确流水线该例中用6个机器周期执行了6条指令一切的操作都在存放器中〔单周期执行〕指令周期数(CPI)=1机器周期操作周期 1 2 3 4 56ADDSUBMOVANDORREORCMPRSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetchLDR流水线举例该例中,用6机器周期执行了4条指令指令周期数(CPI)=1.5机器周期周期操作 1 2 3 4 5 6ADDSUBLDRMOVANDORRFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDataWritebackFetchDecodeExecuteFetchDecodeFetch分支流水线举例流水线被阻断留意:内核运转在ARM形状周期123450x8000BL0x8004X0x8008XX0x8FECADD0x8FF0SUB0x8FF4MOV地址操作FetchDecodeExecuteFetchDecodeExecuteFetchDecodeFetchFetchDecodeExecuteLinkretAdjustFetchDecodeFetch目的地址中断流水线举例周期12345678IRQIRQ中断的反响时间最小=7机器周期地址操作FDELinkretAdjustFFDecodeIRQLinkretExecuteIRQAdjustFDEFDFFDEFDFF0x8000ADD0x8008MOV0x0018B(to0xAF00)0x8004SUB0x001CXX0x0020XXX0xAF00STMFD0xAF04MOV0xAF08LDR0x800CXDARM9TDMI流水线的变化InstructionFetchShift+ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARMorThumb
InstDecodeRegSelectRegReadShiftALURegWriteThumb®ARM
decompressARMdecodeInstructionFetchFETCHDECODEEXECUTEARM7TDMI周期操作ADD R1,R1,R2SUB R3,R4,R1ORR R8,R3,R4AND R6,R3,R1EOR R3,R1,R2LDR R4,[R7]最正确流水线本例中,用了6个机器周期执行6条指令,CPI=1机器周期。LDR指令没有引起流水线互锁123456789FDEWFDEWFEWFDEWFDWEFDEWF–取指〔Fetch〕D–解码〔Decode〕 E–执行〔Execute〕I–互锁〔Interlock〕M–存储器〔Memory〕W–写回〔Writeback〕MD周期操作ADD R1,R1,R2SUB R3,R4,R1ORR R8,R3,R4AND R6,R3,R1EOR R3,R1,R212345678LDR R4,[R7]9FDEFDEWFDEWFDEWFDWEFDEWF–取指〔Fetch〕D–解码〔Decode〕 E–执行〔Execute〕I–互锁〔Interlock〕M–存储器〔Memory〕W–写回〔Writeback〕ILDR互锁本例中,用了7个机器周期执行6条指令,CPI=1.2机器周期。LDR指令之后立刻跟一条数据操作指令,由于运用了一样的存放器,将会导致互锁。WIM互锁:当前指令的执行能够需求前面指令的执行结果,但这时前面的指令还没有执行终了,从而会导致当前指令的执行无法获得合法的操作数,这时会引起流水线的等待,这种景象称为互锁。LDM互锁(1)本例中,用了8个机器周期执行5条指令,CPI=1.6在LDM期间,有并行的存储器访问和回写周期周期操作LDMIA R13!,{R0-R3}SUB R9,R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业安置职工合同范本
- 地板安装劳务合同范本
- 土地整治村里合同范本
- 合作经营广告装饰公司合同
- 保洁精开荒合同范本
- 定向开发房地产合同
- 烟囱整改合同范本
- 校园门窗维修合同范本
- 土地纠纷合同范本模板
- 转让厂房定金合同范本
- 颈椎病诊治指南
- 会计师事务所财政支出绩效评价业务指引
- 综合能力测试真题与答案解析
- 2022年防腐防火涂装、钢结构变形检测试卷及答案
- 【课件】抒情与写意-文人画 课件高中美术人美版(2019)美术鉴赏
- 战略管理学英文课件:14 Leadership and Strategic Change
- 质性研究方法3-质性研究的编码课件
- 内科学课件:心律失常(二)
- 心理治疗师考试精读与习题
- 加油站安全设施设计专篇
- 第十四章 五四时期的政治思想.课件电子教案
评论
0/150
提交评论