计算机系统结构
第3章 流水线技术 3.1 3.2
3.3 3.4 3.5
3.6 3.7
重叠方式 流水线的基本概念 流水线的性能指标 标量流水机的相关处理 非线性流水线的调度 指令级高度并行的超级处理机 流水线的实现
第3章 流水线技术
3.1 重叠方式 3.1.1
重叠原理与一次重叠 3.1.2 相关处理
3.1 重叠方式
重叠方式是最简单的流水方式。
3.1.1 重叠原理与一次重叠解释一条机器指令的微操作可归并成取指令、分析和 执行三部分,时间关系如图所示。
取指令是按指令计数器的内容访主存,取出该指令送到 指令寄存器。
指令的分析是对指令的操作码进行译码,按寻址方式和 地址字段形成操作数真地址,并用此真地址去取操作数 (可能访主存,也可能访寄存器),为取下一条指令还 要形成下一条指令的地址。指令的执行则是对操作数进行运算、处理,或存储运算 结果(可能要访主存)。
3.1 重叠方式顺序解释指的是各条指令之间顺序串行(执 行完一条指令后才取下条指令)地进行,每条 指令内部的各个微操作也顺序串行地进行。
优点:控制简单,转入下条指令的时间易 于控制。
缺点:上一步操作未完成,下一步操作便 不能开始,速度上不去,机器各部件的 利用率低。
3.1 重叠方式指令的重叠解释是在解释第K指令的操作 完成之前,就开始解释第K+1条指令。
3.1 重叠方式
实现指令的重叠解释必须在计算机组成上满足以下几点要求: 1.
要解决访主存的冲突。
取指k+1与分析k在时间上重叠,易出现访主存冲突。 解决办法: ①
②
让操作数和指令分别存放于两个独立编址且可同时 访问的存储器中,这有利于实现指令的保护,但是 增加了主存总线控制的复杂性及软件设计的麻烦。 另一种办法仍维持指令和操作数混存,但采用多体 交叉主存结构,只要第k条指令的操作数与第k+1条 指令不在同一个体内,仍可在一个主存周期取得, 从而实现“分析k”与“ k+1”重叠。然而,这 两者若正好共存于一个体内时就无法重叠。
3.1 重叠方式③
第三种办法是增设采用先进先出方式工作的指令缓 冲寄存器(简称指缓)。 由于大量中间结果只存于通用寄存器中,因此主存 并不是满负荷工作的。设置指缓就可乘主存有空时 ,预取下一条或下几条指令存于指缓中。这样,“ 分析k”与“取指k+1”就能重叠了。这种指令分析部件和指令执行部件任何时候都只有 相邻两条指令在重叠解释的方式为“一次重叠”。
3.1 重叠方式
一次重叠工作方式:如果每次都可以从指缓中取得指 令,则“取指k+1”的时间
很短,就可把这个微操作合 并到“分析k+1”内,从而由原先的“取指k+2”、“分 析k+1”、“执行k”重叠变成只是“分析k+1”与“执行 k”的重叠,如图所示。
3.1 重叠方式 2.
要解决“分析”与“执行”操作的并行。为了实现 “执行k”与“分析k+1”一次重叠,硬件
上还应有独立的指令分析部件和指令执行部件。以加法器为例,分析部件要有单独的地址加法器用于 地址计算,执行部件也要有单独的加法器完成操作
数的相加运算。这是以增加某些硬件为代价的。
3.1 重叠方式 3.
要解决“分析”与“执行”操作控制上的 同步。 实际上“分析”和“执行”所需的时间常不相同
,还需在硬件上解决控制上的同步,保证任何时 候都只是“执行k”与“分析k+1”重叠。 就是说,即使“分析k+1”比“执行k”提前结束,“ 执行k+1”也不紧接在“分析k+1”之后与“执行k”重 叠进行;同样,即使“执行k”比“分析k+1”提前 结束,“分析k+2”也不紧接在“执行k”之后与“ 分析k+1”重叠进行。 4.
要解决指令间各种相关的处理。
3.1 重叠方式
5.1.2 相关处理1. 转移指令的处理2. 主存空间数相关的处理 3. 指令相关的处理 4. 通用寄存器组相关的处理
3.1 重叠方式
1. 转移指令的处理 如:第k条指令是按其执行结果进行转移的
条件转移指令,若成功则转移到m单元。
3.1 重叠方式
转移指令的处理:通过延迟转移技术来解决
由编译程序生成目标程序时,将转移指令与 条件转移无关的第 k-1 条指令交换一下位置, 这样,即使条件转移成功也不会使重叠效率下 降。
3.1 重叠方式当第k条指令是条件转移且转移成功时,传统做法与延迟转移做法的比较
3.1 重叠方式
2.
主存空间数相关的处理:推后“分析k+1”的读
主存空间数相关是相邻两条指令之间出现对主存同 一单元要求先写而后读的关联,如图所示。
如果让“执行k”与“分析k+1”在时间上重叠,就会使“分析 k+1”读出的数不是第 k 条指令执行完应写入的结 果而出错。要想不出错,只有推后“分析k+1”的读。