2012-04-18 00:44 5414人阅读 评论(4) 收藏 举报
 分类:
ARM7(16) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

看到汇编中很多关于程序返回与中断返回时处理地址都很特别,仔细想想原来是流水线作用的效果。所以,决定总结学习下ARM流水线。

ARM7处理器采用3级流水线来增加处理器指令流的速度,能提供0.9MIPS/MHz的指令处理速度。

PS:

MIPS(Million Instruction Per Second)表示每秒多少百万条指令。比如0.9MIPS,表示每秒九十万条指令。

MIPS/MHz表示CPU在每MHz的运行速度下可以执行多少个MIPS,如0.9MIPS/MHz则表示如果CPU运行在1MHz的频率下,每秒可执行90万条指令。

如果CPU在20MHz的频率下,每秒可运行1800万条指令。MIPS/MHz可以很好的反映CPU的速度。

3级流水线如上图所示(PC为程序计数器),流水线使用3个阶段,因此指令分3个阶段执行。

⑴ 取指从存储器装载一条指令

⑵ 译码识别将要被执行的指令

⑶ 执行处理指令并将结果写会寄存器

以前学过的51单片机,因为比较简单,所以它的处理器只能完成一条指令的读取和执行后,才会执行下一条指令。这样,PC始终指向的正在“执行”的指令。

而对于ARM7来说因为是3级流水线,所以把指令的处理分为了上面所述的3个阶段。

所以处理时实际是这样的:ARM正在执行第1条指令的同时对第2条指令进行译码,并将第3条指令从存储器中取出。

所以,ARM7流水线只有在取第4条指令时,第1条指令才算完成执行。

下图生动形象的说明了3级流水线的处理机制

下面一句话很关键:无论处理器处于何种状态,程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或者正在“译码”的指令。

人们一般会习惯性的将正在执行的指令作为参考点,即当前第1条指令。

所以,PC总是指向第3条指令,

或者说PC总是指向当前正在执行的指令地址再加2条指令的地址。

处理器处于ARM状态时,每条指令为4个字节,所以PC值为正在执行的指令地址加8字节,即是:

PC值 = 当前程序执行位置 + 8字节

处理器处于Thumb状态时,每条指令为2字节,所以PC值为正在执行的指令地址加4字节,即是:

PC值 = 当前程序执行位置 + 4字节

下面一个例子就很好的说明了这个问题。

  1. 0x4000 ADDPC,PC,#4 ;正在被执行的指令,将地址值PC+4写入PC
  2. 0x4004 ...;正在被译码的指令
  3. 0x4008 ...;正在被取指的指令,PC=0x4008
  4. 0x400C ...;PC+4=0x400C

另外补充说明就是根据以上描述,流水线只有被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅单周期指令)。

如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线被再次填满。因此,尽量地少使用跳转指令可以提高程序的执行效率。

以上就是对ARM73级流水线的一个总的认识,参考来自学习ARM时的教材——《ARM嵌入式系统基础教程(第二版)》。

ARM架构与体系学习(二)——3级流水线的更多相关文章

  1. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...

  2. ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系?(转载自知乎)

    ARM架构:  由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~ARMv8种类. ARM7:       一类采用ARMv3或ARMv4架构的,使用冯诺依曼结构的内核. ...

  3. 一颗ARM架构芯片的软硬件构成

    硬件和软件是一颗芯片系统互相依存的两大部分.本文总结了一颗芯片的软硬件组成.作为对芯片的入门级概括吧. (一)硬件 主控CPU:运算和控制核心.基带芯片基本构架採用微处理器+数字信号处理器(DSP)的 ...

  4. 图灵学院JAVA互联网架构师专题学习笔记

    图灵学院JAVA互联网架构师专题学习笔记 下载链接:链接: https://pan.baidu.com/s/1xbxDzmnQudnYtMt5Ce1ONQ 密码: fbdj如果失效联系v:itit11 ...

  5. ARM架构安装ubuntu系统

    一.简介 arm开发板制作系统是比较麻烦,不论使用busybox还是yocto制作根文件系统对新手都比太友好,除非深度定制,否则使用ubuntu系统既可以满足,把更多的精力放在应用开发上. 二.准备材 ...

  6. X86架构与ARM架构比较(摘录自网络)

    引言 CPU是怎样运作的? CPU的运作与人脑的运作差不多.先谈一下人这个系统的工作方式.眼镜.耳朵.舌头.皮肤等等感觉器官接收到"触觉",把信息传给大脑,大脑把信息处理后,把处理 ...

  7. 原子操作--ARM架构

    说明:内核版本号为3.10.101 一.ARM架构中的原子操作实现 在原子操作(一)中我们已经提到,各个架构组织为“复仇者”联盟,统一了基本的原子变量操作,这里我们就拿atomic_dec(v)来看看 ...

  8. X86 架构和 ARM 架构

    1.关于x86架构 X86是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家 ...

  9. X86架构与ARM架构比较

    引言 CPU是怎样运作的? CPU的运作与人脑的运作差不多.先谈一下人这个系统的工作方式.眼镜.耳朵.舌头.皮肤等等感觉器官接收到“触觉”,把信息传给大脑,大脑把信息处理后,把处理结果送给手.脚.嘴等 ...

随机推荐

  1. Ubuntu下使用Sysvinit实现自定义服务(简单研究)

    通过上一篇文章http://www.cnblogs.com/EasonJim/p/7168216.html可以大概了解到Sysvinit的历史. 其实在自定义服务上,使用Sysvinit是最简单的,本 ...

  2. SecureCRT 8.0公布

    百度搜索到的7.3 注冊码生成器还是能够用于8.0的破解. 破解时,选择手动输入(Enter Licence Manually)产生的代码. 添加了一些特性,我最看重的是: 1.  能够在以下命令窗体 ...

  3. 3.3-ISDN

    3.3-ISDN     综合业务数字网ISDN(Integrated Services Digital Network):     ISDN主要有两种接口类型:分为BRI(2B+D=2×64+16K ...

  4. Oracle 闪回区满解决的方法

    闪回区满: OS: rm -rf [archivelog  autobackup  backupset  controlfile  flashback  onlinelog] eg : archive ...

  5. Cocos2d-x 3.x 图形学渲染系列十五

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家.特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  6. XAML实例教程系列 - 资源(Resources)

    Kevin Fan分享开发经验,记录开发点滴 XAML实例教程系列 - 资源(Resources) 2012-08-10 12:47 by jv9, 1386 阅读, 1 评论, 收藏, 编辑 在Wi ...

  7. jQuery的jsop,jsonp跨域请求

    https://www.cnblogs.com/chiangchou/p/jsonp.html

  8. 【转载】Sybase数据库服务器端安装

    sybase数据库的安装分为服务器端和客户端,本文先介绍一下服务器端的安装. 1.和其他程序一样,双击setup.exe.   2.出现欢迎界面,直接点击next即可.   3.下面选择相应国家的协议 ...

  9. PCB 钻孔补偿那点事

    没有优秀的个人,只有优秀的团队,在团队共同的协作下,PCB CAM自动化[net处理]与[钻孔处理] 第一阶段开发项完成了,,后续工作可以转向PCB规则引擎开发了.这里说说PCB工程钻孔补偿的那点事, ...

  10. E20171011-hm

    Rendering engine  渲染引擎; 引擎; 绘图引擎; interactive   adj. 互动的; 互相作用的,相互影响的; [计] 交互式的; defer   vt. 使推迟; 使延 ...