带你了解嵌入式处理器的流水线技术
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处理器开发详解》
带你了解嵌入式处理器的流水线技术相关推荐
- 32位ARM嵌入式处理器的调试技术
32位ARM嵌入式处理器的调试技术 https://blog.csdn.net/bekars/article/details/611072 摘要:针对32位ARM处理器开发过程中调试技术的研究,分析了 ...
- 【组成原理-处理器】流水线技术
文章目录 0 流水线性能指标 0.1 指令执行时间 0.2 流水线的吞吐率 0.3 流水线的加速比 0.4 流水线的效率 1 基本流水线技术 1.0 流水线设计基本原则 1.1 五段流水线 1.1.1 ...
- 处理器中的流水线技术
处理器中的流水线技术 在现代处理器中,流水线是一个最基本的概念.在了解cpu的时候,很多时候会提及拥有多少级流水线.虽然这个概念并不是在计算机技术中诞生的,但是这个技术却在处理器世界中大放异彩. 流水 ...
- [转]Cortex-a8 arm11 arm9 xscale powerpc 嵌入式处理器实测性能
周明的嵌入式技术博客 Cortex-a8 arm11 arm9 xscale powerpc 嵌入式处理器实测性能 Verfasst von zhoum am Do, 03/05/2009 - 15: ...
- arm的多级流水线技术和和存储管理单元mmu
流水线概念 流水线的概念与原理 处理器按照一系列步骤来执行每一条指令,典型的步骤如下: (1)从存储器读取指令(fetch). (2)译码以鉴别它属于哪一条指令(decode). (3)从指令中提取指 ...
- 连载-第1章绪论 1.2嵌入式处理器
1.1 嵌入式处理器 1.1.1 哈佛结构和冯.诺依曼结构 相信学过计算机技术这门课程的读者都知道,通用CPU采用的是冯.诺依曼结构,而很多嵌入式处理器多采用哈佛结构,那么这两种结构究竟有什么区别,各 ...
- 嵌入式处理器的体系架构与内核详解
嵌入式处理器的体系架构与内核详解 当我们谈及嵌入式处理器的体系架构时,一般都是想到Intel的X86架构和ARM公司的ARM架构.X86架构和ARM架构最大的不同点就是使用的指令集不同,前者使用的CI ...
- FPGA嵌入式处理器的选择策略
传统数字系统设计中,中小容量FPGA主要用于数字系统的接口.控制.胶合逻辑和复杂数字信号处理或数据处理算法的协处理,而主控制器一般采用单片机或嵌入式处理器完成.FPGA和主控制器分离的设计使得电路规模 ...
- 常见处理器MCU、MPU、DSP、FPGA等嵌入式处理器概念
前文中多次出现了MCU.MPU.DSP.FPGA等嵌入式处理器概念,很多初学者可能比较迷惑,下面将对这些概念进行简单介绍. MCU 微控制器 (Micro-Controller Unit , MCU) ...
最新文章
- 账号管理工具_短视频矩阵管理工具,多个账号同步管理
- gantt project 使用
- (码友推荐)2018-07-12 .NET及相关开发资讯速递
- java迭代器 异常_java-迭代器并发修改异常
- config.class.php,Config.class.php
- 动态规划应用--找零钱
- plsql不加date
- mysql 统计当天,本周,本月,上一月的数据
- Android动态显示和隐藏状态栏
- js与python 抓包_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程
- 之前出的一道背包题面,暂无题解
- hisi spi nand flash驱动理解
- 普通化学三个单元总结
- 如何将矩阵化为约旦标准型_将矩阵化为约当标准型.doc
- Python自然语言处理 3 处理原始文本
- idea jsp mysql
- 360网站卫士前端公共库已停止服务
- 不写一行代码(一):实现安卓基于GPIO的LED设备驱动
- linux进程命令面试,面试常问的 25+ 个 Linux 命令
- 嵌入式学习DAY10 --- 封装子函数,GDB调试,gcc编译流程
热门文章
- 诺基亚n1 android 6.0,纳尼?Android 4.0?诺基亚N1手机?
- linux环境变量 export命令详解
- tp5支持啥数据库_YznCMS(御宅男CMS)是基于最新TP5.1框架和layui2.5的后台管理系统
- laravel middleware
- SpringBoot整合Flink(施耐德PLC物联网信息采集)
- 【UE4 第一人称射击游戏】39-“M4A1”武器设置
- C++ explicit关键字详解
- mysql xa 事务_MySQL的XA事务问题分析
- php上传照片作品,你需要知道你的作品怎么拍才好看!一张火起来的照片是好的宣传...
- JVM-逃逸分析浅析