首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM详细介绍(6)

ARM详细介绍(6)

ARMThumb状态转换
在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且该转变不影响处理器的工作模式和相应寄存器中的内容。

进入Thumb状态:当操作数寄存器的状态位(位[0])为1时,执行BX指令。

进入ARM状态:当操作数寄存器的状态位(位[0])为0时,执行BX指令。

RISC技术

嵌入式微处理器可以分为两类:CISCRISC

CISC
Complex Instruction Set Computer):复杂指令系统计算机;随着计算机技术的发展而不断引入新的复杂的指令集,计算机的体系结构会越来越复杂。

大约有20%的指令会被反复使用,占整个程序代码的80%,而余下的80%的指令却不经常使用,在程序设计中只占20

RISC
Reduced Instruction Set Computer):精简指令系统计算机;-采用固定长度的指令格式

使用单周期指令

大量使用寄存器

可用加载/存储指令批量传输数据

在循环处理中使用地址的自动增减

RISC技术与CISC技术比较

RISC技术
ARM
处理器采用加载/存储(Load/Store)体系结构是典型的RISC处理器,即只有Load/Store的存/取指令可以访问存储器,其余指令都不允许进行存储器操作。

RISC
体系结构基本特点:

1)大多数指令只需要执行简单和基本的功能,其执行过程在一个机器周期内完成。

2)只保留加载/存储指令。操作数由加载/存储指令从存储器取出放寄存器内操作。

3)芯片逻辑不采用或少采用微码技术,而采用硬布线逻辑。

4)减少指令数和寻址方式。

5)指令格式固定,指令译码简化。

6)优化编译。

RISC技术

ARM
体系结构还采用了一些特别的技术:

所有的指令都可根据前面的执行结果决定是否被执行,提高了指令的执行效率。

可用Load/Store指令批量传输数据,以提高数据的传输效率。

可在一条数据处理指令中同时完成逻辑处理和移位处理。

RISC
CISC各有优势,界限并不那么明显。


流水线技术

是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术;

程序中的指令仍是一条条顺序执行,但可以预先取若干条指令,并在当前指令尚未执行完时,提前启动后续指令的另一些操作步骤,从而可加快程序的运行速度;


开发和设计嵌入式系统的过程中,CPU的性能是一个非常重要的考虑因素。
流水线技术是在本质上影响程序执行速度的因素。

由于计算机中一条指令的各个执行阶段相对独立,因此,现代CPU大多设计成流水线型的机器,在这种类型机器中几个指令可以并行执行。采用流水线的重叠技术大大提高了CPU的运行效率。

当流水线内部的信息通畅流动时,CPU流水线能够工作得最好。

但实际应用中,指令各执行阶段的操作时间长短不同,有一些指令序列可能会打断流水线内的信息流,所以有时流水线操作不十分通畅,会暂时降低CPU的执行速度。

单周期指令的执行过程

ARM3级流水线
ARM7
架构采用了一个3段的流水线:

1)取指:将指令从内存中取出来。

2)译码:操作码和操作数被译码以决定执行什么功能。为下一周期准备数据路径需要的控制信号。这一级指令占有译码逻辑,而不是占有数据路径

3)执行:执行已译码的指令。指令占有数据路径,寄存器堆栈被读取,操作数在桶行移位器中被移位。ALU产生运算结果并回写到目的寄存器中,ALU结果根据指令需求更改状态寄存器的条件位。

流水线模式下PC的更改过程

多周期ARM指令的3级流水线操作
数据路径涉及到所有执行周期、地址计算和数据传送。译码逻辑总是产生数据路径在下一个周期使用的控制信号,因此除译码周期以外,在STR地址计算周期也产生数据传送所需的控制信号。
取指的存储器访问和执行的数据路径占用都是不可同时共享的资源,对于多周期指令来说,如果指令复杂以至于不能在单个时钟周期内完成执行阶段,就会产生流水线阻塞。


ARM5级流水线
ARM9
StrongARM架构都采用了5级流水线
.
增加了I-CacheD-Cache,把存储器的取指与数据存取分开;

增加了数据写回的专门通路和寄存器;

把指令的执行过程分割为5部分
:
取指:将指令从指令存储器中取出,放入指令流水线中。

指令译码:对指令进行译码,从寄存器堆中读取寄存器操作数。

执行:把一个操作数移位,产生ALU结果。如果指令是LoadStore,在ALU中计算存储器的地址。

数据缓存:如果需要,访问数据存储器;否则,ALU的结果只是简单地缓冲一个时钟周期,以便使所有指令具有同样地流水线流程。

写回:将指令产生地结果写回到寄存器堆。





返回列表