chapter09_指令流水线

合集下载

计算机指令流水线回顾

计算机指令流水线回顾

计算机指令流水线回顾计算机指令流水线是一种高效的指令执行技术,旨在提高计算机的运行速度。

在本文中,我们将回顾计算机指令流水线的基本原理、优点和局限性,并提供相关题库类型的答案和解析。

一、引言计算机指令流水线是一种并行处理技术,它允许多个指令同时在不同的处理阶段执行,以提高指令执行的速度和效率。

本节将介绍计算机指令流水线的定义和基本原理。

二、计算机指令流水线的原理计算机指令流水线是基于指令执行的并行处理技术。

它将一条指令的执行划分为多个阶段,并且允许多个指令同时在不同的阶段执行。

下面是计算机指令流水线的基本原理:1. 指令划分阶段:将一条指令划分为多个独立且可执行的子指令。

2. 指令执行阶段:每个子指令在不同的处理阶段执行,例如指令提取、指令解码、操作数获取等。

3. 管道寄存器:用于在不同的阶段之间传递数据和指令。

4. 阶段并行执行:多个指令在不同的阶段同时执行,实现指令级并行。

5. 超标量流水线:同时执行多条指令。

三、计算机指令流水线的优点计算机指令流水线相较于传统的顺序执行方式,具有以下优点:1. 提高吞吐量:通过并行执行多条指令,大大提高了计算机的吞吐量。

2. 提高运行速度:指令流水线的并行执行能够加快指令的执行速度,提高计算机的运行效率。

3. 提高资源利用率:指令流水线可以充分利用计算机的硬件资源,使处理器单元始终保持繁忙状态。

四、计算机指令流水线的局限性虽然计算机指令流水线有很多优点,但也存在一些局限性:1. 指令依赖:由于指令之间存在数据或控制依赖关系,可能导致流水线的暂停或冲突,进而影响指令的执行速度和效率。

2. 硬件成本:为了实现指令流水线,需要增加硬件资源和复杂的控制电路,导致成本的增加。

3. 分支预测错误:分支指令的预测错误或错误的预测会导致流水线的中断和重组。

五、题库类型答案与解析在计算机指令流水线的相关题库中,我们可以通过以下方式给出答案与解析:1. 填空题:要求填写与指令流水线相关的概念、原理或术语。

指令流水线

指令流水线

第七章指令流水线2. 简单回答下列问题。

(参考答案略)(1)流水线方式下,一条指令的执行时间缩短了还是加长了?程序的执行时间缩短了还是加长了?为什么?(2)具有什么特征的指令集易于实现指令流水线?(3)流水线处理器中时钟周期如何确定?单条流水线处理器的CPI为多少?每个时钟周期一定有一条指令完成吗?为什么?(4)流水线处理器的控制器实现方式更类似于单周期控制器还是多周期控制器?(5)为什么要在各流水段之间加寄存器?各流水段寄存器的宽度是否都一样?为什么?(6)你能列出哪几种流水线被阻塞的情况?你知道硬件和软件是如何处理它们的吗?(7)超流水线和多发射流水线的主要区别是什么?(8)静态多发射流水线和动态多发射流水线的主要区别是什么?(9)为什么说Pentium 4是“CISC壳、RISC核”的体系结构?3. 假定在一个五级流水线(如P.205图7.1所示)处理器中,各主要功能单元的操作时间为:存储单元:200ps;ALU和加法器:150ps;寄存器堆读口或写口:50ps。

若执行阶段EX 所用的ALU操作时间缩短20%,则能否加快流水线执行速度?如果能的话,能加快多少?如果不能的话,为什么?若ALU操作时间增加20%,对流水线的性能有何影响?若ALU 操作时间增加40%,对流水线的性能有何影响?参考答案:a. ALU操作时间缩短20%不能加快流水线指令速度。

因为存储单元的时间为200ps,所以流水线的时钟周期不会因为ALU操作时间的缩短而变短。

b. ALU操作时间延长20%时,变为180ps,比200ps小,对流水线性能没有影响;c. ALU操作时间延长40%时,变为210ps,比200ps大,所以,流水线的时钟周期将变为210,其效率降低了(210-200)/200=5%。

4. 假定某计算机工程师想设计一个新CPU,一个典型程序的核心模块有一百万条指令,每条指令执行时间为100ps。

(1)在非流水线处理器上执行该程序需要花多长时间?(2)若新CPU是一个20级流水线处理器,执行上述同样的程序,理想情况下,它比非流水线处理器快多少?(3)实际流水线并不是理想的,流水段间数据传送会有额外开销。

中央处理器CPU——指令流水线

中央处理器CPU——指令流水线

中央处理器CPU——指令流⽔线指令流⽔线概念:⼀条指令的执⾏过程划分为不同阶段,占⽤不同硬件资源,多条指令重叠操作实现并⾏处理1.顺序执⾏:⼜称串⾏执⾏⽅式;传统的冯诺依曼机器优点:控制简单,硬件代价⼩缺点:速度慢,各功能部件利⽤率低2.⼀次重叠执⾏⽅式:优点:时间缩短三分之⼀,各功能部件利⽤效率提⾼缺点:控制复杂,硬件开销增⼤3.⼆次重叠执⾏⽅式:优点:时间缩短三分之⼆,理想状态指令执⾏过程图:⽤于分析指令执⾏过程和影响流⽔线因素时空图:⽤于分析流⽔线的性能吞吐率TP:单位时间内流⽔线完成的任务数量或输出结果的数量加速⽐S:同⼀任务下,不使⽤流⽔线⽤时与使⽤流⽔线⽤时之⽐效率E:流⽔线的设备利⽤率锁存器(缓冲寄存器):作⽤是保存本流⽔段的执⾏结果,提供给下⼀流⽔段使⽤。

影响因素:结构相关(资源冲突):多条指令同⼀时间争⽤同⼀资源解决:1.后⼀相关指令暂停⼀周期;2.资源重复配置(数据存储器+指令存储器)数据相关(数据冲突):在⼀个程序中,上⼀条指令执⾏完才能执⾏下⼀条指令(这两条指令即为数据相关)解决:将数据相关的指令和后续指令暂停时钟周期到问题消失再执⾏;1.硬件阻塞stall和软件插⼊NOP;2.数据旁路技术;3.编译优化:通过编译器调整指令顺序控制相关(控制冲突):转移指令和改变PC值的指令造成断流解决:1.尽早判别转移是否发⽣,尽早⽣成转移⽬标地址2.预取转移成功和不成功两个控制流⽅向上的⽬标指令3.加快和提前形成条件码4.提⾼转移⽅向的猜准率流⽔线的分类1.根据流⽔线使⽤级别:部件功能级、处理机级和处理机间级流⽔线部件功能级流⽔:将复杂的算术逻辑运算组成流⽔线⼯作⽅式处理机级流⽔:把⼀条指令解释过程分成多个⼦过程,如取指、译码、执⾏、访存及写回5个⼦过程。

处理机间流⽔:是⼀种宏流⽔,其中每⼀个处理机完成某⼀专门任务,各个处理机所得到的结果需存放在与下⼀个处理机所共享的存储器中2,按流⽔线可以完成的功能分为:单功能流⽔线和多功能流⽔线单功能流⽔线:指只能实现⼀种固定的专门功能的流⽔线;多功能流⽔线:指通过各段间的不同连接⽅式可以同时或不同时地实现多种能的流⽔线。

计算机体系结构专升本试题解析指令流水线与缓存

计算机体系结构专升本试题解析指令流水线与缓存

计算机体系结构专升本试题解析指令流水线与缓存计算机体系结构专升本试题解析——指令流水线与缓存计算机体系结构是计算机科学中的基础课程之一,专升本考试中也是一个重要的考点。

本文将针对专升本试题中的指令流水线与缓存部分进行解析,并探讨其相关概念和应用。

一、指令流水线的概念及原理指令流水线是一种提高计算机处理速度的技术。

它通过将指令执行过程划分为若干个阶段,并在不同阶段同时执行不同指令的部分内容,从而实现多条指令的并行执行。

指令流水线的基本原理可以概括为以下几点:1. 指令划分:将指令执行过程分为取指(IF)、译码(ID)、执行(EX)、访存(MEM)和写回(WB)等阶段。

2. 流水线寄存器:用于存放每个阶段的中间结果,以便下一阶段使用。

3. 并行执行:在不同阶段同时执行多条指令的部分内容,以提高处理效率。

指令流水线的优点是能够提高计算机的处理速度,缩短程序的执行时间。

但同时也存在一些问题,例如流水线冒险(数据冒险、结构冒险、控制冒险)和流水线停顿等,需要通过适当的优化手段来解决。

二、缓存的概念及原理缓存是计算机系统中用于加速数据访问的一种高速存储器。

它位于主存和处理器之间,将常用的数据复制到高速存储器中,以提高系统的响应速度。

缓存的基本原理可以概括为以下几点:1. 局部性原理:根据程序执行的局部性原理,将访问频率高的数据块存放到缓存中。

2. 缓存替换策略:当缓存已满时,需要根据一定的策略替换掉一部分数据,常见的替换策略有随机替换、先进先出(FIFO)和最近最少使用(LRU)等。

3. 缓存一致性:当多个缓存同时访问同一块数据时,需要保证数据的一致性,可以通过使用缓存一致性协议(如MESI)来解决。

缓存的设计需要平衡存储空间和访问速度之间的关系。

较大的缓存可以提供更多的存储空间,但访问速度可能会变慢;而较小的缓存虽然速度更快,但容量较小可能无法满足需求。

因此,需要在实际应用中根据系统需求进行合理的配置。

三、指令流水线与缓存的关系指令流水线和缓存是计算机体系结构中两个重要的优化技术。

指令流水线的原理

指令流水线的原理

指令流水线的原理
指令流水线是一种基于并行处理的计算机指令执行方法,通过将指令执行过程分为若干个互相独立的阶段,使得每个阶段可以同时处理不同的指令,从而提高计算机的执行效率。

指令流水线的原理可以简单描述为以下几个步骤:
1. 指令获取阶段:从存储器中获取将要执行的指令,并将其送入指令译码阶段。

2. 指令译码阶段:对获取的指令进行译码,确定指令类型和操作数,并将其送入执行阶段。

3. 执行阶段:根据指令类型和操作数进行相应的操作,如运算、移位、存储等。

4. 访存阶段:如果指令需要访问存储器,则进行存储器操作,如读取或写入数据。

5. 写回阶段:将执行结果写回到寄存器文件或存储器中。

以上是指令流水线的基本阶段,不同的指令流水线可能还包括其他特定的阶段,如乘法器阶段、除法器阶段等。

指令流水线的关键在于将指令执行过程分解为多个互相独立的阶段,并使得各个阶段可以同时进行。

这样可以避免指令之间的冲突,提高指令的并行度和处理效率。

同时,指令流水线还
可以通过插入空泡来解决可能出现的冲突和数据依赖问题,以保证指令的正确执行。

总之,指令流水线是一种有效提高计算机处理效率的方法,通过将指令执行过程分解为多个互相独立的阶段,实现指令的并行处理,从而加快指令的执行速度。

流水线指令及RISC

流水线指令及RISC

一.流水线1. 概念:处理器按照一系列步骤来执行每一条指令.典型的步骤如下:1) 从存储器读取指令(fetch).2) 译码以鉴别它是那一类指令(dec).3) 从寄存器堆取得所需的操作数(reg).4) 将操作数进行组合以得到结果或存储器地址(ALU).5) 如果需要,则访问存储器以存取数据(mem).6) 将结果写回到寄存器堆(res).并不是所有的指令都需要每一个步骤,但是,多数指令需要其中的多数步骤.这些步骤往往使用不同的硬件功能,例如,ALU 可能只在第四步中用到.因此,如果一条指令不是在前一条结束之前就开始,那么在每一个步骤内处理器只有少部分的硬体被使用. 有一个明显的方法可以改善硬件资源的使用率和处理器的吞吐量,这就是在当前指令结束之前就开始执行下一条指令.该技术被称为流水线,是在通用处理器中采用并行算法且非常有效的途径.采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤1并转向步骤2时,下一条指令就开始执行步骤1.图1.13说明了这个过程.从原理上来说,这样的流水线应该比没有重叠的指令执行快6倍,但实际上事情并没有这么好,下面我们将会看到原因.123 指令时间图1.13 流水线的指令执行2. 流水线中的冒险要点:后一条指令要用到前一条指令。

在典型的计算机程序中经常会遇到这样的情形,即一条指令的结果被用做下一条指令的操作数.当这种情形发生时,图1.13所示的流水线操作就中断了,因为第一条指令的结果在第二条指令取操作数时还没有产生.第二条指令必须停止,直到结果产生为止.这是流水线的行为如图1.14所示.这是流水线的”写后读”冒险(hazard).1.2.图 1.14 先写后读的流水线冒险转移指令更会破坏流水线的行为,因为后续指令的取指步骤受到转移目标计算的影响,因而必须推迟.不幸的是,当转移指令正在被译码时,在它被确认为是转移指令之前,后续的取指操作就发生了.这样一来,读取到的指令就不得不丢弃.如果转移目标计算是在图1.13中流水线的ALU阶段完成的,那么,在得到转移目标之前已经有3条指令按照原有的指令流读取(见图 1.15).如果有可能,最好早一些计算转移目标,尽管这可能需要专门的硬件.如果转移指令具有固定的格式,那么可以(也就是说在确认该指令是转移指令之前)在dec阶段预测计算转移目标,从而将转移的执行时间减少到单个周期.但是要注意,由于条件转移与前一条指令的条件码结果有关,在这个流水线中还会有条件转移的冒险.一些RISC体系结构(尽管不是ARM)规定,不管是否进行了转移,转移之后的指令都要执行.这个技术称为延迟转移.1 (转移)2345(转移目标)指令时间图1.15 流水线的转移行为3.流水线效率尽管有些技术可以减少这些流水线问题的影响,但是,不能完全消除这些困难.流水线越深(就是流水线的级数越多),问题就说严重.对于相对简单的处理器,使用3~5即流水线效果会更好.但是,超过了这个级数,收益递减的法则开始生效,增加的成本和复杂度将超过收益.例:ARM7 3级流水线ARM9 是5级ARM10是6-7级StrongArm是5级显然,只有当所有指令都依相似的步骤执行时,流水线才能带来好处.如果处理器的指令非常复杂,每一条指令的行为都与下一条指令不同,那么就很难用流水线实现.1980年,因为有限的硅资源,有限的设计资源,以及设计一个复杂指令集的流水线的高度复杂性,当时的复杂指令集微处理器没有采用流水线.二.精简指令计算机1.RISC体系结构1)固定的(32位)指令长度,指令类型很少.而CISC处理器指令集的长度一般可变,指令类型也很多.2)Load-Store结构,数据处理指令访问寄存器,与访问存储器的指令是分开的.而CISC处理器一般允许将存储器中的数据作为数据处理指令的操作数.3)由32个32位寄存器构成大的寄存器堆(register bank),其中所有的寄存器都可以用于任何用途,以使Load-Store结构有效的工作.虽然CISC寄存器集也加大了,但是没有那么大,而且大都是不同的寄存器用于不同的用途(例如,Motorola公司MC68000的数据寄存器和地址寄存器).这些差别极大的简化了处理器的设计,使设计者在实现体系结构时可以采用以下这些对提高原型机性能由很大作用的,组织方面的特点.2、RISC的组织@流水线执行.而CISC处理器即使有,也只允许在连续指令间有极少的重叠(尽管它们现在允许).@单周期执行.而CISC处理执行1条指令一般需要多个时钟周期.3、R ISC的优点.4)管芯面积小.简单的处理器需要的晶体管少,需要的硅片面积也小.因此,整个CPU在工艺技术发展的较早阶段即可在一个芯片内.一旦技术发展超过这一阶段,RISC CPU就能剩下更多的面积用于实现可以提高性能的功能部件,例如高速缓存,存储器管理和浮点硬件等等.5)开发时间短简单的处理器会占用较少的设计力量,因而设计费用低.它还会更好地投放市场时的工艺技术相适应(因为开发周期越短,越容易在开发时预测工艺技术的发展).6)性能高.这个优点比较微妙.前面两条优点容易接受,但看看我们周围,高性能总要通过不断增加复杂度来实现,说RISC有高性能的优点有些使人难以接受.可以来这样看这个问题:较小的东西具有较高的自然频率(昆虫煽动翅膀的频率高于小鸟,小鸟山东翅膀的频率高于大鸟等等),所以,简单的处理器应该容许较高的时钟频率.让我们来设计一个复杂的处理器,但开始时先设计一个简单的,然后每次增加一条复杂的指令,都会使某些高级的功能更有效率,但是,它也会降低所有指令所用的时钟频率.我们可以度量对于典型程序总的得失.当我们这样做的时候,会发现所有复杂的指令都使程序执行变慢了.因此,我们坚持最初的简单处理器.使用 3 阶段流水线的例子。

指令流水线的分类

指令流水线的分类文章目录••oooo指令流水线的分类1.部件功能级、处理机级和处理机间级流水线根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。

部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。

例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。

处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5 个子过程。

处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。

2.单功能流水线和多功能流水线按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线。

单功能流水线指只能实现一种固定的专门功能的流水线;多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。

3.动态流水线和静态流水线按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。

静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。

动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。

这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。

4.线性流水线和非线性流水线按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。

线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。

非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。

指令流水线——精选推荐

指令流⽔线流⽔线指令如果可以⼀个重复的过程分解成若⼲个⼦过程,每个⼦过程可以和其他的⼦过程并⾏;⼀条指令的执⾏可以分成多个阶段,根据计算机的不同,具体的分法也不同;例如之前总结的⼀个指令的执⾏可能分成如下⼏个阶段1. 取址阶段2. 间址阶段3. 执⾏阶段4. 中断阶段举个例⼦,某个指令执⾏3个阶段,每个阶段执⾏都是时间t,执⾏n次顺序执⾏: 3*n*t⼀次重叠执⾏ t + 2*n*t⼆次重叠执⾏:2t + n*t流⽔线⽅式的特点:1. 把⼀个任务分解成⼏个有联系的⼦任务,每个⼦仍⽆都是⼀个专门的功能部件来执⾏;多个部件并⾏来缩短时间;2. 每个部件都要有⼀个缓冲寄存器,锁存器,⽤来保存流⽔线执⾏的指令结果;3. 各个功能端尽量时间相等,否则会引起堵塞,断流;4. 同⼀类任务,连续任务5.流⽔线有装⼊时间和排空时间,第⼀个任务进⼊到流⽔线道输出流⽔线的时间,排空时间是最后⼀个任务进⼊到排除流⽔线的时间;根据不同的分类⽅式,流⽔线可以分成如下的不同种类:部件级别流⽔线:算术逻辑运算,例如浮点数加法-> 求阶差,对阶,尾数相加,规格化 4个流程处理器级别的流⽔:取指,译码,执⾏,访存,写回处理间级别的流⽔:宏流⽔,每个处理机都完成⼀个单独的任务,结果存放在下⼀个处理器共享的储存器中按照功能种类分单功能流⽔:只能使⽤⼀种固定专门功能的流⽔线;多功能流⽔:不同连接⽅式可以同时或者不同时实现多种功能的流⽔线;按照各个段之间的连接⽅式动态流⽔线:各段只能同⼀种功能连接⽅式⼯作静态流⽔线:某些段某种运算时,另⼀些段进⾏另⼀种运算按照是否有反馈信号线性流⽔线:从输⼊到输出每个段只允许经过⼀次,不存在反馈回路⾮线性流⽔线:存在反馈回路,某些段数次通过流⽔线,线性递归运算流⽔线性能指标1. 流⽔线吞吐率单位时间内流⽔线完成的任务数量;TP = n/Tk;对于理想的流⽔线时间 Tk=(k+n-1)dT2. 流⽔线的加速⽐不使⽤流⽔线的时间和使⽤流⽔线的时间⽐值S=T0/Tk对于理想的流⽔线作业 S=kn/(k+n-1);3.流⽔线的效率E=n个任务占⽤的时空有效⾯积/n个任务所⽤的时间和k个流⽔段围成时空区总⾯积;影响流⽔线性能的因素1. 多条指令在同⼀时刻真多资源⽽形成的冲突叫做资源冲突2. 相关问题:相邻指令间存在关联,使得流⽔线停顿:2.1 数据冲突(数据冒险)下⼀条指令会⽤到这⼀条指令的结果,数据冒险指令,如果多条指令重叠会出现冲突;1)后续指令暂停⼀到两个时钟周期,硬件阻塞stall软件插⼊NOP⽅法;2)专⽤通路,不写回寄存器直接结果作为输⼊数据,数据旁路技术3)指令编译优化,调整指令顺序2.2 控制冲突(控制冒险)指令在确定下⼀条指令位置,例如发⽣转移调⽤返回等会改变PC值,造成断流1)分⽀预测,今早⽣成转移⽬标地址,静态预测动态预测;2)预取转移成功或者不成功的⽬标指令3)加快提前形成条件码4)提⾼转移⽅向的猜准率cache缺失处理过程也会造成流⽔线阻塞超标量流⽔线1. 超标量流⽔线技术每个时钟周期并发多个独⽴指令,⽤并⾏的操作⽅式将两条或者多条指令编译并执⾏;需要多个功能部件2. 超流⽔线技术在⼀个时钟周期内,⼀个功能部件使⽤多次,不调整执⾏顺序,编译程序解决优化问题3. 超长指令字:挖掘出指令间潜在的并⾏性,多个指令组合成⼀条具有多个操作码字段的超长指令字(多达⼏百位),需要多个处理部件。

计算机体系结构与指令流水线

计算机体系结构与指令流水线计算机体系结构是指计算机硬件和软件之间的交互方式,它决定了计算机的组织结构、数据传输方式以及指令的执行过程。

在计算机体系结构中,指令流水线是一种重要的技术手段,它可以提高计算机的性能和效率。

本文将深入探讨计算机体系结构与指令流水线的相关知识。

一、计算机体系结构的基本原理计算机体系结构包括硬件体系结构和软件体系结构。

硬件体系结构代表了计算机硬件的组织和连接方式,它包括中央处理器(CPU)、存储器和输入输出设备等;软件体系结构则是指操作系统和编程语言等软件的组织方式。

在计算机体系结构中,指令的执行是一个重要的过程。

指令由操作码和操作数组成,计算机的执行方式是将指令从存储器中取出,经过解码和执行阶段完成相应的操作。

传统的计算机执行方式是按照指令的顺序一个一个地执行,这样会导致指令之间存在较大的时间间隔,浪费了计算机的效率。

二、指令流水线的原理与优势为了提高计算机的效率,减少指令之间的时间间隔,人们提出了指令流水线的概念。

指令流水线将指令的执行过程划分为多个阶段,每个阶段都由一个专门的电路来完成,不同的指令可以同时在不同的阶段执行,以实现多条指令的并行执行。

指令流水线的优势主要体现在以下几个方面:1. 提高了计算机的吞吐量。

由于指令流水线可以实现多条指令的并行执行,因此可以在同样的时间内完成更多的指令,从而提高了计算机的吞吐量。

2. 减少了指令之间的等待时间。

在指令流水线中,不同指令可以在不同阶段同时执行,减少了指令之间的等待时间,提高了计算机的效率。

3. 加快了指令的执行速度。

通过将指令的执行过程切分为多个阶段,并行执行不同指令的不同阶段,可以加快指令的执行速度,缩短了计算时间。

然而,指令流水线也存在一些限制和问题,例如:1. 指令相关性。

如果后续指令依赖于前面指令的结果,就会导致指令流水线的停顿,降低了计算机的效率。

2. 分支指令。

由于分支指令可能会改变指令的执行顺序,因此对于分支指令,指令流水线需要进行预测和处理,以避免出现时间浪费。

计算机组织与系统结构第七章习题答案

习题1.给出以下概念的解释说明。

指令流水线(Instruction pipelining)流水线深度(Pipeline Depth)指令吞吐量(Instruction throughput)流水线冒险(Hazard)结构冒险(Structural hazard)控制冒险(Control hazard)数据冒险(Data hazard)流水线阻塞(Pipeline stall)气泡(Bubble)空操作(nop)分支条件满足(Branch taken)分支预测(Branch predict)静态分支预测(Static predict)动态分支预测(Dynamic predict)延迟分支(Delayed branch)分支延迟槽(Delayed branch slot)转发(Forwarding)旁路(Bypassing)流水段寄存器(Pipeline register)IPC(Instructions Per Cycle)静态多发射(Static multiple issue)动态多发射(Dynamic multiple issue)超流水线(Superpipelining)超长指令字VLIW超标量流水线(Superscalar)动态流水线(Dynamic pipelining)指令预取(Instruction prefetch)指令分发(Instruction dispatch)按序发射(in-order issue)无序发射(out-of-order issue)存储站(Reservation station)重排序缓冲(Reorder buffer)指令提交单元(Instruction commit unit)乱序执行(out-of-order execution)按序完成(in-order completion)无序完成(out-of-order completion)2. 简单回答下列问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 注意到执行级的运算器使用“控制逻辑2” 中信息进行控制,访 存级的数据存储器使用“控制逻辑3”中信息进行控制,均不再
使用触发器R1中的译码结果
流水线CPU结构示意(2)
译码结果 控制逻辑4 R4(最终结果) 数据存储器 R1 (指令码) 控制逻辑3 指令存储器 PC 控制逻辑2 MUX2 通用寄存器 R2(源操作数) R3(运算结果) 运算器
• 采用多周期CPU设计可以解决上述问题
• 将CPU所作的工作进行分解为若干阶段 • 各阶段组合逻辑前后均插入触发器
• 各阶段组合逻辑仅从前续阶段的结果触发器中读取控制和数
据信息,并将操作结果写入本阶段的结果触发器中
多周期CPU结构示意
• 多周期CPU共划分五
译码结果 R4(最终结果) 数据存储器 R1 (指令码) R3(运算结果) 指令存储器 PC 运算器
src1 src2 dest
imm
数据存储器
指令存储器 运算器 PC MUX2 新指令是顺序取 指还是跳转至转 移目标 0x4 通用寄存器 MUX2
写回访 存结果 还是计 算结果
操作数来自于通 用寄存器还是立 即数
读取哪些 通用寄存器
写哪个 通用寄存器
单周期简单CPU结构
• 完整的CPU还需要时钟和复位信号才能正常运转
Add $4,$5,$6
Add $7,$8,$9
流水线CPU的流水线时空图
时钟周期数 Add $1,$2,$3 1 2 3 4 5 6 7 PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回) PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回) PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回)
时钟周期数 Add $1,$2,$3
1
2
3
4
5
6
7
PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回) PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回) PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回)
Add $4,$5,$6
,从触发器R2中读 出源操作数,进行运 算,在C4时钟上升 沿运算结果存入触发 器R3中
MUX2
R2(源操作数) 通用寄存器
C1 C2 C3 C4 C5
MUX2
C1 C2 C5 C4 C3
5分频 C
0x4
C C1 C2 C3 C4 C5
多周期CPU结构示意
• C的第4个时钟周期
译码结果 R4(最终结果) 数据存储器 R1 (指令码) R3(运算结果) 指令存储器 PC 运算器
• 第二类:访存指令
• 如:LW、LH、LHU、SW、SH、……
• 第三类:转移指令
• 如:BEQ、BNE、J、JR、……
• 第四类:特殊指令
• 如:SYSCALL、TLBWI、CACHE、MTC0、……
• 根据指令集定义,可以得知CPU数据通路的组成要素
简单CPU数据通路主要模块
• 1. 程序计数器:又称PC,指示当前指令的地址
译码部件
数据存储器
指令存储器 运算器 PC MUX2
通用寄存器
MUX2
+ 0x4
简单CPU数据通路
译码部件
数据存储器
指令存储器 运算器 PC MUX2
通用寄存器
MUX2
0x4
指令译码生成控制逻辑
• 译码部件从指令码中获得CPU数据通路的控制信息。
• 控制信息包括:读取哪些通用寄存器、执行何种运算、是否需要 读写数据存储器、写哪个通用寄存器、新指令PC如何更新……
入到触发器中,沿着流水线逐级传递下去。从而保证
了各阶段执行时使用的控制逻辑都是属于该指令的。
流水线CPU结构示意
译码结果 控制逻辑4 R4(最终结果) 数据存储器 R1 (指令码) 控制逻辑3 指令存储器 PC 控制逻辑2 MUX2 通用寄存器 R2(源操作数) R3(运算结果) 运算器
0x4
时钟
时钟周期数 Jr $1
1
2
3
4
5
6
7
PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回) PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回) PC R1 R2 R3 R4 (取指) (译码) (执行) (访存) (写回)
Add $2,$1,$1
Add $7,$8,$9
转移指令的延迟槽
运算器
结果(跳转目标),
否则PC更新为PC+4 • 至此一条指令执行完
MUX2
C1 C2 C5 C4 C3
5分频 C
0x4
毕,下个时钟周期新
的指令继续开始执行
C C1 C2 C3 C4 C5
多周期CPU的流水线时空图
原始时钟周期数 1 Add $1,$2,$3 2 3 4 5 6 7 8 9 10 11 12 13 14 15 取 译 执 访 写 指 码 行 存 回 取 译 执 访 写 指 码 行 存 回 取 译 执 访 写 指 码 行 存 回
PC PC
简单CPU数据通路主要模块
• 2. 指令存储器:按照指令地址存储指令码,接受PC, 读出指令
指令存储器
PC
简单CPU数据通路主要模块
• 3. 译码部件:用于分析指令,判定指令类别
译码部件
指令存储器
PC
简单CPU数据通路主要模块
• 4. 通用寄存器堆:用于承载寄存器的值,绝大多数指 令都需要读取和修改寄存器
译码部件
数据存储器
指令存储器 运算器 PC
通用寄存器
简单CPU数据通路模块连接
• load指令访问数据存储器后,需要将结果写回通用寄 存器堆。通用寄存器堆写入数据在计算结果和访存结 果之间二选一。
译码部件
数据存储器
指令存储器 运算器 PC
通用寄存器
MUX2
简单CPU数据通路模块连接
• 新指令的PC可能等于顺序下一条指令的PC(当前指令 PC+4),也可能来自转移指令计算出的跳转目标。
计算机体系结构基础
胡伟武、苏孟豪
1
第09章:指令流水线
• 简单的处理器数据通路 • 流水线处理器 • 解决指令相关 • 指令调度技术 • 提高流水线效率的技术
• 多发射技术
• 动态调度技术
• 转移猜测技术 • 高速缓存技术
2
简单的处理器数据通路
3
MIPS ISA回顾 (I)
• “经典”的RISC指令架构
• 结构相关:资源冲突
• 例如多条指令同时使用同一个功能部件
• 相关的指令要隔开足够远,否则后面的指令就必须等待,
这造成了流水线阻塞
控制相关
• 跳转转移指令与取指PC的相关
• 转移指令的跳转目标在执行流水级计算,影响后面2拍的指令 • 转移指令延迟槽指令不受转移跳转与否影响,可以正常取指
• 但是延迟槽下一条指令无法在第3拍完成取指
• 更新PC、写通用寄存器、store指令写数据存储器都需要时钟 • PC的复位信号确保CPU每次上电后从相同位置取第一条指令
op
src1 src2 dest
imm
数据存储器
指令存储器 运算器 PC MUX2 通用寄存器 MUX2
0x4
时钟、复位
流水线处理器
20
多周期CPU设计
• 单周期CPU设计,每个时钟周期需要完成取指、译码、读 寄存器、执行、写回寄存器这一系列工作,这使得触发器 之间的组合逻辑的延迟很长,导致处理器频率无法提高。
C C1 C2 C3 C4 C5
多周期CPU结构示意
• C的第5个时钟周期
译码结果 R4(最终结果) 数据存储器 R1 (指令码) R3(运算结果) 指令存储器 PC R2(源操作数) MUX2 通用寄存器
C1 C2 C3 C4 C5
,从触发器R4中读 出最终结果并写入通 用寄存器,如果是 taken的转移指令, 则将PC更新为最终
译码部件
指令存储器
PC
通用寄存器堆
简单CPU数据通路主要模块
• 5. 运算器:用于执行指令所指示的运算操作
译码部件
指令存储器 运算器 PC
通用寄存器
简单CPU数据通路主要模块
• 6. 数据存储器:按照地址存储数据,主要用于访存指 令
译码部件
数据存储器
指令存储器 运算器 PC
通用寄存器
简单CPU数据通路模块连接
C1 C2 C5 C4 C3
5分频 C
0x4
C C1 C2 C3 C4 C5
多周期CPU结构示意
• C的第2个时钟周期
译码结果 R4(最终结果) 数据存储器 R1 (指令码) R3(运算结果) 指令存储器 PC 运算器
,对指令码触发器 R1中的指令进行译 码,生成相关控制逻 辑,并读取通用寄存 器,读出结果在C3
Add $4,$5,$6
Add $7,$8,$9
• 多周期CPU设计可以提高CPU的运行频率,但是每条
指令执行时间并不能得到降低。我们可以将各个执行 阶段以流水方式组织起来,同一时刻不同指令的不同 执行阶段重叠在一起,进一步提高CPU执行效率
流水线CPU设计
• 多周期CPU设计中采用分频时钟是为了确保指令在执 行后面几个阶段的时候,PC和指令译码结果等控制相 关逻辑仍保持不变。 • 与多周期CPU设计相比,流水线CPU设计的关键点在 于:除了被处理的数据,指令的控制逻辑信息也要存
,从触发器R3中读 取运算结果,如果是 非访存指令则写入通 用寄存器,如果是 store指令则将写数
相关文档
最新文档