处理器中的流水线技术

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

流水线(Pipeline)技术是指程序在执行时候多条指令重叠进行操作的一种准并行处理实现技术。通俗的讲将一个时序过程,分解成若干个子过程,每个过程都能有效的与其他子过程同时执行。这种思想最初是在RISC的架构中出现的,旨在提高处理器处理效率,争取在一个时钟周期中完成一条指令。

最经典的当属MIPS(无内部互锁的流水线处理器)的五级流水线技术。MIPS体系结构本身就是为了流水线而设计的,cpu在高速缓存中运行,每条指令的执行过程都分成五级。每一级成为一个流水线阶段,每个阶段占用固定的时间,通常是一个时钟周期。

上图是MIPS的五级流水线

其中:

IF(instruction fetch),从指令高速缓存中获取下一条指令。

RD(Read register),从指定的源寄存器域中指定的cpu寄存器中读取数据。

ALU(arithmetic/logic  unit),算术和逻辑运算操作。

MEM(memory R/W),读写数据高速缓存中的内存变量。

WB(Write back),将结果写入寄存器堆中。

很明显,如果只执行一条指令的话,流水线是不会提高效率的。但是如果要完成多条指令,利用流水线的并行原理,其实是可以提高几倍的处理速度。

由于流水线技术的高效性,后来所有的处理器都引进了该实现,当然包括x86的处理器,当年奔四号称20级的流水线结构。但是,是不是流水线级数越多越好呢?流水线级数越多,在处理多指令的时候确实也会越高效,但必然以高成本为代价,同时也会出现很多相关的一些副作用。

流水线的更多详细说明可以参阅更多书籍或者wiki。对于基础书籍推荐一下《大话处理器》的部分章节。

处理器中的冒险

流水线给处理器带来了效率,当然也有问题。称之为流水线冒险(HaZard)。

1、  结构冒险

由于处理器资源冲突,而无法实现某些指令或者阶段的组合实现,就称之为处理器有结构冒险。

比如,早期的处理器中,程序和数据是存储在一起的,那么容易出现下图的情况:在第四个cycle中,IF和MEM同时访问存储器导致有一个操作要等待,此时hazard就出现了。现在的处理器已经解决了该问题:指令存储在L1P cache中,数据存储L1D cache中,单独访问,不会影响相互操作。

2、  数据冒险

如果流水线中原来有先后顺序的指令同一时刻处理时,可能会导致出现访问了错误的数据的情况。

在汇编语句中,add R1,R2,R3 将寄存器R2和R3的和赋予R1,改变R1的值;而紧接着下面的语句:add R4,R1,R5则会使用R1的值,可是R1必须在第一条语句中的第5个cycle才能更新到寄存器中,语句二是在第4个cycle就要访问R1,也就是说第二,条指令此时在使用错误的R1的值。这是数据hazard出现了。

很容易就能想到一种方式解决:在两条指令中添加一条空指令:nop。但是会影响处理器的指令的执行效率。在现代处理器技术中,已经用forwarding的方式解决了。如下图,如果处理器在检测到当前指令的源操作数正好在流水线的EX或者MEM阶段,接直接将ex和mem寄存器的值传递给ALU的输入,而不是再从寄存器堆中获取数据了。因为此时寄存器堆中的数据可能是没有被及时更新的。

当然不仅在EX阶段有这种问题出现,在mem阶段也容易出现。

3、  控制冒险

在流水线中的的执行指令时,由于并行处理的关系,后面很多指令其实都在流水线中开始处理了,包括预取值和译码。那么,如果此时程序中出现一条跳转语句怎么办呢?因为程序已经跑到其他地址处执行,流水线中之前已经做好的预取值和译码动作都不能使用了。这些会被处理器的专有部件flush掉,重新开始新的流水线。此时我们可以称之为出现了控制hazard。这种情况对于程序和效率来说是存在很大损失的。

当然,我们也有解决方案,也就是在jump指令后面(不会被真正使用,但是会进入流水线)添加nop。在MIPS程序中,经常在jump指令后面添加nop语句。

在X86架构中,是通过硬件来实现flush,将无效的流水线排空,以保证正确运行流水线。这里会涉及到分支预测技术的使用。

在其他一些处理器中,用软件的方式来处理,添加nop。同时在编译器中通过乱序的思想用有效指令代替nop。这样也可以避免转跳带来的性能损失。

处理器中的流水线技术相关推荐

  1. 计算机中流水线的应用,计算机中的流水线技术

    计算机中的流水线技术 杨振华;陈明;赵建勋 [期刊名称]<科技信息> [年(卷),期]2009(000)003 [摘要]本文介绍了计算机中广泛采用的流水线技术,对各种各样的流水线进行了分类 ...

  2. 计算机中的流水线技术到底是个啥?

    写在前面 流水线技术是计算机中的一种相当重要的技术.简单的说,流水线技术的出现使得计算机能够支持并行计算,能够并行执行任务.尽管流水线技术非常重要,但是很多小伙伴对流水线技术还是一知半解,甚至很多小伙 ...

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

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

  4. FPGA中的流水线设计(Pipeline Design)

    流水线设计 前言: 本文从四部分对流水线设计进行分析,具体如下: 第一部分什么是流水线 第二部分什么时候用流水线设计 第三部分使用流水线的优缺点 第四部分流水线加法器举例 第一 什么是流水线 流水线设 ...

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

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

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

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

  7. 四核处理器_(技术文档)你知道AMD Ryzen处理器中的CCX与CCD是什么吗?

    AMD的Ryzen CPU由核心组件(即CCD和CCX)组成.但是什么是CCX,它与AMD处理器中的CCD有何不同?今天,新浪VR就给大家带来一篇较为硬核的技术性文档: 影响AMD最近在消费市场取得成 ...

  8. 微型计算机体系结构的主要特点,高性能微型计算机体系结构:奔腾、酷睿系列处理器原理与应用技术...

    高性能微型计算机体系结构:奔腾.酷睿系列处理器原理与应用技术 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! <高性能微型计算机体系结 ...

  9. 软考中级【数据库系统工程师】第1章:计算机系统知识,自学软考笔记,备考2022年5月份软考,计算机硬件系统CPU组成指令寄存器组总线输入输出的程序控制方式计算机体系结构与存储系统加密技术流水线技术

    前情提要:笔记只整理与考试相关的重点知识,也就是历年真题出现过的考点我都会记录笔记,一些不重要的内容我就不记录了,大家可以自行查看教材. 1.1计算机硬件基础知识 考点1:计算机硬件系统的组成 考点2 ...

最新文章

  1. 无头结点单链表的逆置_单链表的增删查 逆置 倒数第k个节点等问题
  2. 初学者选黑卡还是微单_入门单反和微单相机该买哪个
  3. HDU-2094 产生冠军
  4. 利用T-SQL语句创建数据表
  5. Intel Realsense D435 测试摄像头在不同曝光值下的帧生成时间(防止曝光时间过长导致fps下降)auto_exposure_priority(没成功)
  6. 太原理工大学计算机宿舍,2019太原理工大学宿舍怎么样 环境好不好
  7. 音视频开发(5)---FFMPEG视音频编解码零基础学习方法
  8. react-redux草稿
  9. c 正则去掉html标签,C#用正则表达式去掉Html中的script脚本和html标签
  10. php url参数用–,php获取URL各部分参数
  11. HTML 5 会让iOS和Android开发者转行吗?
  12. A - A Dangerous Maze
  13. css免费网站,5个免费网站模板|免费CSS模板网站汇总
  14. Pikachu-暴力破解
  15. 可孚医疗的数字化突围
  16. Docker安装、开发环境配置及项目搭建(二,Docker桌面应用)
  17. java实现计算器算法_怎样用java 实现计算器的 算法
  18. 【Unity3D_常用模块】 Socket网络模块(超级详细完整,上线项目中稳定使用着)
  19. DFMEA \FTA
  20. 初中数学503个必考知识点_高考数学必考知识点高中数学重点知识归纳

热门文章

  1. Redhat_rhel_linux镜像下载,持续更新......
  2. AssetsManager下载类
  3. string字符串转换为Date日期格式
  4. STM32 DAC + DMA + TIM 输出正弦波,三角波,方波信号
  5. Vector-常用CAN工具 - CANoe入门到精通_01
  6. 双足竞走机器人的意义_基于STM32双足竞步机器人的研究与设计
  7. 双系统下卸载Ubuntu方法
  8. 虚拟机网络模式(NAT模式)
  9. 20 人机猜拳互动游戏开发
  10. 考试周刊杂志考试周刊杂志社考试周刊编辑部2022年第39期目录