首页 ARM9系列和ARM7TDMI内核的性能比较

ARM9系列和ARM7TDMI内核的性能比较

举报
开通vip

ARM9系列和ARM7TDMI内核的性能比较  ARM9内核采用哈佛架构,有独立的 指令和数据存储器接口,允许CPU在 取指令的同时读写数据。而ARM7 内核则只有一个存储器接口,取指 令或数据访问都得经由此接口。  ARM9内核的5级流水线设计引入了 独立的“存储器(Memory)”和“写 回(Write Back)”两级流水,分别用 于存储器读写和把结果写回寄存 1. 介绍 更多的晶体管,更复杂的设计,让 ARM9TDMI和ARM9E-S内核在同样的 硅片工艺下,性能超过ARM7T...

ARM9系列和ARM7TDMI内核的性能比较
 ARM9内核采用哈佛架构,有独立的 指令和数据存储器接口,允许CPU在 取指令的同时读写数据。而ARM7 内核则只有一个存储器接口,取指 令或数据访问都得经由此接口。  ARM9内核的5级流水线 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 引入了 独立的“存储器(Memory)”和“写 回(Write Back)”两级流水,分别用 于存储器读写和把结果写回寄存 1. 介绍 更多的晶体管,更复杂的设计,让 ARM9TDMI和ARM9E-S内核在同样的 硅片工艺下,性能超过ARM7TDMI或 ARM7TDMI-S内核的两倍。性能提升是 因为ARM9可以运行于更高的主频,而 执行一些常用的指令也耗费更少的时钟 周期1。 为叙述方便起见,本文将简单地用 ARM7指代ARM7TDMI和ARM7TDMI- S; 用ARM9指代ARM9TDMI和ARM9E- S系列。 2. 时钟频率的提升 时钟频率的提升是因为ARM9采用 了5级流水线设计,而ARM7则为3级流 水线设计(参见图1-图3)。增加流水 线可以增加并行度,减少单个时钟周期 内需要的逻辑。对于5级流水线设计,一 条指令可以分步在5个时钟周期内处理完 成,某一时钟周期内,可以有5条指令同 时在工作中。同样制造工艺下,ARM- 9TDMI的最大频率通常是ARM7TDMI的 1.8~2.2倍(视代工厂而定)。 3. 时钟周期数目的改进 在ARM7,ARM9上运行同样一段代 码,ARM9需要更少的时钟数目。减少程 度取决于执行的指令,这与程序本身紧密 相关;如果采用高级语言,还与编译器有 关。ARM公司大量研究统计显示,通常 ARM9会比ARM7有大约30%的性能提升。 3.1 存储器读写load/store 从ARM7到ARM9,最显著的性能 提升来源于存储器读写指令——load和 store。典型情况下,一段程序代码中约 30%为load/store指令,因此不难理解减 少load/store所需要的时钟数目会明显改 善程序整体的执行时间。下面让我们看 一下导致load/store指令时钟数目减少的 两个微处理器架构设计上的根本差别: ARM9系列和 ARM7TDMI内核的 性能比较 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 1 存储器读写的时钟周期数(简单情形) Instruction2 type LDR Load one word LDRH (one halfword) LDRB (one byte) LDRSB (one signedbyte) LDRSH (one signedhalfword) LDM of nregisters (load multiplewords) STR (store oneword) STRH (store one halfword) STRB (store one Byte) STM (store multiplewords) Execute Cycles 3 3 n+2 2 2 n+1 Interlock cycles 0 0 0 0 0 0 Execute Cycles 1 1 n 1 1 n Interlock cycles 0 or 1 0 to 2 半字或字节load指 令会产生一个额 外的互锁周期, 用 以 把 读 出 的 32位结果移位到 正确的位置。 0 or 1 0 0 0 ARM9TDMI and ARM9E-S ARM中国 TECHNOLOGY IN-DEPTH Information Quarterly Number 4, Spring 2006[22] ARM7TDMI and ARM7TDMI-S TECHNOLOGY IN-DEPTH Information Quarterly Number 4, Spring 2006[23] 器组。 以上两项设计改进使得load/store指 令可以在单个周期内完成,参见下面的 流水线设计示意图。 表1列出了在不同内核上执行load/ store 指令所需要的时钟周期数。可以看 到,在ARM9上执行store指令比ARM7上 少一个周期。对于load指令,如果没有互 锁情况发生,则少两个周期。 1 ARM9E-S内核引入了新的指令, 对16位定点的DSP算法和饱和运 算提供了更有效的支持,实际上进 一步减少了时钟周期数。本文只关 注ARM9TDMI和ARM9E-S的一些 共性,不考虑新增的DSP指令集。 2 我们忽略了一些引起时钟数增加的 特殊情形,如读存储器然后写入程 序计 数器PC,或者引起异常的存储 器访 问。并且本文中假设存储器为 零等待内存,不考虑cache命中情 况下时钟访问数目的增加。ARM内 核技术参考手册中详细描述了在所 有复杂情况下指令执行需要的时钟 数目。 3.2 互锁 当某一条指令需要的源数据由于前 面的指令仍未完成执行而不可用时,流 水线就会发生互锁。互锁发生时,在硬件 上将暂停该指令的执行直到需要的数据准 备就绪。有了互锁机制,ARM9得以与以 前ARM 处理器保持二进制代码级别的兼 容,当然由于插入了若干互锁周期,代 码执行时间会相应变长。在许多情况下, 编译器或者代码编写者可以通过改变指令 的顺序或者别的一些技巧来减少互锁周期 数。下面是几个例子。 A: LDR R0, [R1] ; load R0 from the address contained in R1 ADD R2, R3, R4 ; add R3 and R4 and put the result in R2 SUB R5, R6, R7; R5=R6-R7 B: LDR R0, [R1] ; load R0 from the address contained in R1 ADD R2, R3, R0 ; add R3 and R0 and put the result in R2 SUB R5, R6, R7; R5=R6-R7 C: LDR R0, [R1] ; load R0 from the address contained in R1 SUB R5, R6, R7; R5=R6-R7 ADD R2, R3, R0 ; add R3 and R0 and put the result in R2 代码序列A,三条指令操作的寄存 器都不一样,相互之间没有数据依赖关 系,可以无互锁地分别在单个周期内执 行完成,因此三条指令的执行时间为3个 时钟周期。LDR指令在流水线的执行级需 一个周期,接下来的第二个周期,LDR指 令到达流水线的存储器级,从存储器系统 中(更多情况下是数据缓存)读取一个数 据。同时ADD指令到达了流水线的执行 级。在接下来的第三个周期内,SUB指 令进入了执行级。这样,代码序列A在 三个周期内完成了执行。 在代码序列B中,ADD指令的一个源 操作数R0也是前一条LDR指令的目标寄存 器。这样两条临近的指令间产生了相互依 赖关系——即ADD直到LDR指令返回运行 Branch Taken (passes its condition code check) Branch Taken (fails its condition code check) ARM7TDMI andARM7TDMI-S 3 1 ARM9TDMI andARM9E-S 3 1 结果才能执行。在周期1,LDR指令处于 执行级,计算要访问的存储器地址。到 了周期2,LDR指令读取存储器,在该周 期结束时返回数据。同时ADD指令在周 期2内无法执行,因为存储器读取还未返 回结果,不得不插入一个互锁周期以暂停 执行ADD指令。在周期3,ADD指令才可 以执行,而SUB则相应地延后到周期4才 进入执行级。这样整个代码序列需4个周 期完成执行。 代码序列C显示了如何通过改变 指令顺序以避免互锁。显然,如果把 SUB插入LDR和 ADD之间并不会改变 程序运行的结果。这意味着LDR在周期 1进入执行级,SUB、ADD分别在周期 2、3执行,整个代码仍然可以在3个周 期内完成执行。 ARM的编译器实现了代码调度优 化,可以减少互锁周期的数目。虽然不是 百分之百,但经常有可能找到一条有用的 指令,把它移到LDR和与之有依赖关系的 指令之间。这意味着一条LDR指令的平均 执行周期介于1到2之间。确切的数字当然 得取决于代码本身,以及编译器的优化。 在本文末尾有些例子可以参考。 3.3 分支跳转 许多人会问分支(branch)指令在 ARM9上是否会比ARM7上需要更多的时 钟周期。 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 是否定的,两者完全一样。 这是因为无论ARM7或ARM9,流水线在 执行级前面一样都有两级流水。在本文 讨论的ARM内核上,分支跳转的实现机 制完全一样。见下表 ARM9TDMI和ARM9E-S不支持分支 预测,在这些处理器上,跳转的开销相对 不那么重要。实现分支预测增加了逻辑开 销,导致芯片尺寸增大,却不会带来显著 的性能提升。 4. 流水线设计 下面解释load/store分别在ARM- 7TDMI, ARM7TDMI-S, ARM9TDMI 以 及ARM9TDMI-S内核的流水线上是如何 实现的。 4.1 ARM7TDMI and ARM7TDMI-S 正如图1所示,ARM7TDMI和ARM- 7TDMI-S实现了3级流水线设计。在执行 级完成了多个操作,包括从寄存器读取操 作数,传给移位寄存器,传给算术逻辑单 元ALU,把运算结果写回寄存器。使所有 这些操作在一个时钟周期内完成可以简化 设计,降低功耗,减少晶体管数目,硅片 面积。但同时也限制了ARM7的最大的时 钟频率。因为存储器读写也在执行级内完 成,这样指令会花费多个周期在流水线的 执行级。请参考下面的细节。 LDR  执行级周期1 计算存储器读地址 + 取下一条要执行的指令  执行级周期2 从存储器读取数据  执行级周期3 如果需要的话,对 读取结果作移位操作,然后写回到 目标寄存器 LDM与LDR类似,只是要重复周期3以回 写其它的目标寄存器 STR  执行级周期1 计算存储器写地址 +取下一条要执行的指令  执行级周期2 向存储器写数据 STM与STR类似,只是要重复周期2把其 它源寄存器中的数目写入存储器。 4.2 ARM9TDMI and ARM9E-S 如图2、3所示,ARM9TDMI和 ARM9E-S实现了5级流水线设计。两种 设计基本一样,除了ARM9E-S内核实现 了一个更复杂的乘加单元,以支持ARM- v5TE架构新引入的DSP增强指令集。哈佛 架构避免了数据访问和取指令对单总线的 使用冲突。值得一提的是巧妙的“结果前 传”设计。ALU产生的结果,或者从存储 器读取的数据在回写到目标寄存器之前, 可以立即传给下一条指令使用,从而避免 了寄存器回写和下一条指令读寄存器的需 要的等待。 可以看到,专门增加了两级流水分别 用以存储器访问和结果写回寄存器。并且 读寄存器操作也被前移到了译码级。不难 理解,由于每级流水的逻辑操作减少了, 时钟主频相应地也提高了。 下面来考察一下5级流水下LDR STR的情形。 LDR  执行级 周期1 计算存储器读地址 + 取下一条要执行的指令  存储器级 周期2 从存储器读取数据  写回级 周期3 如果需要的话,对 读取结果作移位操作,然后写回到 目标寄存器 LDR指令只花费1个周期在执行级,后面 的指令可以接下来马上进入执行级(除非 有互锁情况发生)。这就意味着LDR也是 单周期指令。 STR  执行级周期1 计算存储器写地址  存储器级周期2 向存储器写数据 同样,STR也成了单周期指令,在执行级 只耗费了1个周期。 图 1: ARM7TDMI和ARM7TDMI-S 的流水线 图 2 : ARM9TDMI的流水线 图 3: ARM9E-S的流水线 TECHNOLOGY IN-DEPTH Information Quarterly Number 4, Spring 2006[24] TECHNOLOGY IN-DEPTH Information Quarterly Number 4, Spring 2006[25] 5. 性能提升的实例 从ARM7到ARM9能有多大程度的性 能提升当然与软件中包含的指令有关。 存储器访问操作越多,我们会看到越明 显的性能提升。看下面的例子。 5.1 EPOC版本4 启动程序 同样启动Symbian EPOC操作系统 (版本4),在ARM9TDMI上花费的时钟 周期数约为在ARM7TDMI上的79%。如 果运行在相同主频下,这意味着27%的 性能提升。 此版本的EPOC启动代码用GNU C++编译器针对ARM7内核编译,没有互 锁优化。 5.2 Dhrystone 2.1 评测程序 Dhrystone 2.1是用C编写的一个综 合评测程序。此版本采用ANSI C 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数声 明格式,经ARM公司的ADS 1.1编译器 编译,并且打开了代码调度优化以减少互 锁。分析结果表明,相比于ARM7TDMI, ARM9TDMI在同主频下表现出了27%的性 能增长。从后面的表中数据可以看出,此 例中不同指令对性能增长的贡献与前例中 有很大的不同。 ARM7TDMI和ARM9TDMI的CPI(Cycles Per Instruction)比较 EPOC版本4启动程序 经GNU编译器编译。 分析结果 可以推出以下数据:  ARM9TDMI上100条指令平均需1.76*100=176周期。  相对ARM7TDMI,  单字装载(LDR)指令,节省1.34 * 24.7 = 33.1个周期;  单字存储(STR)指令,节省1 * 3.5 = 3.5个周期;  LDM指令,节省2 * 3.8 = 7.6个周期;  STM指令,节省1 * 3.7 = 3.7个周期。 这样ARM7TDMI上需要花费176+33.1+3.5+7.6+3.7 = 223.9个周期,CPI为2.239。 因此在ARM9TDMI上花费的时间平均是ARM7TDMI上的79%,或者说在同频率 下,ARM9TDMI的性能是ARM7TDMI的127%。 Dhrystone 2.1 综合评测程序 经ARM ADS 1.1编译器编译,并且打开了代码调度优化。 分析结果 可以推出以下数据:  ARM9TDMI上100条指令平均需1.76*100=176周期。  相对ARM7TDMI,  单字装载(LDR)指令,节省1.76 * 17.6 = 31.0个周期;  单字存储(STR)指令,节省1 * 10.5 = 10.5个周期;  LDM指令,节省2 * 2.3 = 4.6个周期;  STM指令,节省1 * 2 = 2个周期。 这样ARM7TDMI上需要花费176+31.0+10.5+4.6+2 = 224.1个周期,CPI为2.241。 因此在ARM9TDMI上花费的时间平均是ARM7TDMI上的79%,或者说在同频 率下,ARM9TDMI的性能是ARM7TDMI的127%。 单字装载(LDR) 单字存储(STR) LDM STM 百分比 24.7% 3.5% 3.8% 3.7% 平均长度 3.1 ARM7TDMI周期数 3 2 x+2 y+1 ARM9TDMI周期数 1.66(包括互锁在内的平均值) 1 x y ARM9TDMI CPI 1.76 单字装载(LDR) 单字存储(STR) LDM STM 百分比 17.6% 10.5% 2.3% 2.0% 平均长度 3.8 ARM7TDMI周期数 3 2 x+2 y+1 ARM9TDMI周期数 1.24(包括互锁在内的平均值) 1 x y ARM9TDMI CPI 1.76
本文档为【ARM9系列和ARM7TDMI内核的性能比较】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_047743
暂无简介~
格式:pdf
大小:895KB
软件:PDF阅读器
页数:4
分类:互联网
上传时间:2010-03-30
浏览量:11