指令流水线

143 阅读7分钟

指令流水的定义 一条指令的执行过程可以分成多个阶段(或过程)。 根据计算机的不同,具体的分法也不同。 image.png **取指:**根据PC内容访问主存存储器,取出一条指令送到IR中 **分析:**对指令操作码进行译码,按照给定的寻址方式和地址字段中的 内容形成操作数的有效地址RA,并从有效地址EA中取出操作数 **执行:**根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。 设取指、分析、执行3个阶段的时间都相等,用t表示,按以下几种执行方式分析n条指令的执行时间。 1.顺序执行方式 总耗时T=n*3t=3nt image.png 传统冯·诺依曼机采用顺序执行方式,又称串行执行方式。 优点:控制简单,硬件代价小。 缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。 2.一次重叠执行方式 总耗时T=3t+(n-1)*2t=(1+2n)t image.png **优点:**程序的执行时间缩短了1/3,各功能部件的利用率明显提高。 **缺点:**需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了 3.二次重叠执行方式 总耗时T=3t+(n-1)*t=(2+n)t 与顺序执行方式相比,指令的执行时间缩短近2/3。这是一种理想的指令执行方式,在正常情况下,处理机中同时有3条指令在执行。 image.png

流水线的表示方法

1.指令执行过程图 image.png 主要用于分析指令执行过程以及影响流水线的因素 2.时空图 image.png 主要用于分析流水线的性能

流水线的性能指标

1.吞吐率 吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量 image.png image.png 2.加速比 完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。 image.png 3.效率 流水线的设备利用率称为流水线的效率。 在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比。 image.png

指令流水线影响因素分类

机器周期的设置 IF取指令 ID指令译码 EX指令执行 M访存 WB写回 image.png 流水线每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器其作用是保存本流水段的执行结果,提供给下一流水段使用。

影响流水线的因素

1.结构相关(资源冲突) 由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关 image.png 2.数据相关(数据冲突) 数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。 image.png 解决办法: (1)把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞(stall)和软件插入“NOP”两种方法。 image.png image.png (2)数据旁路技术。 image.png (3)编译优化:通过编译器调整指令顺序来解决数据相关。 3.控制相关(控制冲突) 当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。 image.png 解决办法: 1.转移指令分支预测。简单预测(永远猜ture或false) 、动态预测(根据历史情况动态调整) 2.预取转移成功和不成功两个控制流方向上的目标指令 3.加快和提前形成条件码 4.提高转移方向的猜准率

流水线的分类

1.部件功能级、处理机级和处理机间级流水线 根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。 部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。 例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。 处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。 处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。

2.单功能流水线和多功能流水线 按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线。 单功能流水线指只能实现一种固定的专门功能的流水线; 多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。 3.动态流水线和静态流水线 按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。 动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。 4.线性流水线和非线性流水线 按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。 线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。 非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。

流水线的多发技术

1.超标量技术 image.png 每个时钟周期内可 并发多条独立指令 要配置多个功能部件 不能调整 指令的 执行顺序 通过编译优化技术,把可并行执行的指令搭配起来

2.超流水技术 image.png 在一个时钟周期内再分段( 3段) 在一个时钟周期内一个功能部件使用多次( 3次) 不能调整指令的执行顺序 靠编译程序解决优化问题

流水线速度是原来速度的3倍 3.超长指令字 image.png 由编译程序挖掘出指令间潜在的并行性 将多条能并行操作的指令组合成一条 具有多个操作码字段的超长指令字(可达几百位) 采用多个处理部件

五段式指令流水线

image.png 运算类指令的执行过程 image.png LOAD指令的执行过程 image.png 通常,RISC处理器只有“取数LOAD”和“存数STORE”指令才能访问主存 STORE指令的执行过程 image.png 条件转移指令的执行过程 image.png 无条件转移指令的执行过程 image.png image.png