- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3ARM处理器的编程模的式
第三章 ARM处理器的编程模式;一、ARM典型流水线技术;处理器按照一系列步骤来执行每一条指令。典型的步骤为:
1)从存储器读取指令(fetch)
2)译码以鉴别它是哪一类指令(dec)
3)从寄存器堆取得所需的操作数(reg)
4)将操作数进行组合以得到结果或存储器地址(ALU)
5)如果需要,则访问存储器存取数据(mem)
6)将结果回写到寄存器堆(res);在当前指令结束之前就开始执行下一条指令。
改善了硬件资源的使用率和处理器的吞吐量。;流水线中的冒险
“写后读”冒险
当一条指令的结果被用做下一条指令的操作数时,流水线操作被中断。;“转移指令”冒险
后续读取到的指令被丢弃;(二)ARM7的三级流水线;单周期指令的3级流水线操作; 优秀的流水线结构;多周期指令的3级流水线操作;T4周期: ①指令2地址计算产生下一周期数据路
径需要的控制信号。
②指令3??码产生下一周期数据路径需要的控制信号。
二者都产生下一周期数据路径控制信号,数据路径控制冲突,因此断流。
T5周期: ①指令2 STB访问数据存储器
②指令5取指访问程序存储器
二者都访问存储器,造成访问存储器冲突,在此断流。
①指令3译码
②指令4的译码则不得不推迟一个周期。 ;(三)ARM9TDMI的五级流水线(了解);5级流水线的ARM9内核是哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以在同一周期进行;
3级流水的ARM7内核是指令和数据总线复用的冯.诺依曼架构,指令和数据的读取不能在同一周期进行;
5级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中, 每一级流水的操作简洁,提升了处理器的主频。;二、ARM处理器的工作状态;在程序执行的过程中,处理器可以在两种状态下切换
ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。
ARM指令集和Thumb指令集都有相应的状态切换命令。
ARM处理器在开始执行代码时,只能处于ARM状态。;ARM处理器在两种工作状态之间切换方法:
进入Thumb状态:
当操作数寄存器Rm的状态位bit[0]为1时,执行BX Rm指令进入Thumb状态。
如果处理器在Thumb状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort和SWI)返回时,自动切换到Thumb状态。
进入ARM状态:
当操作数寄存器Rm的状态位bit[0]为0时,执行BX Rm指令进入ARM状态。
通过异常处理进入ARM状态。;三、 ARM处理器工作模式;User:用户模式。
正常程序执行的模式,非特权级模式。
IRQ:中断模式。
用于通用中断处理。IRQ中断响应时进入此模式。
FIQ:快速中断模式。
用于高速数据传输和通道处理。FIQ中断响应时进入此模式。
SVC:管理模式。
供操作系统使用的一种保护模式,系统复位和软件中断响应时进入此模式。
Abort:中止模式。
遇到存储器访问出错时进入此模式。
Undef:未定义模式。
遇到未定义指令时进入此模式,支持硬件协处理器的软件仿真。
System:系统模式。
特权级的User模式,用于支持操作系统的特权任务等。;用户模式的特点:
应用程序不能够访问受操作系统保护的系统资源。
应用程序不能进行处理器模式的切换。
特权模式的特点:
应用程序可以访问所有的系统资源。
应用程序可以任意地进行处理器模式的切换。
注:除系统模式外的特权模式又称为异常模式。;异常模式:
除了可以通过程序切换进入异常模式外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。
FIQ模式 (_fiq): 快速中断请求
IRQ模式 (_irq): 中断请求
管理模式 (_svc):
①系统上电复位后进入管理模式,运行系统初始化程序,如中断允许/禁止,主时钟设置,SDRAM配置,各个功能模块初始化等。
②当执行软件中断指令SWI时,进入管理模式。
中止模式 (_abt): 处理存储器故障。当数据或指令预取中止时进入该模式。
未定义模式(_und): 处理未定义指令。当遇到未定义指令时进入该模式。;系统模式
不属于异常模式,不是通过异常进入的。系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行模式的切换。它主要供操作系统使用,操作系统的一些特权任务可以使用这个模式访问一些受控的资源。;CPSR(当前程序状态寄存器)的低5位用于定义当前操作模式 , 如图示;处理器模式的切换方式:
软件控制进行切换。
当处理器处于特权模式时,用指令向CPSR的M[4:0]字段写入特定的值,以进入相应的工作模式。
通过外部中断和异常进行切换。
发生异
文档评论(0)