​01.为什么要引入流水线技术

嵌入式处理器执行指令时,一般步骤为:首先从存储器中读取指令,然后对该指令进行译码,识别出被执行的指令属于哪一种指令,然后再从指令中提取到操作数并进行组合,接着根据需要将数据存储到存储器中,最后将结果写到寄存器中。但是,在实际运行过程中,并非所有的指令都需要执行所有的步骤,并且这些步骤所需要用到的硬件功能往往也是不同的。假如某条指令结束之前,后一条指令还未开始,那么在处理指令的每一个步骤都只需使用少部分的硬件,因而硬件资源的使用率并不高。

那么如何改善硬件资源的使用率呢?可以使用流水线技术,即在当前的指令结束之前,就开始执行后一条指令。RISC处理器执行指令时就采用了流水线技术,在对当前指令进行译码的同时,读取下一条指令,从而提高了指令执行的效率。和汽车制造的流水生产线技术一样,在每一个阶段都只进行特定的处理器任务。

02.处理器中流水线技术的应用

到ARM7为止的ARM处理器都使用了三级流水线技术:

1)取指:从寄存器中加载一条指令;

2)译码:识别指令,并准备下一个周期需要用到的数据通路的控制信号。

3)执行:处理指令,将所得到的结果写到寄存器中。

在处理器执行简单的数据处理指令的时候,原本完成一条指令平均需要3个时钟周期,那么使用流水线技术,就能将一条指令的平均完成时间缩短至1个时钟周期。因而三级流水线技术对于到ARM7为止的ARM处理器而言性价比都是比较高的,能满足其高性能的要求。

如果处理器要获得更高的性能,有两种方法:一是提高时钟频率,但这会缩短指令的执行周期,就需要简化每一级中流水线的逻辑,增加流水线的级数;二是减少每一条指令的平均指令周期。

三级流水线的ARM核在每一个时钟周期都会访问存储器:读取指令或者进行数据传输,只是利用不使用存储器的周期进行性能改善,这对于处理器而言无法获得更高的性能。而减少指令的平均指令周期数,就需要在每个时钟周期内让存储器给出多于一个的数据,即让一个存储器给出32位以上的数据或者为指令和数据各设一个存储器。

因而,较高性能的ARM核采用了五级流水线,以提高时钟频率,并且为指令和数据分别设置了一个存储器,以减少每条指令的平均周期数。ARM9TDMI使用的就是典型的五级流水线技术:

1)取指:从存储器中加载一条指令并放入指令流水线;

2)译码:识别所读取的指令,并从寄存器堆中提取操作数;

3)执行:将其中一个操作数移位,并在存储器地址中产生结果,其中对于load、store指令则是计算存储器地址;

4)缓冲/数据:如果不需要数据,就只是缓冲一个时钟周期,如果需要数据就访问数据存储器获取数据;

5)回写:将处理指令所得到的结果写到寄存器堆中。

在Cortex-A8中ARM核采用了十三级流水线以提高性能。

03.流水线技术不适用的情况

在处理器处理某些指令或者当指令过于复杂时,流水线的使用效率就会降低,甚至难以使用流水线实现。

例如当前指令的结果在后一条指令取数的时候还没有产生,并且后一条指令的操作数是当前指令的结果,那么后一条指令必须中断直到等到前一条指令的结果产生。

此外,如果出现跳转指令,并且跳转目标的计算结果会影响后一条指令的取指,那么就必须中断,但是,在进行译码之前,无法确定当前指令属于跳转指令,而此时已经按照流水线已经完成了后一条指令的取指,那么只能放弃该指令的取指结果,重新进行取指。如果跳转指令发生在执行指令的阶段,那么需要放弃已经取指的后两条指令,这无疑会降低流水线的使用效率。

因而,只有按照相似步骤执行的指令,才能发挥流水线技术的使用效率,达到预期提高处理器性能的目的。

04.SkyEye支持的处理器核心

SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。

SkyEye目前支持主流的嵌入式硬件平台,可以运行主流的操作系统,此外还能适配国内自主研发的操作系统天脉。通过利用基于LLVM的动态二进制翻译技术,使虚拟处理器在典型的桌面计算机上运行速度可以达到2000MIPS以上。

▲图 4-1 利用虚拟原型来降低产品的周期和成本

SkyEye支持包括ARM在内的多种指令集架构的不同处理器核心,可以在主流的嵌入式硬件平台,运行主流的操作系统,还能适配国内自主研发的操作系统天脉。

五、参考资料

[1].《ARM处理器开发详解》

带你了解嵌入式处理器的流水线技术相关推荐

  1. 32位ARM嵌入式处理器的调试技术

    32位ARM嵌入式处理器的调试技术 https://blog.csdn.net/bekars/article/details/611072 摘要:针对32位ARM处理器开发过程中调试技术的研究,分析了 ...

  2. 【组成原理-处理器】流水线技术

    文章目录 0 流水线性能指标 0.1 指令执行时间 0.2 流水线的吞吐率 0.3 流水线的加速比 0.4 流水线的效率 1 基本流水线技术 1.0 流水线设计基本原则 1.1 五段流水线 1.1.1 ...

  3. 处理器中的流水线技术

    处理器中的流水线技术 在现代处理器中,流水线是一个最基本的概念.在了解cpu的时候,很多时候会提及拥有多少级流水线.虽然这个概念并不是在计算机技术中诞生的,但是这个技术却在处理器世界中大放异彩. 流水 ...

  4. [转]Cortex-a8 arm11 arm9 xscale powerpc 嵌入式处理器实测性能

    周明的嵌入式技术博客 Cortex-a8 arm11 arm9 xscale powerpc 嵌入式处理器实测性能 Verfasst von zhoum am Do, 03/05/2009 - 15: ...

  5. arm的多级流水线技术和和存储管理单元mmu

    流水线概念 流水线的概念与原理 处理器按照一系列步骤来执行每一条指令,典型的步骤如下: (1)从存储器读取指令(fetch). (2)译码以鉴别它属于哪一条指令(decode). (3)从指令中提取指 ...

  6. 连载-第1章绪论 1.2嵌入式处理器

    1.1 嵌入式处理器 1.1.1 哈佛结构和冯.诺依曼结构 相信学过计算机技术这门课程的读者都知道,通用CPU采用的是冯.诺依曼结构,而很多嵌入式处理器多采用哈佛结构,那么这两种结构究竟有什么区别,各 ...

  7. 嵌入式处理器的体系架构与内核详解

    嵌入式处理器的体系架构与内核详解 当我们谈及嵌入式处理器的体系架构时,一般都是想到Intel的X86架构和ARM公司的ARM架构.X86架构和ARM架构最大的不同点就是使用的指令集不同,前者使用的CI ...

  8. FPGA嵌入式处理器的选择策略

    传统数字系统设计中,中小容量FPGA主要用于数字系统的接口.控制.胶合逻辑和复杂数字信号处理或数据处理算法的协处理,而主控制器一般采用单片机或嵌入式处理器完成.FPGA和主控制器分离的设计使得电路规模 ...

  9. 常见处理器MCU、MPU、DSP、FPGA等嵌入式处理器概念

    前文中多次出现了MCU.MPU.DSP.FPGA等嵌入式处理器概念,很多初学者可能比较迷惑,下面将对这些概念进行简单介绍. MCU 微控制器 (Micro-Controller Unit , MCU) ...

最新文章

  1. 账号管理工具_短视频矩阵管理工具,多个账号同步管理
  2. gantt project 使用
  3. (码友推荐)2018-07-12 .NET及相关开发资讯速递
  4. java迭代器 异常_java-迭代器并发修改异常
  5. config.class.php,Config.class.php
  6. 动态规划应用--找零钱
  7. plsql不加date
  8. mysql 统计当天,本周,本月,上一月的数据
  9. Android动态显示和隐藏状态栏
  10. js与python 抓包_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程
  11. 之前出的一道背包题面,暂无题解
  12. hisi spi nand flash驱动理解
  13. 普通化学三个单元总结
  14. 如何将矩阵化为约旦标准型_将矩阵化为约当标准型.doc
  15. Python自然语言处理 3 处理原始文本
  16. idea jsp mysql
  17. 360网站卫士前端公共库已停止服务
  18. 不写一行代码(一):实现安卓基于GPIO的LED设备驱动
  19. linux进程命令面试,面试常问的 25+ 个 Linux 命令
  20. 嵌入式学习DAY10 --- 封装子函数,GDB调试,gcc编译流程

热门文章

  1. 诺基亚n1 android 6.0,纳尼?Android 4.0?诺基亚N1手机?
  2. linux环境变量 export命令详解
  3. tp5支持啥数据库_YznCMS(御宅男CMS)是基于最新TP5.1框架和layui2.5的后台管理系统
  4. laravel middleware
  5. SpringBoot整合Flink(施耐德PLC物联网信息采集)
  6. 【UE4 第一人称射击游戏】39-“M4A1”武器设置
  7. C++ explicit关键字详解
  8. mysql xa 事务_MySQL的XA事务问题分析
  9. php上传照片作品,你需要知道你的作品怎么拍才好看!一张火起来的照片是好的宣传...
  10. JVM-逃逸分析浅析