单片机论坛

 一密码
 立即注册

QQ登录

只需一步快速开始

搜索
查看: 1101|回复: 1
打印 上一主题 下一主题
收起左侧

一文详解ARM7ARM9和ARM11的区别

[复制链接]
跳转到指定楼层
楼主
芯片去字笔 发表于 2018-11-29 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1
ARM处理器解析
ARM9ARM11是哈佛结构5读水线结构所以阅要高一点ARM9和ARM11大多带内存管理器跑操作系统好一点ARM7适下奔我们惯称的 ARM9系列中又存在ARM9与ARM9E两个系列其中ARM9 属于ARM v4T架构典型处理器如ARM9TDMI和ARM922T;而ARM9E属于ARM v5TE架构典型处理器如ARM926EJ和ARM946E因为后者的芯片数量和应用更为广泛所以我们提到ARM9的时候更多地是特指ARM9E系列处理器(主要就是ARM926EJ和ARM946E这两款处理器)下面关于ARM9的介绍也是更多地集中于ARM9E

2
ARM7处理器和ARM9E处理器
的流水线差别
对嵌入式系统设计者来说硬件通常是第一考虑的因素针对处理器来说流水线则是硬件差别的最明显标志不同的流水线设计会产生一系列硬件差异

让我们来比较一下ARM7和ARM9E的流水线ARM9E从ARM7的3读水线增加到了5级ARM9E的流水线中容纳了更多的逻辑操作但是每一级的逻辑操作却变得更为简单比如原来 ARM7的第三读水需要先内部读取寄存器然后进行相关的逻辑和算术运算接着处理结果回写完成的动作非常复杂;而在ARM9E的5读水中寄存器读取逻辑运算结果回写分散在不同的流水当中使得每一读水处理的动作非常简洁这就使得处理器的主频可以大幅度地提高因为每一读水级应 CPU的一个时又期如果一读水中的逻辑过于复杂使得执行奔居高不下必然导致所需的时又期变长造成CPU的主频不能提升所以流水线的拉长有利于CPU主频的提高在常用的芯片生产工艺下ARM7一般运性100MHz左右而ARM9E则至少在200MHz以上

3
ARM9E处理器的存储器子系统
像ARM926EJ 和ARM946E这两个最常见的ARM9E处理器中即有一套存储器子系统以提高系统阅和支持大型操作系统如图2所示一个存储器子系统包含一个 MMU(存储器管理单元)或MPU(存储器保护单元)高速缓存(Cache)和写缓冲(Write Buffer);CPU通过该子系统与系统存储器系统相连

高速缓存和写缓存 的引入是基于如下事实即处理器速度对高于存储器访问速度;如果存储器访问成为系统阅的瓶保则处理器再快也是浪费因为处理器需要耗费大量的奔在 却存储器上面高速缓存正是用来解决这个问题它可以存储最近常用的代码和数据以最快的速度提供给CPU处理(CPU访问Cache不需要却)

4
复杂处理器内部的存储器子系统
MMU则是用来支持存储器管理的硬件单元满足执教操作系统内存管理的需要;它主要包括两个功能一是支中拟/物理地址成䣬二是提供不同存储器地址空间的保护机制一个简单的例子可以帮助我们理解MMU的功能在一个操作系统下程序开发人员都是在操作系统给定的API和编程模型下开发程序;操作系统通常只开放一个确定的存储器地址空间给用户这样就带来 一个直接的问题所有的应用程序都使用了相同的存储器地址空间如果这些程序同时启动的话(在现在的多任务系统中这是非常常见的)就会产生存储器访问冲 突那操作系统是如何来避免这个问题的呢?

操作系统会利用MMU硬件单元完成 存储器访问虚拟地址到物理地址的转换所谓虚拟地址就是程序员在程序中使用的逻辑地址而物理地址则是真实存储器单元的空间地址MMU通过一定的规则 可以把相同的虚拟地址成到不同的物理地址上去这样即使有多个使用相同虚拟地址的程序进程启动也可以通过MMU调度把它们成到不同的物理地址上 去换造上统错误

5
MMU的功能和作用
MMU 处理地址成功能之外还能给不同的地址空间设置不同的访问属性比如操作系统把自己的内核程序地址空间设置为用户模式下不可访问这样的话用户应用程序 就无法访问到该空间从而保证操作系统内核的安全性MPU与MMU的区别在于它只有给地址空间设置访问属性的功能而没有地址成功能

Cache以及MMU等硬件单元的引入给系统程序员的编程模型带来了许多全新的变化除了需要掌握基本的概念和使用方法之外下面几个针对系统优化的点既有趣又重要

1.系统实时性考虑因素
为保存地址成规则的页表(Page Table)非常庞大通常MMU中只是存储器了常用的一小段页表内容大部分页表内容即储于主存储器里面;当调用新的地址成规则时MMU可能需要 读取主存储器来更新页表

这在某些情况下会造上统实时性的丢失比如当需要执行一段关键的程序代码时如果不巧这段代码使用的地址空间不在当前MMU的 页表处理段里面则MMU首先需要更新页表然后完成地址成䣬接着才能相应存储器访问;整个地址译码过程非常长给实时性带来非常大的不利影响所以一般来说带MMU和Cache的系统在实时性上不如一些简单的处理器;不过也有一些办法能够帮助提高这些系统的实时效率

一个简单的办法是在需要的时候关闭MMU和Cache这样就变成一个简单处理器了可以马上提高系统实时性当然很多情况下这不可行;在ARM的MMU和 Cache设计中有一个锁定的功能就是的可以指定某一块页表在MMU中换被更新掉某一段代码或数据可以在Cache中锁定而换被刷新掉;程序 员可以利用这个功能来支持切实时性要求最高的代码保证这些代码始终能够得到最快的响应和支持

2.系统软件优化
在嵌入式系统开发中很多系统软件优化的方法都是相同和通用的多数情况下这种规则也适用于ARM9E架构上如果你已经是一个ARM7的编程高手那么恭 喜你以前你掌握的优化方法完全可以用在新的ARM9E教上但是会有一些新的特性需要你加倍注意最重要的便是Cache的作用Cache本身并不 带来编程模型和接口的变化但是如果我们考察Cache的行为就能够发现对于软件优化Cache是有比较大的影响的

Cache 在物理上就是一块高速SRAMARM9E的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行数使得被多次调用的循环体得到更好的执行效率

6
阅和效率的提升
前面介绍了ARM9E相比于ARM7阅上的提高这不仅表现在ARM9E有更快的主频更多的硬件特性上面还体现在某些指令的执行效率上面执行效率我 们可以用CPU的时又期数(Cycle)来衡量;运型一段程序ARM9E的处理器可以比ARM7节省大约30%左右的时又期

效率的提高主要来自于ARM9E对于Load-Store指令执行效率的增强我们知道在RISC架构的处理器中程序中大约有30%的指令是Load- Store指令这些指令的效率对系统效率的贡献是最明显的ARM9E中有两个因素帮助提高Load-Store指令的效率

1)ARM9内核是哈佛架构拥有独立的指令和数据总线;相对应ARM7内核是指令和数据总线复用的冯诺依曼架构

2)ARM9的5读水线设计把存储器访问和寄存器写回放在不同的流水上面

两者结合使得在指令流的执行过程中每个CPU时又期都可以完成一个Load或Store指令下面的表格比较了ARM7和ARM9处理器之间的Load -Store指令从中可以看出所有的Store指令ARM9比ARM7省1个周期Load指令可以省2个周期(在没有互锁的情况下编译工具能够通过 编译优化消除大多数的互锁可能)

综细种因素ARM9E处理器拥有非常看的阅ܡ但是在导的系统设计中设计人员并不总前处理器阅开到最大理想情况前处理器和系统运行频式低使得阅刚好能满足应用需求;达到节省功耗和成本的目的在评估系统能够提供的处理器能力过程中DMIPS指标缓多人采用;同时它也被广泛应用于不同处理器间的阅比较

但是用DMIPS来衡看理器阅存在很大的缺陷 DMIPS并非字面上每秒百万条指令的意思它是一个测量 CPU运行一个叫Dhrystone的测试程序时表现出来的相对阅高低的一个单位(很多场合人们也习惯用MIPS作为这个阅指标的单位)因为基于程 序的测试容资到恶意优化的干扰并且DMIPS指标值的发布不受任何机构的监督所以使用DMIPS进行评估币慎重例如对Dhrystone测试程 序进行不同的编译处理在同一个处理器上运行也可以得出差别很大的结果

DMIPS 另外一个缺点是不能测看理器的数字信号处理能力和Cache/MMU子系统的阅ܡ因为Dhrystone测试程序不包含DSP表达式只包含一些整型 运算和字符串处理并也试程序偏小几乎可以完整地放在Cache里面运行而无需与外看储器进行换这样就难以从处理器在一个真实系统中的真正性 能

一种值得鼓励的评估方法是站在系统的嵌看问题而不仅仅拘泥于CPU本身;而系统阅评估最好的测试向量就是用户应用程序或相近的测试程序这是用户所需的最真实的结果

7
ARM9E处理器的DSP运算能力
伴随应用程序的多样化和复杂化诸如多教塢音视频功能在嵌入式系统里面也是全面开花这些应用需要相当的DSP处理能力;如果是在传统的RISC架构上实 现这些算法所需的资源(频率和存储器等)会非常不经济ARM9E处理器一个非常重要的优势就是拥有轻量级的DSP处理能力以非常小的成本(CPU增 加功能需要增加硬件)换来了非常实用的DSP阅ܡ

因为CPU的DSP能力并不直接从在像DMIPS这样的评测指标中同时像以前的ARM7处理器中也没有类似的概念;所以这一点对所有使用ARM9E处理器进行开发的人来说都切要注意的一个要点

ARM9E的DSP扩展指令主要包括三个类型:

1)单周期的16x16和32x16 MAC操作因为数字信号处理中甚少32位宽的操作数在32位寄存器中可以对操作数分段运算显得非常有用

2)对原有的算术运算指令增加了饱和处理扩展所奖和运算就是当运算结果大于一个上限或小于一个下限时结果就等于上限或是下限;饱和处理在音频数据和视频像素处理中普遍使用现在一条单周期饱和运算指令就能够完成普通RISC指令运算-判断-取值这一系列操作

3)前导零(CLZ)运算指令提高了归一化和浮点运算以及除法操作的阅ܡ

以流行的MP3解码程序为例整个解码过程中前端的三个步骤是运算量最大的包括比特流的读入(解包)霍夫曼译码还有反量化采样(逆变换)ARM9E的 DSP指令正好可以高效地完成这些运算以44.1 KHz@128 kbps码率的MP3音乐文件为例ARM7TDMI需要占用20MHz以上的资源而ARM926EJ则只要小于10MHz的资源在 从ARM7到ARM9的教转变过程中有一件虑是非常值们幸的即ARM9E能够完全地向后兼容ARM7上的软件;并且开发人员面对的编程模型和架 构基础也保持一致但是毕竟ARM9E性加了很多新的特性为了充分利用这些新的资源把系统阅优化好需要我嵌ARM9E做更多深入地了解

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾段博腾段博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
仓木 发表于 2019-4-24 20:59 | 只看该作者
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机坛网

快速回复 返回顶部 返回列表
ձһhƬձƵ ձƵɫwww ձƵ:ɫ