流水线概念

流水线的概念与原理
处理器按照一系列步骤来执行每一条指令,典型的步骤如下:
(1)从存储器读取指令(fetch)。
(2)译码以鉴别它属于哪一条指令(decode)。
(3)从指令中提取指令的操作数(这些操作数往往存在于寄存器reg中)。
(4)将操作数进行组合以得到结果或存储器地址(ALU)。
(5)如果需要,则访问存储器以存储数据(mem)。
(6)将结果写回到寄存器堆
并不是所有的指令都需要上述每一个步骤,但是,多数指令需要其中的多个步骤。这些步骤往往使用不同的硬件功能,如ALU可能只在第(4)步中用到。因此,如果一条指令不是在前一条指令结束之前就开始,那么在每一步骤内处理器只有少部分的硬件在使用。 有一种方法可以明显改善硬件资源的使用率和处理器的吞吐量,这就是在当前一条指令结束之前就开始执行下一条指令,即通常所说的流水线(Pipeline)技术
流水线是RISC处理器执行指令时采用的机制。使用流水线技术,可在取下一条指令的同时译码和执行其他指令,从而加快执行的速度。可以把流水线看做是汽车生产线,每个阶段只完成专门的处理器任务。
采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤(1)并转向步骤(2)时,下一条指令就开始执行步骤(1)。从原理上说,这样的流水线应该比没有重叠的指令执行快6倍,但由于硬件结构本身的一些限制,实际情况会比理想状态差一些。

3级流水线ARM组织
到ARM7为止的ARM处理器使用简单的3级流水线,它包括下列流水线级:
● 取指令(fetch):从寄存器装载一条指令。
● 译码(decode):识别被执行的指令,并为下一个周期准备数据通路的控制信号。在这一级,指令占有译码逻辑,不占用数据通路。
● 执行(excute):处理指令并将结果写回寄存器
当处理器执行简单的数据处理指令时,流水线使得平均每个时钟周期能完成1条指令。但1条指令需要3个时钟周期来完成,因此,有3个时钟周期的延时(latency),但吞吐率(throughput)是每个周期1条指令。

正因为三级流水线技术,arm的程序计数器pc=正在执行的指令地址+8,即正在执行指令的下两条指令

mmu

在创建多任务嵌入式系统时,最好用一个简单的方式来编写、装载及运行各自独立的任务。目前大多数的嵌入式系统不再使用自己定制的控制系统,而使用操作系统来简化这个过程。较高级的操作系统采用基于硬件的存储管理单元(MMU)来实现上述操作。
MMU提供的一个关键服务是使各个任务作为各自独立的程序在自己的私有存储空间中运行。在带MMU的操作系统控制下,运行的任务无须知道其他与之无关的任务的存储需求情况,这就简化了各个任务的设计。 MMU提供了一些资源以允许使用虚拟存储器(将系统物理存储器重新编址,可将其看成一个独立于系统物理存储器的存储空间)。MMU作为转换器,将程序和数据的虚拟地址(编译时的链接地址)转换成实际的物理地址,即在物理主存中的地址。这个转换过程允许运行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置。 这样存储器就有两种类型的地址:虚拟地址和物理地址。虚拟地址由编译器和连接器在定位程序时分配;物理地址用来访问实际的主存硬件模块(物理上程序存在的区域)

分页时存储管理:


地址转化过程:

arm的多级流水线技术和和存储管理单元mmu相关推荐

  1. ARM基础教程 | ARM多级流水线的优缺点

    关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | strongerHuang 为什么有些CPU的主频更低,但运算效率却更高呢? 比如:51单片机30M主频,STM ...

  2. 【arm】ARM流水线技术与指令使用建议

    Date: 2018.8.4 ------------------------------------------------------------------------------------- ...

  3. 计算机硬件基础ARM处理器概论(ARM体系结构与接口技术)

    计算机硬件基础 D1 底层课程导学 1.编程基础 2.应用开发 (函数) 3.底层开发 C语言基础 IO ARM C高级与linux 进程 系统移植 数据结构 网络编程 驱动开发 嵌入式系统分层 操作 ...

  4. LV.9 ARM体系结构与接口技术

    1 计算机硬件基础 Day1-1 底层课程导学 课程回顾 1.编程基础 1.C语言基础 2.C高级及Linux 3.数据结构 2.应用开发 1.IO 2.进程 3.网络编程 3.底层开发 1.ARM ...

  5. ARM体系结构及接口技术(部分理论知识)

    1.ARM相关的概念 指令->指令集->架构->arm内核->SOC 1.1 课程目的 为学习驱动打基础 了解ARM处理器硬件的工作原理 驱动开发 1> 裸机驱动开发:没 ...

  6. 带你了解嵌入式处理器的流水线技术

    ​01.为什么要引入流水线技术 嵌入式处理器执行指令时,一般步骤为:首先从存储器中读取指令,然后对该指令进行译码,识别出被执行的指令属于哪一种指令,然后再从指令中提取到操作数并进行组合,接着根据需要将 ...

  7. 采用流水线技术实现8位加法器

    说明      本文基于FPGA和CPLD器件,采用非流水线和流水线技术实现8位加法器,并对比其Quartus II仿真结果和波形时序.      器件选择: Stratix:EP1S40F1020C ...

  8. 流水线技术在高速数字电路设计中的应用

    流水线技术在高速数字电路设计中的应用 来源:电子开发网 作者:肖良军 时间:2007-09-04 发布人:谭欣 摘要:流水线技术是设计高速数字电路的一种最佳选择之一,对其实现原理作了较形象的阐述.针对 ...

  9. 【Computer Organization笔记12】流水线技术概述

    本次笔记内容: P23 计算机组成原理(23) P24 计算机组成原理(24) 本节课对应幻灯片: 组成原理26 pipeline.pptx 文章目录 本讲概要 多周期CPU 生活中的流水线 顺序洗衣 ...

最新文章

  1. 青羊区光华中心机器人_北京大学招收机器人工程本科生
  2. Android recipe 在代码中写布局
  3. Java核心技术卷I基础知识3.6.6 码点与代码单元
  4. 2.redis配置详解
  5. 020_Jedis的Set数据类型
  6. [html] title与h1、b与strong、i与em的区别分别是什么?
  7. Python3选择支持非ASCII码标识符的缘由
  8. dreamweaver序列号免费_dreamweaver8【dreamweaver8序列号】dreamweaver8注册码序列号简体中文版...
  9. 180729 5行命令win10企业版永久激活方法
  10. 6PSS并联结构的运动学正逆解推导
  11. Linux下安装小企鹅输入法
  12. 如何在MSDN上获取Win7镜像
  13. html网页效果跳动的心
  14. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十五║初探SSR服务端渲染(个人博客二)...
  15. 【unity shader】unity游戏特效-仿《崩坏3》希儿魇夜星渊大招特效(运用CommandBuffer和屏幕后处理)
  16. OpenFOAM 粘弹性流体求解器rheoTool
  17. 用友U9 查看功能页面实体
  18. web语意化的深入理解
  19. Vue 移动端调用相机和相册实现图片上传
  20. Tomcat - 解决which must be escaped when used within the value错误

热门文章

  1. Win7无线网络功能没有开启怎么办?
  2. linux 命令之du与df
  3. 论文笔记Multi-Scale Temporal Cues Learning for Video Person Re-Identification
  4. 127.Lily HBase Indexer的使用
  5. 2021年监测断电告警器使用方式
  6. 来自投资理财新手的分享
  7. bugkuCTF之这是一张简单的图片
  8. LinuxKernel优秀博客
  9. 【每日一道智力题】之 赛马找最快
  10. web课程设计网页规划与设计:中国风茶文化网站设计(6个页面) HTML+CSS+JavaScript...