计算机组成与结构6利用流水线提高性能.ppt

上传人:啊飒飒 文档编号:10854717 上传时间:2021-06-08 格式:PPT 页数:156 大小:866.01KB
返回 下载 相关 举报
计算机组成与结构6利用流水线提高性能.ppt_第1页
第1页 / 共156页
计算机组成与结构6利用流水线提高性能.ppt_第2页
第2页 / 共156页
计算机组成与结构6利用流水线提高性能.ppt_第3页
第3页 / 共156页
计算机组成与结构6利用流水线提高性能.ppt_第4页
第4页 / 共156页
计算机组成与结构6利用流水线提高性能.ppt_第5页
第5页 / 共156页
点击查看更多>>
资源描述

《计算机组成与结构6利用流水线提高性能.ppt》由会员分享,可在线阅读,更多相关《计算机组成与结构6利用流水线提高性能.ppt(156页珍藏版)》请在三一文库上搜索。

1、2012,1,华东师范大学计算机科学技术系,6 利用流水线提高性能,2012,2,华东师范大学计算机科学技术系,6 利用流水线提高性能,6.1 流水线概述 6.2 流水线的数据通路 6.3 流水线中的控制 6.4 数据冒险与转发 6.5 数据冒险与阻塞 6.6 分支冒险 6.7 异常 6.8 提高性能 6.9 实例:Pentium 4处理器的流水线,2012,3,华东师范大学计算机科学技术系,6 利用流水线提高性能,6.1 流水线概述,2012,4,华东师范大学计算机科学技术系,6.1 流水线概述,并行处理技术 早期的计算机基于冯诺伊曼的体系结构, 采用的是串行处理 计算机的各个操作只能串行地

2、完成,任一时刻只能进行一个操作,2012,5,华东师范大学计算机科学技术系,6.1 流水线概述,一、并行处理技术 并行性: 同时性:指两个以上事件在同一时刻发生 并发性:指两个以上事件在同一时间间隔 内发生 计算机的并行处理技术可贯穿于信息处理 的各个步骤和阶段 分三种形式: 时间并行 空间并行 时间并行空间并行,2012,6,华东师范大学计算机科学技术系,一、并行处理技术, 时间并行 时间重叠 让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以赢得处理速度 时间并行性概念的实现方式就是采用流水处理部件,2012,7,华东师范大学计算机科学技术系,一、并行处理技术, 空

3、间并行 资源重复 在并行性概念中引入空间因素,以增加“数 量” 来大幅度提高计算机的处理速度 空间并行技术主要体现在多处理器系统和 多计算机系统,2012,8,华东师范大学计算机科学技术系,一、并行处理技术, 时间并行空间并行 时间重叠和资源重复的综合应用 既采用时间并行性又采用空间并行性 例:奔腾CPU采用超标量流水技术,在一 个机器周期中同时执行两条指令 具有时间并行性又具有空间并行性,2012,9,华东师范大学计算机科学技术系,6.1 流水线概述,流水线是一种可将多条指令的执行过程相互重叠的实现技巧。流水线技术是在计算机上实现时间并行性,提高处理器速度的一种非常经济的方法。 二、流水线工

4、作原理概述: 将任务分割为一系列子任务,使各子任务能在流水线的各个阶段并发地执行,即实现子任务级的并行操作。,2012,10,华东师范大学计算机科学技术系,二、流水线工作原理概述:,子任务的划分决定流水线性能的关键因素。,方法:将T任务划分为k个子任务 T = T1,T2,Tk,要求:各子任务划分合理,处理时间相同,避 免空转 子任务任务数的划分取决于: 操作的效率 所期望的处理速度 成本价格等,关键: 每个子任务的处理时间一样 应取多少任务数,2012,11,华东师范大学计算机科学技术系,二、流水线工作原理概述:,效率: 子任务并行工作,提高了吞吐率 实际上整个任务处理的时间并没有缩短, 而

5、是因为各子任务并行工作,单位时间 内所完成的工作量就大大增加了。流水 线提高了整个系统的吞吐率。 子任务划分越细,流水线效率越高,但 硬件代价也越高,2012,12,华东师范大学计算机科学技术系,二、流水线工作原理概述:,1. 线性流水线 各子任务之间有一定的优先关系。若ij, 则必须在Ti完成后,Tj才开始工作,这种线性优先关系的流水线称为线性流水线。,时钟周期 i为执行Si所需的时间,l为缓冲寄存器 的延时 maxilml 流水线时钟频率为: f1/,2012,13,华东师范大学计算机科学技术系,二、流水线工作原理概述:,2. 流水线加速比 当流水线任务饱满时,任务源源不断地输入流水线,不

6、论有多少级过程段,每隔一个时钟周期都能输出一个任务 从理论上说,一个具有k级过程段的流水线处理n个任务需要的时钟周期数为: Tkk(n1),K个时钟周期用于处理第一个任务,流水线正常流动 后,剩下的n-1个任务,每个时钟周期就能完成一个。,而用非流水线的硬件来处理这n个任务,时间上只能串行进行,则所需时钟周期数为: TLnk,2012,14,华东师范大学计算机科学技术系,2. 流水线加速比,k级过程段的流水线处理n个任务需要的时钟周期数为: Tkk(n1) 非流水线的硬件处理所需时钟周期数为: TLnk,流水线加速比 Ck=TL/Tk= n k /(k+(n-1)k,当nk时,Ckk,理论上k

7、级线性流水线可提高k倍速度, 但实际上由于存在结构冒险、数据 冒险等,并达不到理想的值。,流水线所带来的性能提升是通过提高指令的吞吐率来实现 的,而不是通过减少单条指令的执行时间来实现。,2012,15,华东师范大学计算机科学技术系,二、流水线工作原理概述:,3. 流水线时空图 为了实现流水,首先把输入的任务(或过程)分割为一系列子任务,并使各子任务能在流水线的各个阶段并发地执行 当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现了子任务级的并行性,2012,16,华东师范大学计算机科学技术系,3. 流水线时空图,设指令执行的流水线过程段:,一条流水线由一系列串联

8、的过程段组成 各过程段之间设有高速缓冲寄存器,以暂时保存上一过 程段子任务处理的结果 在统一的时钟信号控制下,数据从一个过程段流向相邻 的过程段,例:一条指令的执行分为四个子过程段(Si) 每个子过程段处理时间均为t 分析对比: 非流水线、流水线、超标量流水线执行5条指令所需 时间,2012,17,华东师范大学计算机科学技术系,3. 流水线时空图, 非流水线时空图,上一条指令的四个子过程全部被执行完毕后才能 开始下一条指令 每隔4个机器时钟周期才有一个输出结果 执行5条指令所需时间: t45=20t,时间T,2012,18,华东师范大学计算机科学技术系,3. 流水线时空图, 标量流水线时空图,

9、上一条指令与下一条指令的子过程在时间上可以 重叠执行 当流水线满载时,每一个时钟周期就可以输出一 个结果 执行5条指令所需时间: t4+(5-1)t=8t,与前者比较: 流水计算机在8个t时间中执行了5条指令 非流水线计算机在8个t时间中仅执行了2条指令,2012,19,华东师范大学计算机科学技术系,3. 流水线时空图, 超标量流水线时空图,所谓超标量流水是指它具有两条以上的指令流水线 下图中的超标量流水线中,流水线满载时,每一个 时钟周期可以执行2条指令 执行5条指令所需时间: t4+(5-2)/2=6t,WB,EX,ID,IF,空间S,I6,I5,时间T,1,2,3,4,5,6,7,8,I

10、2,I3,I4,I1,I7,I8,I9,I10,三者比较: 非流水线计算机在8个t时间中执行了2条指令 流水计算机在8个t时间中执行了5条指令 超标量流水线计算机在8个t时间中执行了10条指令,2012,20,华东师范大学计算机科学技术系,6.1 流水线概述,三、针对流水线结构的指令集设计 指令流水线指令级并行(ILP) 利用执行指令所需的操作之间的并行,实 现多条指令重叠执行的一种技术 目前,几乎所有的高性能计算机都采用了 指令流水线,2012,21,华东师范大学计算机科学技术系,三、针对流水线结构的指令集设计,开发方法: 依赖于硬件,动态地发现和开发指令级并行,可将指令流的处理过程划分为取

11、指令、译码、执行、写回等几个并行处理的过程段 例:Intel的Pentium系列 占市场主导地位 依赖于软件技术,在编译阶段静态地发现并行 例:Intel的Itanium系列 特定应用环境,2012,22,华东师范大学计算机科学技术系,三、针对流水线结构的指令集设计,针对流水线结构的指令集设计: MIPS指令集就是专为指令执行的流水线化 而设计的 特点: 所有的MIPS指令等长 简化了流水线的取指和译码阶段设计 IA-32指令长度为1-17字节,为适合流水线, 首先将指令转为简单的微操作,送入流水线处 理的实际上是微操作,而不是原始指令。,2012,23,华东师范大学计算机科学技术系,三、针对

12、流水线结构的指令集设计, MIPS指令格式简单,形式固定 简化了流水线的译码阶段设计, 同时可减少流水线级数 MIPS指令对内存的操作仅允许在存取操作中 计算有效地址可放在执行阶段进行 MIPS指令具有数据规整性,保证存取数据一次完成 传输数据可保证在一个流水线级中完成,2012,24,华东师范大学计算机科学技术系,6.1 流水线概述,四、流水线冒险 流水线中的主要问题 希望流水线充分发挥作用 关键:不断流 但实际情况通常会出现相关冲突,使流水 线发生断流,称为冒险 流水线CPI=理想流水线CPI+结构停顿+数据停顿+控制停顿 主要相关冲突: 资源相关结构冒险 数据相关数据冒险 控制相关控制冒

13、险,2012,25,华东师范大学计算机科学技术系,四、流水线冒险,1. 结构冒险 指多条指令进入流水线后在同一机器时钟周期内争用同一个功能部件所发生的冲突,结构冒险实例:两条指令同时访问内存发生 资源相关冲突,在时钟T4时: I1指令执行访存操作:读操作数 I4指令执行访存操作:读指令 若数据、指令放在同一存储器中(单端输出),则发生资源相关冲突(结构冒险),五个子过程段:IF: 取指 ID: 指令译码、寄存器堆读取 EX: 指令执行(ALU) MEM:内存访问 WB: 结果写寄存器堆,解决冲突的办法: 在不改变程序正确执行的前提下,尽力开发并行度 延迟I4指令的执行,停顿一拍后再启动(引入气

14、泡) 增设一个存储器,将指令和数据分别放在两个存储 器中,2012,26,华东师范大学计算机科学技术系,四、流水线冒险,2. 数据冒险 在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关的。 在流水线计算机中,由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突 可能存在数据冒险,是否存在相关取决于程序的性质,而一个给定的相关是否会引起数据冒险则取决于流水线的结构。,2012,27,华东师范大学计算机科学技术系,2. 数据冒险,数据相关实例 add $t1,$t2,$t3 ;($t2)+($t3)$t1 sub

15、 $t4,$t1,$t5 ;($t1)-($t5)$t4 and $t6,$t1,$t7 ;($t1)($t7)$t6,这一数据冒险将严重阻碍流水线,流水线阻塞(产生气泡),解决冲突的办法: 通过编译优化,将相关指令和不相关指令恰当混合, 但很难得到令人满意的效果 采用定向传送技术(数据定向或数据旁路) 设置专用定向通路,将运算结果直接作为输入项,供 后继指令直接使用,而不必等待下一时钟周期,以尽 量减少延迟时间,2012,28,华东师范大学计算机科学技术系,2. 数据冒险,例1)两条指令间的数据转发 顺序执行: add $s0,$t0,$t1 sub $t2,$s0,$t3 不采取措施,su

16、b指令的ID子过程必须延迟到 第6拍进行 采用数据定向传送通道 图6-5 sub指令执行可不断流。当add指令完成EX步 骤,运算结果将通过定向传送通道直接作为 sub指令的操作数。,2012,29,华东师范大学计算机科学技术系,2. 数据冒险,数据定向技术并不能完全解决流水线阻塞问题,但能尽量减少阻塞时间。 例2)顺序执行: lw $s0,20($t1) sub $t2,$s0,$t3 即使采用数据定向技术,但由于lw指令得到$s0的结果要等到第4拍(MEM)结束,而理想状况sub指令的执行就在第4拍,所以,流水线仍然不得不阻塞一步。 图6-6 要获知是否发生阻塞,需相应的技术,后面讨论。,

17、2012,30,华东师范大学计算机科学技术系,2. 数据冒险,例3)重新排列代码以避免流水线阻塞 C语言: A=B+E C=B+F MIPS指令: I1: lw $t1,0($t0) I2: lw $t2,4($t0) I3: add $t3,$t1,$t2 I4: sw $t3,12($t0) I5: lw $t4,8($t0) I6: add $t5,$t1,$t4 I7: sw $t5,16($t0),内存,基址+0 +4 +8 +12 +16,例3),I1: lw $t1,0($t0) I2: lw $t2,4($t0) I3: add $t3,$t1,$t2 I4: sw $t3,1

18、2($t0) I5: lw $t4,8($t0) I6: add $t5,$t1,$t4 I7: sw $t5,16($t0),不采取任何措施 需23个周期完成,I1 I2 I3 I4 I5 I6 I7,t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t12 t14 t16 t18 t20 t22,例3),I1: lw $t1,0($t0) I2: lw $t2,4($t0) I3: add $t3,$t1,$t2 I4: sw $t3,12($t0) I5: lw $t4,8($t0) I6: add $t5,$t1,$t4 I7: sw $t5,16($t0), 采取数据定向

19、技术 只需13个周期完成,但不能完全解决阻塞问题。,I1 I2 I3 I4 I5 I6 I7,t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t12 t14 t16 t18,例3),I1: lw $t1,0($t0) I2: lw $t2,4($t0) I3:lw $t4,8($t0) I4: add $t3,$t1,$t2 I5: add $t5,$t1,$t4 I6: sw $t3,12($t0) I7: sw $t5,16($t0), 对程序重新排序,调整 原指令序列,现只需 11个周期完成,又提前 2个周期。,I1 I2 I3 I4 I5 I6 I7,t1 t2 t3 t

20、4 t5 t6 t7 t8 t9 t10 t12 t14 t16 t18,2012,34,华东师范大学计算机科学技术系,2. 数据冒险,由此引出MIPS结构设计的另一特点: 每条MIPS指令最多输出一个结果,并在接近流水线的末端完成对这个结果的回写。 按序完成 若每条指令的转发结果多于一个,或采用较早写回策略的话,实现数据转发将更困难。,2012,35,华东师范大学计算机科学技术系,四、流水线冒险,3. 控制冒险 控制相关冲突是由分支指令(包括中断)引起的。当执行分支指令时,依据分支条件产生结果,可能为顺序执行下一条指令;也可能转移到新的目标地址执行指令,原流水线前期操作的内容全部作废,从而使

21、流水线发生断流。 原因: 判断结果在最后阶段才能产生,2012,36,华东师范大学计算机科学技术系,3. 控制冒险,解决冲突的方法: 常用以下分支处理技术: 延迟转移法(编译优化) 基本思想是“先执行再转移”,即发生转移取时并不排空指令流水线,而是让紧跟在分支指令之后已进入流水线的少数几条指令继续完成。 如果这些指令是与分支结果无关的有用指令,那么延迟损失时间片正好得到了有效的利用。,2012,37,华东师范大学计算机科学技术系,3. 控制冒险, 增加硬件电路,缩短分支延迟 ) 默认分支不发生 默认执行顺序指令,分支发生时清除 已执行指令。 )将分支判断提前到ID阶段完成,缩短 分支的延迟,2

22、012,38,华东师范大学计算机科学技术系,3. 控制冒险, 分支预测法 保存每个分支执行情况的历史记录,根据近期执行的情况,来预测将来的行为,用硬件方法来实现分支预测。 一旦预测错误,流水线控制机制必须保证错误执行的指令失效,重新进入正确的分支。 MIPS采用延迟分支法,分支指令后的下一条指令总是被执行,分支则发生在这条指令执行完后。 对程序员透明,由汇编器完成,2012,39,华东师范大学计算机科学技术系,四、流水线冒险,小结: 流水线增加了同时执行的指令的数目(并行性),提高了处理器的吞吐率,但并没有减少单条指令的执行时间或时延; 理论上k级线性流水线可提高k倍速度,但较长的流水线会恶化

23、预测的性能,增加错误预测的代价; 流水线技术对程序员透明; 流水线设计者必须解决:结构冒险、数据冒险和控制冒险问题,以提高计算机的性能。,2012,40,华东师范大学计算机科学技术系,四、流水线冒险,例4)下列指令序列在5级流水线执行中是否会 发生阻塞?通过数据定向技术能否解决冒 险问题? addi $t1,$t0,#1 addi $t2,$t0,#2 addi $t3,$t0,#3 addi $t3,$t0,#4 addi $t5,$t0,#5 程序执行时,数据不会发生冲突冒险,所以流水线不会阻塞,2012,41,华东师范大学计算机科学技术系,例4),2. lw $t0,0($t0) add

24、i $t2,$t0,#2,lw add,程序执行时,$t0数据产生冲突冒险,流水线发生阻塞。 即使采用数据定向技术也不能完全解决阻塞问题,但add指令执行可提前1个时钟周期。,2012,42,华东师范大学计算机科学技术系,例4),3. add $t1,$t0,$t0 addi $t2,$t0,#5 addi $t4,$t1,#5,add addi addi,程序执行时,$t1数据相关,流水线有可能发生阻塞。 采用数据定向技术能完全解决阻塞问题,使流水线不断流。,2012,43,华东师范大学计算机科学技术系,6 利用流水线提高性能,6.1 流水线概述 6.2 流水线的数据通路,2012,44,华

25、东师范大学计算机科学技术系,6.2 流水线的数据通路,级单时钟周期流水线的数据通路 P248图6-9 分析: 一般执行步骤:从左到右 例外(从右到左): 写回数据到寄存器堆 引起结构冒险 选择PC的值(后继地址) 引起控制冒险,2012,45,华东师范大学计算机科学技术系,6.2 流水线的数据通路,解决方法: 将子过程段分为两部分: 例:寄存器堆读(前半周期)和寄存器堆写 (后半周期) 图6-10 增加子过程段缓冲寄存器,存储后级需要使 用的数据 图6-11,2012,46,华东师范大学计算机科学技术系,6.2 流水线的数据通路,一、流水线工作原理 例5)lw指令的流水执行过程 取指令 图6-

26、12 M(PC) IF/ID流水线缓冲寄存器(32位) 相当于读出指令送IR PC+4 IF/ID流水线缓冲寄存器(32位) PC指向下一条指令地址 IF/ID流水线缓冲寄存器共64位,2012,47,华东师范大学计算机科学技术系,例5),2. 指令译码与读取寄存器堆 图6-12 读rs寄存器值ID/EX流水线缓冲寄存器(32位) 读rt寄存器值ID/EX流水线缓冲寄存器(32位) 指令的16位立即数符号扩展后ID/EX流水线缓冲寄存器(32位) IF/ID缓冲寄存器中的PC增值ID/EX流水线缓冲寄存器(32位) ID/EX流水线缓冲寄存器共128位,2012,48,华东师范大学计算机科学技

27、术系,例5),3. 指令执行或地址计算 图6-13 ID/EX流水线缓冲寄存器中的rt内容EX/MEM流水线缓冲寄存器(32位) 有效地址运算结果(或指令操作运算结果)+标志位EX/MEM流水线缓冲寄存器(32+1位) PC分支目标地址的计算结果EX/MEM流水线缓冲寄存器(32位) EX/MEM流水线缓冲寄存器共97位,2012,49,华东师范大学计算机科学技术系,例5),4. 内存访问 图6-14 数据存储器读出内容MEM/WB流水线缓冲寄存器(32位) 指令操作运算结果MEM/WB流水线缓冲寄存器(32位) MEM/WB流水线缓冲寄存器共64位 5. 写回 图6-14 从MEM/WB流水

28、线缓冲寄存器中读出数据写入寄存器堆。,2012,50,华东师范大学计算机科学技术系,一、流水线工作原理,例6)sw指令的流水执行过程 取指令 图6-12 同lw指令 2. 指令译码与读寄存器堆 图6-12 读rs寄存器值ID/EX流水线缓冲寄存器(32位) 读rt寄存器值ID/EX流水线缓冲寄存器(32位) 指令的16位立即数符号扩展后ID/EX流水线缓冲寄存器(32位) IF/ID缓冲寄存器中的PC增值ID/EX流水线缓冲寄存器(32位),2012,51,华东师范大学计算机科学技术系,例6),3. 指令执行或地址计算 图6-15 ID/EX流水线缓冲寄存器中的rt内容EX/MEM流水线缓冲寄

29、存器(32位) 数据 有效地址运算结果(或指令操作运算结果)+标志位EX/MEM流水线缓冲寄存器(32+1位) 地址 PC分支目标地址的计算结果EX/MEM流水线缓冲寄存器(32位),2012,52,华东师范大学计算机科学技术系,例6),4. 内存访问 图6-16 读取EX/MEM缓冲器保存的数据和有效地址,写入数据存储器 数据存储器读出内容MEM/WB流水线缓冲寄存器(32位) 有效地址运算结果(或指令操作运算结果) MEM/WB流水线缓冲寄存器(32位) 5. 写回 图6-16 空操作,2012,53,华东师范大学计算机科学技术系,一、流水线工作原理,重要特性: 增加流水线缓冲寄存器,保证

30、上一级向下一 级传递信息的正确性; 数据通路中的每一个逻辑元件都只能在流水 线的单级中使用,否则将产生结构冒险。,2012,54,华东师范大学计算机科学技术系,一、流水线工作原理,例5 lw指令流水线中的bug: T5节拍产生回写数据,但写入寄存器堆的 地址此时已发生改变(因已多次取指)。 修改措施: 将IF/ID中的rt内容(包括rd,算术运算指 令需要)逐级通过流水线缓冲器传递并保存, 直至写入寄存器堆时使用 P256图6-17,2012,55,华东师范大学计算机科学技术系,6.2 流水线的数据通路,二、用图形的方式表示流水线 1. 多时钟周期的流水线图 图6-19:描述每步所使用的实际资

31、源 图6-20:也称流水线时空图,描述每个步 骤的名称 简单但忽略细节 2. 单时钟周期的流水线图 图6-21 描述同一时钟节拍内各条指令使用各个逻辑部件的情况,2012,56,华东师范大学计算机科学技术系,6 利用流水线提高性能,6.1 流水线概述 6.2 流水线的数据通路 6.3 流水线中的控制,2012,57,华东师范大学计算机科学技术系,6.3 流水线中的控制,在基于流水线的简单数据通路中加入控制电路 1. 加入所需的操作控制信号 图6-22 说明: PC及流水线缓冲寄存器利用流水线时钟信 号打入(每个节拍打入一次),所以不需 要另外的控制信号。 6位的指令功能码不必单独保存,同ID/

32、EX 中符号扩展后的立即数的低6位。,2012,58,华东师范大学计算机科学技术系,6.3 流水线中的控制,2. 在每个流水线步骤中设定相应的操作控制信 号 取指令:读指令存储器 PCSrc:选择PC写入内容 写PC 写IF/ID 指令译码/读取寄存器堆:读寄存器堆 写ID/EX 以上步骤在每个时钟周期内执行,不需设置控 制(不考虑冒险等问题),2012,59,华东师范大学计算机科学技术系,2. 在每个流水线步骤中设定相应的操作控制信号, 指令执行/有效地址计算: RegDst:选择结果寄存器 ALUOp: 确定ALU操作 ALUSrc:选择第2操作数(rt/或符号扩展 后的立即数) 写EX/

33、MEM 内存访问: Branch MemRead 由指令操作码决定 MemWrite 写MEM/WB,2012,60,华东师范大学计算机科学技术系,2. 在每个流水线步骤中设定相应的操作控制信号, 写回: MemtoReg:选择写回寄存器堆结果(运算 结果/数据存储器读出内容) RegWrite:寄存器堆写入信号 操作控制信号设计同P201图5-18 区别:加入流水线子过程段控制信号 流水线T3,T4,T5阶段操作控制信号:图6-25,2012,61,华东师范大学计算机科学技术系,6.3 流水线中的控制,实施方法: 简单的方法是扩展流水线缓冲寄存器内容, 使之包含这些操作控制信号 图6-26

34、后级使用的操作控制信号要逐级通过流水线缓 冲寄存器传送 带有控制的流水线数据通路 图6-27 IF/ID: 64位 ID/EX: 147位 EX/MEM:107位 MEM/WB:71位,2012,62,华东师范大学计算机科学技术系,6 利用流水线提高性能,6.1 流水线概述 6.2 流水线的数据通路 6.3 流水线中的控制 6.4 数据冒险与转发,2012,63,华东师范大学计算机科学技术系,6.4 数据冒险与转发,数据冒险是影响流水线性能的主要障碍 分析下列程序: sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100

35、($2) sub-and,sub-or,sub-add,sub-sw存在数据相关性,2012,64,华东师范大学计算机科学技术系,6.4 数据冒险与转发,多时钟周期的流水线图: 图6-28 and,or指令由于数据冒险,产生错误结果; add,sw指令无数据冒险,执行结果正确。 增加数据定向技术,sub指令在EX段产生运算 结果直接作为and指令EX段的执行输入,则流 水线不会产生气泡。,2012,65,华东师范大学计算机科学技术系,6.4 数据冒险与转发, 描述冒险关系 1a: EX/MEM.RegisterRd=ID/EX.RegisterRs 1b: EX/MEM.RegisterRd=

36、ID/EX.RegisterRt 2a: MEM/WB.RegisterRd=ID/EX.RegisterRs 2b: MEM/B.RegisterRd=ID/EX.RegisterRt,2012,66,华东师范大学计算机科学技术系,6.4 数据冒险与转发,相关性检测: sub-and是1a类冒险 EX/MEM.RegisterRd=ID/EX.RegisterRs=$2 sub-or是2b类冒险 MEM/WB.RegisterRd=ID/EX.RegisterRt=$2 sub-add和sub-sw不存在数据冒险,2012,67,华东师范大学计算机科学技术系,6.4 数据冒险与转发,数据转发

37、需受到控制: 仅当回写执行时转发: 检测EX、MEM阶段的流水线缓冲寄存器WB域的RegWrite是否有效。 当Rd=$0,MIPS规定操作数必为0 增加冒险控制条件 将EX/MEM.RegisterRd0加入第一种冒险条件 MEM/WB.RegisterRd0加入第二种冒险条件 相关性可能来自指令流水线的多个阶段(图6-29),可在ALU输入端增加MUX和正确的控制策略 图6-30,($0)= 0,2012,68,华东师范大学计算机科学技术系,6.4 数据冒险与转发,检测冒险的条件以及解决冒险的控制信号: P266图6-30 MUX控制信号含义 图6-31 1.EX冒险: if(EX/MEM

38、.RegWrite and(EX/MEM.RegisterRd0) and(EX/MEM.RegisterRd=ID/EX.RegisterRs)ForwardA=10 if(EX/MEM.RegWrite and(EX/MEM.RegisterRd0) and(EX/MEM.RegisterRd=ID/EX.RegisterRt)ForwardB=10,2012,69,华东师范大学计算机科学技术系,6.4 数据冒险与转发,2.MEM冒险: if(MEM/WB.RegWrite and(MEM/WB.RegisterRd0) and(MEM/WB.RegisterRd=ID/EX.Regist

39、erRs)ForwardA=01 if(MEM/WB.RegWrite and(MEM/WB.RegisterRd0) and(MEM/WB.RegisterRd=ID/EX.RegisterRt)ForwardB=01,2012,70,华东师范大学计算机科学技术系,6.4 数据冒险与转发,3. 复杂的潜在数据冒险 例:add $1,$1,$2 add $1,$1,$3 add $1,$1,$4 一系列连续的指令读写同一个寄存器,MEM 阶段中的结果更新,其更新的结果是由MEM步骤 转发得到的,所以修改MEM冒险的控制策略: if(MEM/WB.RegWrite and(MEM/WB.Regi

40、sterRd0) and(EX/MEM.RegisterRdID/EX.RegisterRs) and(MEM/WB.RegisterRd=ID/EX.RegisterRs)ForwardA=01 if(MEM/WB.RegWrite and(MEM/WB.RegisterRd0) and(EX/MEM.RegisterRdID/EX.RegisterRt) and(MEM/WB.RegisterRd=ID/EX.RegisterRt)ForwardB=01,2012,71,华东师范大学计算机科学技术系,6.4 数据冒险与转发,图6-32:支持数据转发的硬件电路(不具有完 整的数据通路) 图6

41、-33:增加MUX,以选择符号扩展后的立即数,2012,72,华东师范大学计算机科学技术系,6 利用流水线提高性能,6.1 流水线概述 6.2 流水线的数据通路 6.3 流水线中的控制 6.4 数据冒险与转发 6.5 数据冒险与阻塞,2012,73,华东师范大学计算机科学技术系,6.5 数据冒险与阻塞,数据定向技术并不能完全解决流水线断流问题,一旦发生,必须有相应的机制阻塞流水线。 例:图6-34 lw-and 数据相关 lw: 在CC4从内存读出数据,CC5送$2 and: 在CC4需要$2操作数执行,阻塞一拍 因此为解决数据冒险问题,除转发控制外,还需一个冒险检测单元。,2012,74,华

42、东师范大学计算机科学技术系,6.5 数据冒险与阻塞,冒险检测单元: 在ID阶段检测lw指令,控制条件: if(ID/EX.MemRead and (ID/EX.RegisterRd= IF/ID.RegisterRs) or (ID/EX.RegisterRd = IF/ID.RegisterRt) stall the pipeline,lw是唯一一条读数据存储器指令,因此用MemRead判断是否lw指令。,检测lw的目的寄存器与下一条指令的源寄存器是否相同,如果条件成立,下条指令(and)将阻塞一个 时钟周期。 若没有采用数据定向机制,则将阻塞二个 时钟周期。,2012,75,华东师范大学计

43、算机科学技术系,6.5 数据冒险与阻塞,阻塞: ID和IF阶段一起被阻塞(防止预取指令丢失) 方法: 保持PC寄存器和IF/ID流水线缓冲寄存器不变。,读同一条指令,相当于IR不变,阻塞就相当于执行nop指令,通过将9个操作控制信号清0实现。 图6-35,2012,76,华东师范大学计算机科学技术系,6.5 数据冒险与阻塞,图6-36:加入冒险检测单元和转发单元 lw指令冒险条件满足,冒险检测单元就阻塞并 清除所有的控制字段。 保持PC和IF/ID流水线缓冲寄存器不变 写信号PCWrite和IF/IDWrite无效 流水线执行nop指令 增加MUX选择0送ID/EX.WB,ID/EX.M,ID

44、/EX.EX (也可只将RegWrite和MemWrite置0),2012,77,华东师范大学计算机科学技术系,6 利用流水线提高性能,6.1 流水线概述 6.2 流水线的数据通路 6.3 流水线中的控制 6.4 数据冒险与转发 6.5 数据冒险与阻塞 6.6 分支冒险,2012,78,华东师范大学计算机科学技术系,6.6 分支冒险,分支冒险也称控制冒险 例:图6-37分支指令对流水线的影响 现象分析: beq指令决定是否分支发生在MEM阶段(CC4),当产生比较结果标志后在第4个时钟周期转移地址送PC。若不加干涉的话,后续三条指令在程序转移之前已进入流水线执行。 发生控制相关错误,2012,

45、79,华东师范大学计算机科学技术系,6.6 分支冒险,解决方案: 一、假定分支不发生 默认分支不发生,继续执行顺序的指令流。 若分支发生,则丢弃已执行的指令,转分支目 标地址执行。 效率:设分支不发生的可能性为50%,丢弃指令 的代价很少的话,这种方法可将控制冒 险的代价减半。,2012,80,华东师范大学计算机科学技术系,一、假定分支不发生,丢弃指令的方法: 同前述lw指令,将操作控制信号置0。但所 不同的是:必须将流水线IF、ID、EX阶段的指 令操作控制码都清除掉。前者只需将ID阶段的 操作控制码清0。,2012,81,华东师范大学计算机科学技术系,解决方案:,二、减少分支的延迟 尽可能

46、早的完成分支判断,降低执行分支的 代价。 提前决策需提前完成两个操作: 计算分支的目标地址 判断分支的跳转条件,2012,82,华东师范大学计算机科学技术系,二、减少分支的延迟,1.计算分支的目标地址 图6-27 在ID阶段已得到PC+4和IF/ID流水线缓冲寄 存器中的指令立即数。 可将分支地址加法器从EX阶段移到ID阶段。 这种设计将使ID阶段的操作:立即数符号 扩展、左移和分支地址加法时间更加紧凑。,2012,83,华东师范大学计算机科学技术系,二、减少分支的延迟,2.判断分支的跳转条件 图6-27 需增加电路,并提供数据旁路,以提早产 生判断结果。 例:要判断是否相等,可在ID阶段将读

47、取的寄 存器值按位异或,产生判断结果。,2012,84,华东师范大学计算机科学技术系,2.判断分支的跳转条件,主要困难: 首先完成指令译码,以决定是否要将数据旁路送给比较电路进行比较判断。数据旁路原由ALU相关电路负责,这里须在ID阶段另外设计数据旁路电路。ID阶段工作比较繁重,可能增加流水线子过程段的时间。 由于数据比较工作提前到ID阶段,当指令序列存在数据冒险时,可能引发流水线停顿。 例:分支指令的前一条指令是ALU指令,且ALU 的运算结果用于分支指令的比较操作,而 ALU指令的EX阶段发生在分支指令的ID阶段 之后,流水线断流。,2012,85,华东师范大学计算机科学技术系,2.判断分

48、支的跳转条件,将分支指令的执行过程提前到ID阶段对流水线 性能还是有一定的改善。在分支跳转时只要清 除取指令的那条指令。 图6-37 为了在IF阶段清除一条指令,加入IF.Flush控 制线,清空IF/ID流水线缓冲寄存器(相当于执 行nop指令) 图6-38,2012,86,华东师范大学计算机科学技术系,6.6 分支冒险,例6)流水线分支 P273 图6-38 beq指令在ID阶段产生分支结果 PC+4、28加法器,运算结果72PC $1,$3数据旁路送比较器,相等则IF.Flush信号有 效,清IF/ID流水线缓冲寄存器内容(插入一条nop 指令) PC=72,取转移目标地址指令lw,2012,87,华东师范大学计算机科学技

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1