2024考研计算机组成原理知识梳理:影响流水线的因素
2023.09.25 07:12

  今天新东方在线考研频道小编为各位考生整理了“2024考研计算机组成原理知识梳理:影响流水线的因素”,相关内容。专业、实用的计算机考研复习备考内容,能使大家更有效率的掌握相关知识点,避免盲目学!更多计算机考研复习精彩内容,时刻关注新东方在线考研频道!

  2024考研计算机组成原理知识梳理:影响流水线的因素

  结构冒险

  也称为硬件资源冲突,引起结构冒险的原因在于同一个部件同时被不同指令所用,也就是说由硬件资源竞争造成的。

  通常,机器的指令都存储在同一个存储器中,因此两条指令是不能同时访问存储器的。如下表中,LOAD指令的MEM阶段与第i+3条指令的IF阶段同时使用存储器,则此时发生结构冒险。当结构冒险发生的时候,后续指令的相应阶段必须后移。

  两条指令同时访存造成结构冒险

  指令时钟周期

  1 2 3 4 5 6 7 8 9

  LOAD指令IF ID EX MEM WB

  指令i+1IF ID EX MEM WB

  指令i+2IF ID EX MEM WB

  指令i+3IF ID EX MEM WB

  结构冒险的情形,通常的解决方案就是后续指令往后推迟。例如上表中的第i+3条指令因为与LOAD指令发生冒险,就将第i+3条指令往后延迟一个周期。如下表所示:

  延迟方式调整结构冒险

  指令 时钟周期

  1 2 3 4 5 6 7 8 9

  LOAD指令IF ID EX MEM WB

  指令i+1IF ID EX MEM WB

  指令i+2IF ID EX MEM WB

  指令i+3停顿 停顿 停顿 IF ID EX MEM WB

  主要有两种解决方法:

  (1)前一指令访存时,使后一条相关指令以及其后续指令暂停一个时钟周期。

  (2)单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行,这属于资源重复配置。

  二、数据冒险

  1. 数据冒险概念及解决方法

  数据冒险也称数据相关。引起数据冒险的原因在于后面指令用到前面指令结果时前面指令结果还未产生。

  主要有以下解决方法:

  (1)插入空操作指令

  在软件上采取措施,使相关指令延迟执行。最简单的做法是,在编译时预先插入空操作指令(NOP)。这样做的好处是硬件控制简单,但浪费了指令存储空间和指令执行时间。

  (2)插入气泡

  在硬件上采取措施,使相关指令延迟执行,通过硬件阻塞(stall)方式阻止后续指令执行。这种硬件阻塞的方式称为“插入气泡”。

  (3)采用转发技术

  设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不再读寄存器组,而是直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算过程,使本来需要暂停的操作变得可以继续执行,称为数据旁路技术。

  2. 数据冒险分类

  一般情况下,在考试当中,常考的有三种数据冒险:

  (1)写后写(WAW)

  指令j试图在指令i写入寄存器前就写入该寄存器内容,这样,两次写的先后次序被颠倒,就会错误地使指令i写入的值成为该寄存器的内容。

  (2)读后写(WAR)

  指令j试图在指令i读出寄存器前就写入该寄存器内容,这样,指令i就会错误的读出该寄存器中的新内容。

  (3)写后读(RAW)

  指令j试图在指令i写入寄存器前就读出该寄存器内容,这样,指令j就会错误的读出寄存器中的旧内容。

  三、控制冒险

  控制冒险是由指令执行顺序遇到改变而引起的流水线阻塞被称为控制冒险。各类转移指令(包括调用、返回指令等)的执行,以及异常和中断的出现都会改变指令执行顺序,因而都可能会引发控制冒险。如下图所示。

  主要有以下解决控制冒险的方法:

  1. 简单预测

  简单预测与指令执行历史无关,因此它是一种静态预测方式。可以简单预测分支指令的条件总是不满足或总是满足。对于预测不满足的情况,流水线总是按顺序继续分支指令的后续指令,如果在数据通路中检测到实际条件确实不满足时,则预测正确,没有任何时间损失;如果检测到实际条件满足时,则预测不正确,此时将分支指令后续不该执行的指令的控制信号清0,就能保证不会改变指令执行结果,相当于执行了空操作。

  2. 动态预测

  动态预测的准确率可达90%,现在几乎所有处理器都采用动态预测。它利用分支指令发生转移的历史情况来进行预测,并根据实际执行情况动态调整预测位。

  3. 延迟分支

  延迟分支采用编译优化来调整指令顺序,把分支指令前与分支指令无关的指令调到分支指令后面执行,以填充延迟损失时间片,不够时用NOP操作填充。因为延迟分支技术通过编译器重排指令顺序来实现,所以它属于静态调度技术。

  四、试题再现

  (2016)在无转发机制五段基本流水线(取指,译码/读寄存器,运算,访存,写回寄存器)中,下列指令序列存在数据冒险的指令对是( )。

  A. I1和I2 B. I2和I3 C. I2和I4 D. I3和I4

  【答案】

  数据冒险指的是下一条指令会用到上一条指令的计算结果。只有I3用到了I2的输出。I3将要运算的时候I2还没有写回,因此这两个存在数据冲突。故选B。

  以上就是关于“2024考研计算机组成原理知识梳理:影响流水线的因素”的内容,更多计算机考研复习精彩内容,请持续关注新东方在线考研频道!


MORE+

    相关阅读 MORE+

    版权及免责声明
    1.凡本网注明"稿件来源:新东方在线"的所有文字、图片和音视频稿件,版权均属北京新东方迅程网络科技有限公司所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本网协议授权的媒体、网站,在下载使用时必须注明"稿件来源:新东方在线",违者本网将依法追究责任。
    2.本网末注明"稿件来源:新东方在线"的文/图等稿件均为转载稿,本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如其他媒体、网站或个人从本网下载使用,必须保留本网注明的"稿件来源",并自负版权等法律责任。如擅自篡改为"稿件来源:新东方在线”,本网将依法追究责任。
    3.如本网转载稿涉及版权等问题,请作者致信weisen@xdfzx.com,我们将及时外理

    Copyright © 2011-202

    All Rights Reserved