CPU指令流水线

1.指令流水原理

2.影响流水线性能因素

2.1结构相关 资源相关

2.2数据相关

2.3控制相关

3.流水线性能

3.1吞吐率

3.2加速比

3.3效率

4.流水线多发技术

4.1超标量技术

4.2超流水线技术

4.3超长指令字技术

5.流水线结构

5.1指令流水线结构

5.2运算流水线结构


指令执行过程分为多个阶段,每个阶段需要的资源不一样,因此可以采用流水线技术,同时执行多条指令的不同阶段。

指令周期概念:https://blog.csdn.net/u014106644/article/details/95199989

1.指令流水原理

可以将指令周期简单分为取指令和执行指令

取指令由取指部件完成,执行指令由执行部件完成,如果采用串行化执行,则在执行指令1时,取指部件是空闲的。

指令的二级流水

在执行指令1阶段,同时将指令2取出放入指令缓存部件,等执行部件执行指令1结束,则直接执行指令2,理想情况,流水线的效率将加倍。

仍存在的问题:

指令执行时间一般大于取值时间,因此取值阶段要等待一段时间,存放在缓冲区的指令不能立即交给执行部件;

当遇到条件转移指令时,下一条指令是不可知的;采用猜测法,遇到条件转移指令时,也将下一条指令取出送入指令缓冲区,如果转移没有发生则继续执行,如果转移发生,则重新取指令。

将指令处理过程进一步细分:

取指FI   从存储器取出一条指令放入指令部件缓冲区

指令译码DI   确定操作性质和操作数地址形成方式

计算操作数地址CO  计算操作有效地址

取操作数FO  从存储器中取出操作数

执行指令EI   执行指令,将结果存入目的位置

写操作书WO  将结果存入寄存器

将指令周期分为6个阶段,可以实现指令的6级流水

2.影响流水线性能因素

2.1结构相关 资源相关

不同指令争用同一部件产生资源冲突

FO取指和FI取操作数会发生访存冲突

解决方式:

流水线完成前一条指令对数据的存储器访问时,暂停取后一条指令

设置独立存储器存放操作数和指令

采用指令预取技术,将指令预取到指令队列中,这样取操作数操作便可以独占存储器访问

2.2数据相关

不同指令重叠操作,可能改变对操作数的读写访问顺序

数据相关冲突有:

写后读相关:先写入寄存器,再读出寄存器

读后写相关:先读寄存器,再写寄存器

写后写相关:指令1先写寄存器,指令2再写寄存器

解决方式:

后推法  遇到数据相关时,停顿后继指令运行,直到前面指令结果已经生成

定向技术  旁路技术   将某条指令执行结果不送回寄存器而是直接送到其他指令所需的地方

2.3控制相关

由转移指令引起  若是条件转移指令,则转移目标地址可能发生跳转,影响流水线效率。

      

解决方式:

尽早判别转移是否发生,尽早生成转移目标地址

预取转移成功和不成功两个方向的目标指令

加快和提前形成条件码

3.流水线性能

3.1吞吐率 

单位时间内流水线完成指令或输出结果数量

最大吞吐率:流水线在连续流动达到稳定状态后所得吞吐率

m段流水线各段时间均为t

实际吞吐率:流水线完成n条指令实际吞吐率

3.2加速比 

m段流水线速度与等功能非流水线速度之比

3.3效率 

 流水线中各功能段利用率

流水线效率为流水线各段处于工作时间时空区和流水线中各段总时空区之比,如图

4.流水线多发技术

假定指令周期分为四个阶段:取指FI  译码ID 执行EX  回写WR

4.1超标量技术   

在每个时钟周期内同时并发多条独立指令

处理机中配置多个功能部件和指令译码电路,多个寄存器端口和总线;编译程序决定哪几条相邻指令可并行执行

例如   三条指令是相互独立的,可以并行执行

MOV BL,8

ADD AX,1756H

ADD CL,4EH

4.2超流水线技术   

在一个时钟周期内再分段,一个功能部件使用多次

4.3超长指令字技术 

由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字

5.流水线结构

5.1指令流水线结构

将指令执行阶段分为取指  指令译码  地址形成  取操作数 执行指令  回写结果几个阶段,对应相应结构如下

5.2运算流水线结构

将浮点加法运算分成对阶  尾数加  结果规格化  3个阶段

参考资料:计算机组成原理--哈工大--刘宏伟

计算机组成原理17----CPU指令流水线相关推荐

  1. 【计算机组成原理】CPU:单周期数据通路(MIPS)

    寄存器传送语言RTL 1)R(r)表示寄存器r的内容 2)M(address)表示主存储器地址address的内容 3)传输方向"←"表示,从右向左传输 4)程序计数器PC的内容直 ...

  2. 计算机组成原理 启航教育,2021计算机考研:计算机组成原理知识点CPU的功能和基本结构...

    启航教育小编为大家整理了关于"2021考研:计算机组成原理知识点CPU的功能和基本结构"的相关内容,希望可以帮助到大家,祝大家考上自己理想的院校 CPU的功能和基本结构 CPU主要 ...

  3. 【计算机组成原理】CPU如何区分指令和数据

    [计算机组成原理]CPU如何区分指令和数据 指令周期 题目 指令和数据放在内存中,对于CPU而言,我们要怎么区分里面是数据还是指令呢? 冯 · 诺依曼计算机中指令和数据均以二进制形式存放在存储器中,C ...

  4. 计算机组成原理网易云,计算机组成原理之CPU

    课程概况 哈尔滨工业大学"计算机组成原理"课程是国家级精品课程,以国家级教学名师唐朔飞教授编写的"十二五"规划教材为基础,将教学课件.学习指导与习题解答.试题库 ...

  5. 计算机组成原理——中央处理器cpu

    计算机组成原理-题库 中央处理器选择题 1.中央处理器(CPU)是指什么. A. 运算器 B. 控制器 C. 运算器和控制器 D. 运算器.控制器和主存储器 2.在CPU中跟踪指令后继地址的寄存器是什 ...

  6. 深入浅出计算机组成原理 通过CPU主频看性能(自我提升第8天)

    希望大家关注菜鸟,不然后期的文章,各位可能无法及时看到 文章目录 深入浅出计算机组成原理 1.计算机性能的两个指标 2.计算机的计时单位: CPU时钟 大家了解了上面的知识点,那接下来就是两者结合的高 ...

  7. 计算机组成原理之CPU的构造和原理

    CPU的组成和功能 分为运算器和控制器.运算器负责对数据的加工,即对数据进行算术和逻辑运算:控制器是整个系统的指挥中枢,对整个计算机系统进行有效的控制,包括指令控制.操作控制.时间控制和中断管理 CP ...

  8. 计算机组成原理(四)-CPU的高速缓存

    当我们对各组件有了认识之后,那么我们在认识了CPU直接去访问内存的时候,需要申请总线控制权,而且一个8G的内存我们需要访问的地址也许就高达2的30次方,一次寻址访问拿到数据可能就要近百ns,而在CPU ...

  9. 【计算机组成原理】CPU

    CPU的基本功能 CPU主要由运算器和控制器两大部分组成. 控制器的功能是负责协调并控制计算机的各部件程序的指令序列,包括取指令.分析指令.执行指令. 运算器的功能是对数据进行加工. CPU的基本功能 ...

  10. 计算机组成原理之CPU、外存、内存之间的关系

    现在我们使用的计算机基本都是在电脑之父冯·诺依曼的理论下所制造的,即组成计算机的五大部件为:输入设备.运算器.控制器.存储器.输出设备. 输入设备: 向电脑输入数据和信息的设备.例如鼠标键盘等. 运算 ...

最新文章

  1. 哪些因素影响数据存储系统的IOPS性能?
  2. 华中农大在土壤矿物-微生物相互作用研究方面取得新进展
  3. HUST 1555 A Math Homework
  4. [Linq]Linq To Xml (待整理)
  5. mysql batch insert 遇到错误跳过_这是MySQL的bug吗?
  6. java通过commons-fileupload实现多张图片的上传(jsp页面)
  7. [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]
  8. synchronized不能锁静态变量_面试官:请说一下对象锁和类锁的区别
  9. 黑客SQL服务器入侵实战演习
  10. ZOJ 3635 Cinema in Akiba[ 大规模阵列 ]
  11. java接口的作用和意义_java什么是接口?接口有什么作用?接口如何使用?
  12. Lattice Diamond 的学习之新建工程
  13. 蓝桥杯c语言必备知识点,C语言知识点大汇总
  14. java获取时间戳单位秒,如何测试给定的时间戳是以秒或毫秒为单位?
  15. [存储] Cobar使用文档(可用作MySQL大型集群解决方案)
  16. 24位掩码和30个掩码_高级ds位掩码和dp的问题
  17. 神经网络Loss损失函数总结
  18. 安卓系统能运行 linux,重磅!安卓系统竟能运行PC软件,实测效果令人惊在当场!...
  19. 【功能测试05-熟悉tpshop项目】
  20. 2021的年终总结(仰望星空、脚踏实地)

热门文章

  1. Java 异常(Exceptions)
  2. Python 二维数据
  3. 基于51单片机密码锁数码管显示步进电机开锁设计
  4. 计算机二级选择题记忆知识点
  5. Ubuntu 搭建SVN服务器
  6. AFNetworking 返回3840
  7. webERP开源系统安装配置
  8. Java实现中文名字排序
  9. 用python打印出一个人的照片_python爬取图片实例 - 一个人看日出,一个人看夕阳,一个人走路,一个人欢笑 - OSCHINA - 中文开源技术交流社区...
  10. 分布式系统(交互、协作)