ARM架构与体系学习(二)——3级流水线

ARM架构与体系学习(二)——3级流水线

标签: 存储嵌入式汇编c

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字节

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

[plain] view plain copy

print?

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

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

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

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

时间: 2024-12-28 00:21:28

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

u-boot学习(二):u-boot简要分析

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章,不要添加收藏夹,想着以后有时间再看,因为很有可能你以后再也不会看它们了. 想写总结的文章,不要想着等到以后有时间了再总结,因为很有可能你以后更没有时间总结它们了. --送给自己 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

硬件和软件是一颗芯片系统互相依存的两大部分,本文总结了一颗芯片的软硬件组成. (一)硬件 主控CPU:运算和控制核心.基带芯片基本构架采用微处理器+数字信号处理器(DSP)的结构,微处理器是整颗芯片的控制中心,会运行一个实时嵌入式操作系统(如Nucleus PLUS),DSP子系统负责基带处理.应用处理器则可能包括多颗微处理器,还有GPU.微处理器是ARM的不同系列的产品(也可以是x86架构),可以是64位或者32位. 总线:计算机的总线可以划分为数据总线.地址总线和控制总线,分别用来传输数据.

《基于微服务架构的在线学习系统设计与实现》第三章 文献随笔(四)

一.基本信息 标题:基于微服务架构的在线学习系统设计与实现 时间:2019 来源:微服务架构 关键字:在线学习系统:微服务架构:spring cloud框架:API网关 二.研究内容 1.研究背景 基于对国内外的各学习网站的体验与分析,结合软件工程的需求分析方法,综合大学生的学习习惯以及学习方法对系统进行的功能性需求分析以及非功能性需求分析. 2.在线学习系统的需求分析   (1)功能需求分析 学生用户需求分析: 网站注册.用户登录.个人信息管理.课程列表.课程公告.课程评分.课程收藏.课程讨论

系统架构师秘籍(二)软件架构- 续

上次的文章中,我们简单描述了一下软件架构的概念,接下来我们描述一下软件架构中的具体细节. 软件架构 所谓软件元素,即指组成软件系统的一个最基本的模块.一个软件元素的特性在很大程度上取决于系统的类型,以及你考虑和选取软件元素的背景和关注点.程序Lib库,子系统,可部署的颗粒或者控件(如企业级Java Bean,ActiveX 控件等),可重用的软件产品(如数据库管理系统),全部的应用程序都可以称为一个软件系统的软件元素,它取决于软件系统的构建. 一个软件元素所拥有的特点如下: 一个明确的界定的责任

ARM架构--CPU的微架构

网上确实有说ARM架构的,但是此架构泛指用ARM指令系统的CPU,而不是CPU的微架构.,硬件电路上,要用ARM指令集系统,必然硬件设计电路上要要遵循,ARM指令的特点和寻址方式,所以说高通和苹果的CPU是ARM架构是可以的. ,但CPU的微架构就要复杂太多了,CPU微架构包括缓存管理,缓存设计,乱序执行,超标量,超流水线,内存控制,分支预测等众多的极其复杂的电路,这些结构的电路的效率是直接决定CPU性能的. 高通和苹果是自主设计的这些电路,所以说是自主的CPU架构,只是用了ARM的指令系统和寻

原子操作--ARM架构

说明:内核版本号为3.10.101 一.ARM架构中的原子操作实现 在原子操作(一)中我们已经提到,各个架构组织为“复仇者”联盟,统一了基本的原子变量操作,这里我们就拿atomic_dec(v)来看看通天ARM的实现. 首先是atomic_dec(v)原子减一操作的宏定义.这个宏的定义在文件arch/arm/include/asm/atomic.h中: #define atomic_dec(v) atomic_sub(1, v) 对于ARM架构不同的版本,stomic_sub(i,v)的实现是不

X86 架构和 ARM 架构

1.关于x86架构 X86是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家用PC领域.x86是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,X与处理器没有任何关系,它是一个对所有*86系统的简单的通配符定义,例如:i386, 586,奔腾(pentium).由于早期intel的CPU编号都是如8086,80286来编号,由于这整个系列的CPU

java学完框架后学什么?java架构师进阶学习,java高并发集群分布式,java大数据高可用,视频教程,

学习思路: 1.先学习第一套或者第二套架构师课程,帮助没有基础或基础学得不好的同学建立架构师思维,整套需要全部学习,很重要!! 2.根据工作需要,分别去学习第二套.第三套里的实战课程里的知识点,不需要全部全学习,那么多资料你没有那么多精力全部学完!! 对比内容: 本套课包含像Dubbo,Netty,Nio,Mina,Mecached,Nosql,MongoDB, Nginx, ActiveMQ等课程更全,我这里就不一一列举,亲们可以对比大小 本教程优势: 1.六套 架构师课程,基本包含了淘宝卖的

企业架构框架体系

基本概念 框架(Framework):是处理某类/某方面问题的思路/办法,通过前期大量的研究.尝试.调整.完善.验证,设计和归纳出一套通用的.可行的方法和知识的组织结构,能够帮助其它人处理类似的问题.是一个宏观.高阶的指导,但框架不是标准答案,没有直接的结果,需要在理解的基础上灵活运用. 方法论(Mehtodology):是某一个具体问题的方法和工具,方法论会对一系列具体的方法进行分析研究.系统总结并最终提出较为一般性的原则.方法论是企业架构框架的组成部分,框架的广度和高度需要多方面方法论的支持