没有合适的资源?快使用搜索试试~ 我知道了~
ARM7与ARM9的区别及ARM体系结构
需积分: 34 9 下载量 63 浏览量
2010-06-22
10:28:34
上传
评论
收藏 21.85MB DOC 举报
温馨提示
试读
41页
ARM7与ARM9的区别及ARM体系结构,ARM7与ARM9的区别及ARM体系结构
资源推荐
资源详情
资源评论
ARM7 与 ARM9 的区别及 ARM 体系结构
一、 ARM7 与 ARM9 的区别
新一代的 ARM9 处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上
于 ARM7 处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周
期实现的。
1 时钟频率的提高
ARM7 处理器采用 3 级流水线,而 ARM9 采用 5 级流水线。增加的流水线设计提高了
时钟频率和并行处理能力。5 级流水线能够将每一个指令处理分配到 5 个时钟周期内,在
每一个时钟周期内同时有 5 个指令在执行。在同样的加工工艺下,ARM9TDMI 处理器的时
钟频率是 ARM7TDMI 的 1.8~2.2 倍。
2 指令周期的改进
指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执
行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能
的提高在 30%左右。
2.1 loads 指令矛 n stores 指令
指令周期数的改进最明显的是 loads 指令和 stores 指令。从 ARM7 到 ARM9 这两条指
令的执行时间减少了 30%。指令周期的减少是由于 ARM7 和 ARM9 两种处理器内的两个基
本的微处理结构不同所造成的。
(1)ARM9 有独立的指令和数据存储器接口,允许处理器同时进行取指和读写数据。这
叫作改进型哈佛结构。而 ARM7 只有数据存储器接口,它同时用来取指令和数据访
问。
(2)5 级流水线引入了独立的存储器和写回流水线,分别用来访问存储器和将结果写回
寄存器。
以上两点实现了一个周期完成 loads 指令和 stores 指令。
2.2 互锁(interlocks)技术
当指令需要的数据因为以前的指令没有执行完而没有准备好就会产生管道互锁。当管
道互锁发生时,硬件会停止这个指令的执行,直到数据准备好为止。虽然这种技术会增加
代码执行时间,但是为初期的设计者提供了巨大的方便。编译器以及汇编程序员可以通过
重新设计代码的顺序或者其他方法来减少管道互锁的数量。
2.3 分枝指令
ARM9 和 ARM7 的分枝指令周期是相同的。而且 ARM9TDMI 和 ARM9E-S 并没有对
分枝指令进行预测处理。
3 其它区别
ARM7 内核是 0.9MIPS/MHz 的三级流水线和冯·诺伊曼结构;
ARM9 内核是 5 级流水线,提供 1.1MIPS/MHz 的哈佛结构。
arm7 没有 mmu,arm720T 是 MMU 的;
arm9 是有 mmu 的,arm940T 只有 Memory protection unit.不是一个完整的 MMU。
ARM7TDMI 提供了非常好的性能-功耗比。它包含了 THUMB 指令集快速乘法指令和
ICE 调试技术的内核。
ARM9 的时钟频率比 ARM7 更高,采用哈佛结构区分了数据总线和指令总线。
ARM9E 从 ARM7 的 3 级流水线增加到了 5 级,ARM9E 的流水线中容纳了更多的逻辑
操作,但是每一级的逻辑操作却变得更为简单。比如原来 ARM7 的第三级流水,需要先内
部读取寄存器、然后进行相关的逻辑和算术运算,接着处理结果回写,完成的动作非常复
杂;而在 ARM9E 的 5 级流水中,寄存器读取、逻辑运算、结果回写分散在不同的流水当
中,使得每一级流水处理的动作非常简洁。这就使得处理器的主频可以大幅度地提高。因
为每一级流水都对应 CPU 的一个时钟周期,如果一级流水中的逻辑过于复杂,使得执行时
间居高不下,必然导致所需的时钟周期变长,造成 CPU 的主频不能提升。所以流水线的拉
长,有利于 CPU 主频的提高。在常用的芯片生产工艺下,ARM7 一般运行在 100MHz 左右,
而 ARM9E 则至少在 200MHz 以上。
像 ARM926EJ 和 ARM946E 这两个最常见的 ARM9E 处理器中,都带有一套存储器子
系统,以提高系统性能和支持大型操作系统。一个存储器子系统包含一个 MMU(存储器管
理单元)或 MPU(存储器保护单元)、高速缓存(Cache)和写缓冲(Write Buffer);CPU 通过该子
系统与系统存储器系统相连。
系统实时性考虑
带 MMU 和 Cache 的系统在实时性上不如一些简单的处理器,一个简单的办法是在需要
的时候关闭 MMU 和 Cache,这样就变成一个简单处理器了,可以马上提高系统实时性。
当然很多情况下这不可行;在 ARM 的 MMU 和 Cache 设计中,有一个锁定的功能,就是说
你可以指定某一块页表在 MMU 中不会被更新掉,某一段代码或数据可以在 Cache 中锁定
而不会被刷新掉;程序员可以利用这个功能来支持那些实时性要求最高的代码,保证这些
代码始终能够得到最快的响应和支持。
系统软件优化
在嵌入式系统开发中,很多系统软件优化的方法都是相同和通用的,多数情况下这种
规则也适用于 ARM9E 架构上。最重要的是 Cache 的作用,Cache 本身并不带来编程模型和
接口的变化,但是如果我们考察 Cache 的行为,就能够发现对于软件优化,Cache 是有比
较大的影响的。
Cache 在物理上就是一块高速 SRAM,ARM9E 的 Cache 组织宽度(cache line)都是 4 个
word(也就是 32 个字节);Cache 的行为受系统控制器控制而不是程序员,系统控制器会把
最近访问存储器地址附近的内容复制到 Cache 中去,这样,当 CPU 访问下一个存储器单元
的时候(这个访问既可能是取指,也可能是数据),可能这个存储器单元的内容已经在 Cache
里了,所以 CPU 不需要真的到主存储器上去读取内容,而直接读取 Cache 高速缓存上面的
内容就可以了,从而加快了访问的速度。从 Cache 的工作原理我们可以看到,其实 Cache
的调度是基于概率的,CPU 要访问的数据既可能在 Cache 中已经存在(Cache hit),也可能没
有存在(Cache miss)。在 Cache miss 的情况下,CPU 访问存储器的速度会比没有 Cache 的情
况更坏,因为 CPU 除了要从存储器访问数据以外,还需要处理 Cache hit 或 miss 的判断,
以及 Cache 内容的刷新等动作。只有当 Cache hit 带来的好处超过 Cache miss 带来的牺牲的
时候,系统的整体性能才能得到提高,所以 Cache 的命中率成为一个非常重要的优化指标。
根据 Cache 行为的特点,我们可以直观地得到提高 Cache 命中率的一些方法,如尽可能把
功能相关的代码和数据放置在一起,减少跳转次数;跳转经常会引起 Cache miss。保持合
适的函数大小,不要书写太多过小的函数体,因为线性的程序执行流程是最为 Cache 友好
的。循环体最好放置在 4 个 word 对齐的地址,这样就能保证循环体在 Cache 中是行对齐的,
并且占用最少的 Cache 行数,使得被多次调用的循环体得到更好的执行效率。
ARM9E 处理器的 DSP 运算能力
伴随应用程序的多样化和复杂化,诸如多媒体、音视频功能在嵌入式系统里面也是全
面开花。这些应用需要相当的 DSP 处理能力;如果是在传统的 RISC 架构上实现这些算法,
所需的资源(频率和存储器等)会非常不经济。ARM9E 处理器一个非常重要的优势就是拥有
轻量级的 DSP 处理能力,以非常小的成本(CPU 增加功能需要增加硬件)换来了非常实用的
DSP 性能。
因为 CPU 的 DSP 能力并不直接反映在像 DMIPS 这样的评测指标中,同时像以前的
ARM7 处理器中也没有类似的概念;所以这一点对所有使用 ARM9E 处理器进行开发的人
来说,都是需要注意的一个要点。
在从 ARM7 到 ARM9 的平台转变过程中,有一件事情是非常值得庆幸的,即 ARM9E 能够
完全地向后兼容 ARM7 上的软件;并且开发人员面对的编程模型和架构基础也保持一致。
但是毕竟 ARM9E 中增加了很多新的特性,为了充分利用这些新的资源,把系统性能优化
好,需要我们对 ARM9E 做更多深入地了解。
二、ARM 体系结构
ARM9 结构及特点
以 ARM9E-S 为例介绍 ARM9 处理器的主要结构及其特点。ARM9E-S 的结构如图 4 所
示。其主要特点如下:
(1)32bit 定点 RISC 处理器,改进型 ARM/Thumb 代码交织,增强性乘法器设计。支
持实时(real-time)调试;
(2)片内指令和数据 SRAM,而且指令和数据的存储器容量可调;
(3)片内指令和数据高速缓冲器(cache)容量从 4K 字节到 1M 字节;
(4)设置保护单元(protcction unit),非常适合嵌入式应用中对存储器进行分段和保护;
(5)采用 AMBA AHB 总线接口,为外设提供统一的地址和数据总线;
(6)支持外部协处理器,指令和数据总线有简单的握手信令支持;
(7)支持标准基本逻辑单元扫描测试方法学,而且支持 BIST(built-in-self-test);
(8)支持嵌入式跟踪宏单元,支持实时跟踪指令和数据
ARM 微处理器的编程模型
ARM 微处理器的工作状态
从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:
- 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;
- 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。
当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执
行16位的Thumb指令集时,工作在Thumb状态。在程序的执行过程中,微处理器可以随
时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和
相应寄存器中的内容。
状态切换方法:
ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间
切换,但ARM微处理器在开始执行代码时,应该处于ARM状态。
进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的
方法,使微处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态时发
生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到
Thumb状态。
进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从
Thumb状态切换到ARM状态。此外,在处理器进行异常处理时,把PC指针放入异常模式
链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。
ARM 体系结构的存储器格式
ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放
置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。
作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(2
32
字节)。
ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式,具体说明如
下:
大端格式:
在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址
中,如图2.1所示:
剩余40页未读,继续阅读
资源评论
l443638374
- 粉丝: 10
- 资源: 88
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功