1.56k likes | 1.85k Views
§6 利用流水线提高性能. §6 利用流水线提高性能. 6.1 流水线概述 6.2 流水线的数据通路 6.3 流水线中的控制 6.4 数据冒险与转发 6.5 数据冒险与阻塞 6.6 分支冒险 6.7 异常 6.8 提高性能 6.9 实例: Pentium 4 处理器的流水线. §6 利用流水线提高性能. 6.1 流水线概述. 6.1 流水线概述. 并行处理技术 早期的计算机基于冯 · 诺伊曼的体系结构, 采用的是串行处理 计算机的各个操作只能串行地完成,任一时刻只能进行一个操作. 6.1 流水线概述.
E N D
§6 利用流水线提高性能 华东师范大学计算机科学技术系
§6 利用流水线提高性能 6.1 流水线概述 6.2 流水线的数据通路 6.3 流水线中的控制 6.4 数据冒险与转发 6.5 数据冒险与阻塞 6.6 分支冒险 6.7 异常 6.8 提高性能 6.9 实例:Pentium 4处理器的流水线 华东师范大学计算机科学技术系
§6 利用流水线提高性能 6.1 流水线概述 华东师范大学计算机科学技术系
6.1 流水线概述 并行处理技术 早期的计算机基于冯·诺伊曼的体系结构, 采用的是串行处理 计算机的各个操作只能串行地完成,任一时刻只能进行一个操作 华东师范大学计算机科学技术系
6.1 流水线概述 • 一、并行处理技术 • 并行性: • 同时性:指两个以上事件在同一时刻发生 • 并发性:指两个以上事件在同一时间间隔 • 内发生 • 计算机的并行处理技术可贯穿于信息处理 • 的各个步骤和阶段 • 分三种形式: 时间并行 • 空间并行 • 时间并行+空间并行 华东师范大学计算机科学技术系
一、并行处理技术 • 时间并行 • ——时间重叠 • 让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以赢得处理速度 • 时间并行性概念的实现方式就是采用流水处理部件 华东师范大学计算机科学技术系
一、并行处理技术 • 空间并行 • ——资源重复 • 在并行性概念中引入空间因素,以增加“数 • 量” 来大幅度提高计算机的处理速度 • 空间并行技术主要体现在多处理器系统和 • 多计算机系统 华东师范大学计算机科学技术系
一、并行处理技术 • 时间并行+空间并行 • ——时间重叠和资源重复的综合应用 • 既采用时间并行性又采用空间并行性 • 例:奔腾CPU采用超标量流水技术,在一 • 个机器周期中同时执行两条指令 • 具有时间并行性又具有空间并行性 华东师范大学计算机科学技术系
6.1 流水线概述 流水线是一种可将多条指令的执行过程相互重叠的实现技巧。流水线技术是在计算机上实现时间并行性,提高处理器速度的一种非常经济的方法。 二、流水线工作原理概述: 将任务分割为一系列子任务,使各子任务能在流水线的各个阶段并发地执行,即实现子任务级的并行操作。 华东师范大学计算机科学技术系
二、流水线工作原理概述: 子任务的划分———决定流水线性能的关键因素。 方法:将T任务划分为k个子任务 T = ﹛T1,T2,…Tk﹜ 要求:各子任务划分合理,处理时间相同,避 免空转 子任务任务数的划分取决于: ·操作的效率 ·所期望的处理速度 ·成本价格等 关键: 每个子任务的处理时间一样 应取多少任务数 华东师范大学计算机科学技术系
二、流水线工作原理概述: 效率: 子任务并行工作,提高了吞吐率 ·实际上整个任务处理的时间并没有缩短, 而是因为各子任务并行工作,单位时间 内所完成的工作量就大大增加了。流水 线提高了整个系统的吞吐率。 ·子任务划分越细,流水线效率越高,但 硬件代价也越高 华东师范大学计算机科学技术系
二、流水线工作原理概述: 1. 线性流水线 各子任务之间有一定的优先关系。若i﹤j, 则必须在Ti完成后,Tj才开始工作,这种线性优先关系的流水线称为线性流水线。 时钟周期 τi为执行Si所需的时间,τl为缓冲寄存器 的延时 τ=max{τi}+τl=τm+τl 流水线时钟频率为: f=1/τ 华东师范大学计算机科学技术系
二、流水线工作原理概述: K个时钟周期用于处理第一个任务,流水线正常流动 后,剩下的n-1个任务,每个时钟周期就能完成一个。 2. 流水线加速比 当流水线任务饱满时,任务源源不断地输入流水线,不论有多少级过程段,每隔一个时钟周期都能输出一个任务 从理论上说,一个具有k级过程段的流水线处理n个任务需要的时钟周期数为: Tk=k+(n-1) 而用非流水线的硬件来处理这n个任务,时间上只能串行进行,则所需时钟周期数为: TL=n·k 华东师范大学计算机科学技术系
流水线所带来的性能提升是通过提高指令的吞吐率来实现流水线所带来的性能提升是通过提高指令的吞吐率来实现 的,而不是通过减少单条指令的执行时间来实现。 2. 流水线加速比 k级过程段的流水线处理n个任务需要的时钟周期数为: Tk=k+(n-1) 非流水线的硬件处理所需时钟周期数为: TL=n·k • 流水线加速比 Ck=TL/Tk= n k /(k+(n-1))k 理论上k级线性流水线可提高k倍速度, 但实际上由于存在结构冒险、数据 冒险等,并达不到理想的值。 当nk时,Ckk 华东师范大学计算机科学技术系
二、流水线工作原理概述: • 3. 流水线时空图 • 为了实现流水,首先把输入的任务(或过程)分割为一系列子任务,并使各子任务能在流水线的各个阶段并发地执行 • 当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现了子任务级的并行性 华东师范大学计算机科学技术系
3. 流水线时空图 取指 译码 执行 回写 S1 S2 S3 S4 IF ID EX WB 入 出 • 设指令执行的流水线过程段: • 一条流水线由一系列串联的过程段组成 • 各过程段之间设有高速缓冲寄存器,以暂时保存上一过 • 程段子任务处理的结果 • 在统一的时钟信号控制下,数据从一个过程段流向相邻 • 的过程段 例:一条指令的执行分为四个子过程段(Si) 每个子过程段处理时间均为t 分析对比: 非流水线、流水线、超标量流水线执行5条指令所需 时间 华东师范大学计算机科学技术系
3. 流水线时空图 空间S I1 I2 I1 I2 WB I1 I2 EX I1 I2 ID I1 I2 IF 1 2 3 4 5 6 7 8 • 上一条指令的四个子过程全部被执行完毕后才能 • 开始下一条指令 • 每隔4个机器时钟周期才有一个输出结果 • 执行5条指令所需时间: t45=20t • 非流水线时空图 时间T 华东师范大学计算机科学技术系
与前者比较: • 流水计算机在8个t时间中执行了5条指令 • 非流水线计算机在8个t时间中仅执行了2条指令 • 上一条指令与下一条指令的子过程在时间上可以 • 重叠执行 • 当流水线满载时,每一个时钟周期就可以输出一 • 个结果 • 执行5条指令所需时间: t4+(5-1)t=8t 3. 流水线时空图 空间S I1 I2 I3 I4 I5 I1 I2 I3 I4 I5 WB I1 I2 I3 I4 I5 EX I1 I2 I3 I4 I5 ID I1 I2 I3 I4 I5 IF 1 2 3 4 5 6 7 8 时间T • 标量流水线时空图 华东师范大学计算机科学技术系
三者比较: • 非流水线计算机在8个t时间中执行了2条指令 • 流水计算机在8个t时间中执行了5条指令 • 超标量流水线计算机在8个t时间中执行了10条指令 • 所谓超标量流水是指它具有两条以上的指令流水线 • 下图中的超标量流水线中,流水线满载时,每一个 • 时钟周期可以执行2条指令 • 执行5条指令所需时间: t4+(5-2)/2=6t 3. 流水线时空图 • 超标量流水线时空图 I1 I3 I5 I7 I9 空间S I2 I4 I6 I8 I10 WB EX ID IF 1 2 3 4 5 6 7 8 时间T 华东师范大学计算机科学技术系
6.1 流水线概述 • 三、针对流水线结构的指令集设计 • 指令流水线——指令级并行(ILP) • 利用执行指令所需的操作之间的并行,实 • 现多条指令重叠执行的一种技术 • 目前,几乎所有的高性能计算机都采用了 • 指令流水线 华东师范大学计算机科学技术系
三、针对流水线结构的指令集设计 • 开发方法: • 依赖于硬件,动态地发现和开发指令级并行,可将指令流的处理过程划分为取指令、译码、执行、写回等几个并行处理的过程段 • 例:Intel的Pentium系列 占市场主导地位 • ② 依赖于软件技术,在编译阶段静态地发现并行 • 例:Intel的Itanium系列 特定应用环境 华东师范大学计算机科学技术系
三、针对流水线结构的指令集设计 • 针对流水线结构的指令集设计: • MIPS指令集就是专为指令执行的流水线化 • 而设计的 • 特点: • ① 所有的MIPS指令等长 • ——简化了流水线的取指和译码阶段设计 • IA-32指令长度为1-17字节,为适合流水线, • 首先将指令转为简单的微操作,送入流水线处 • 理的实际上是微操作,而不是原始指令。 华东师范大学计算机科学技术系
三、针对流水线结构的指令集设计 • ② MIPS指令格式简单,形式固定 • ——简化了流水线的译码阶段设计, • 同时可减少流水线级数 • ③ MIPS指令对内存的操作仅允许在存取操作中 • ——计算有效地址可放在执行阶段进行 • ④ MIPS指令具有数据规整性,保证存取数据一次完成 • ——传输数据可保证在一个流水线级中完成 华东师范大学计算机科学技术系
6.1 流水线概述 • 四、流水线冒险 • 流水线中的主要问题 • · 希望流水线充分发挥作用 • 关键:不断流 • · 但实际情况通常会出现相关冲突,使流水 • 线发生断流,称为冒险 • 流水线CPI=理想流水线CPI+结构停顿+数据停顿+控制停顿 • 主要相关冲突: 资源相关——结构冒险 • 数据相关——数据冒险 • 控制相关——控制冒险 华东师范大学计算机科学技术系
四、流水线冒险 解决冲突的办法: 在不改变程序正确执行的前提下,尽力开发并行度 ① 延迟I4指令的执行,停顿一拍后再启动(引入气泡) ② 增设一个存储器,将指令和数据分别放在两个存储 器中 五个子过程段:IF: 取指 ID: 指令译码、寄存器堆读取 EX: 指令执行(ALU) MEM:内存访问 WB: 结果写寄存器堆 在时钟T4时: I1指令执行访存操作:读操作数 I4指令执行访存操作:读指令 若数据、指令放在同一存储器中(单端输出),则发生资源相关冲突(结构冒险) • 1. 结构冒险 • 指多条指令进入流水线后在同一机器时钟周期内争用同一个功能部件所发生的冲突 结构冒险实例:两条指令同时访问内存发生 资源相关冲突 华东师范大学计算机科学技术系
四、流水线冒险 • 2. 数据冒险 • 在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关的。 • 在流水线计算机中,由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突 • ——可能存在数据冒险 是否存在相关取决于程序的性质,而一个给定的相关是否会引起数据冒险则取决于流水线的结构。 华东师范大学计算机科学技术系
解决冲突的办法: ① 通过编译优化,将相关指令和不相关指令恰当混合, 但很难得到令人满意的效果 ② 采用定向传送技术(数据定向或数据旁路) 设置专用定向通路,将运算结果直接作为输入项,供 后继指令直接使用,而不必等待下一时钟周期,以尽 量减少延迟时间 2. 数据冒险 这一数据冒险将严重阻碍流水线,流水线阻塞(产生气泡) • 数据相关实例 • add $t1,$t2,$t3 ;($t2)+($t3)→($t1) • sub $t4,$t1,$t5 ;($t1)-($t5)→($t4) • and $t6,$t1,$t7 ;($t1)Λ($t7)→($t6) 华东师范大学计算机科学技术系
2. 数据冒险 例1)两条指令间的数据转发 顺序执行: add $s0,$t0,$t1 sub $t2,$s0,$t3 ·不采取措施,sub指令的ID子过程必须延迟到 第6拍进行 ·采用数据定向传送通道 图6-5 sub指令执行可不断流。当add指令完成EX步 骤,运算结果将通过定向传送通道直接作为 sub指令的操作数。 华东师范大学计算机科学技术系
2. 数据冒险 数据定向技术并不能完全解决流水线阻塞问题,但能尽量减少阻塞时间。 例2)顺序执行: lw $s0,20($t1) sub $t2,$s0,$t3 即使采用数据定向技术,但由于lw指令得到$s0的结果要等到第4拍(MEM)结束,而理想状况sub指令的执行就在第4拍,所以,流水线仍然不得不阻塞一步。 图6-6 要获知是否发生阻塞,需相应的技术,后面讨论。 华东师范大学计算机科学技术系
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,12($t0) I5: lw $t4,8($t0) I6: add $t5,$t1,$t4 I7: sw $t5,16($t0) • 不采取任何措施 • 需23个周期完成 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t12 t14 t16 t18 t20 t22 I1 I2 I3 I4 I5 I6 I7
例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) ② 采取数据定向技术 只需13个周期完成,但不能完全解决阻塞问题。 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t12 t14 t16 t18 I1 I2 I3 I4 I5 I6 I7
例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个周期。 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t12 t14 t16 t18 I1 I2 I3 I4 I5 I6 I7
2. 数据冒险 由此引出MIPS结构设计的另一特点: 每条MIPS指令最多输出一个结果,并在接近流水线的末端完成对这个结果的回写。 ——按序完成 若每条指令的转发结果多于一个,或采用较早写回策略的话,实现数据转发将更困难。 华东师范大学计算机科学技术系
四、流水线冒险 • 3. 控制冒险 • 控制相关冲突是由分支指令(包括中断)引起的。当执行分支指令时,依据分支条件产生结果,可能为顺序执行下一条指令;也可能转移到新的目标地址执行指令,原流水线前期操作的内容全部作废,从而使流水线发生断流。 • 原因: • 判断结果在最后阶段才能产生 华东师范大学计算机科学技术系
3. 控制冒险 • 解决冲突的方法: • 常用以下分支处理技术: • ① 延迟转移法(编译优化) • 基本思想是“先执行再转移”,即发生转移取时并不排空指令流水线,而是让紧跟在分支指令之后已进入流水线的少数几条指令继续完成。 • 如果这些指令是与分支结果无关的有用指令,那么延迟损失时间片正好得到了有效的利用。 华东师范大学计算机科学技术系
3. 控制冒险 • ② 增加硬件电路,缩短分支延迟 • ⅰ) 默认分支不发生 • 默认执行顺序指令,分支发生时清除 • 已执行指令。 • ⅱ)将分支判断提前到ID阶段完成,缩短 • 分支的延迟 华东师范大学计算机科学技术系
3. 控制冒险 • ③分支预测法 • 保存每个分支执行情况的历史记录,根据近期执行的情况,来预测将来的行为,用硬件方法来实现分支预测。 • 一旦预测错误,流水线控制机制必须保证错误执行的指令失效,重新进入正确的分支。 • MIPS采用延迟分支法,分支指令后的下一条指令总是被执行,分支则发生在这条指令执行完后。 ——对程序员透明,由汇编器完成 华东师范大学计算机科学技术系
四、流水线冒险 • 小结: • · 流水线增加了同时执行的指令的数目(并行性),提高了处理器的吞吐率,但并没有减少单条指令的执行时间或时延; • · 理论上k级线性流水线可提高k倍速度,但较长的流水线会恶化预测的性能,增加错误预测的代价; • · 流水线技术对程序员透明; • · 流水线设计者必须解决:结构冒险、数据冒险和控制冒险问题,以提高计算机的性能。 华东师范大学计算机科学技术系
四、流水线冒险 • 例4)下列指令序列在5级流水线执行中是否会 • 发生阻塞?通过数据定向技术能否解决冒 • 险问题? • addi $t1,$t0,#1 • addi $t2,$t0,#2 • addi $t3,$t0,#3 • addi $t3,$t0,#4 • addi $t5,$t0,#5 • 程序执行时,数据不会发生冲突冒险,所以流水线不会阻塞 华东师范大学计算机科学技术系
例4) • 2. lw $t0,0($t0) • addi $t2,$t0,#2 lw add 程序执行时,$t0数据产生冲突冒险,流水线发生阻塞。 即使采用数据定向技术也不能完全解决阻塞问题,但add指令执行可提前1个时钟周期。 华东师范大学计算机科学技术系
例4) • 3. add $t1,$t0,$t0 • addi $t2,$t0,#5 • addi $t4,$t1,#5 add addi addi 程序执行时,$t1数据相关,流水线有可能发生阻塞。 采用数据定向技术能完全解决阻塞问题,使流水线不断流。 华东师范大学计算机科学技术系
§6 利用流水线提高性能 6.1 流水线概述 6.2 流水线的数据通路 华东师范大学计算机科学技术系
6.2 流水线的数据通路 5级单时钟周期流水线的数据通路 P248图6-9 分析: 一般执行步骤:从左到右 例外(从右到左): ① 写回数据到寄存器堆 引起结构冒险 ② 选择PC的值(后继地址) 引起控制冒险 华东师范大学计算机科学技术系
6.2 流水线的数据通路 • 解决方法: • ·将子过程段分为两部分: • 例:寄存器堆读(前半周期)和寄存器堆写 • (后半周期) 图6-10 • ·增加子过程段缓冲寄存器,存储后级需要使 • 用的数据 图6-11 华东师范大学计算机科学技术系
6.2 流水线的数据通路 • 一、流水线工作原理 • 例5)lw指令的流水执行过程 • 取指令 图6-12 • ① M(PC)→ IF/ID流水线缓冲寄存器(32位) • 相当于读出指令送IR • ② PC+4 → IF/ID流水线缓冲寄存器(32位) • PC指向下一条指令地址 • IF/ID流水线缓冲寄存器共64位 华东师范大学计算机科学技术系
例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位 华东师范大学计算机科学技术系
例5) • 3. 指令执行或地址计算 图6-13 • ① ID/EX流水线缓冲寄存器中的rt内容→EX/MEM流水线缓冲寄存器(32位) • ② 有效地址运算结果(或指令操作运算结果)+标志位→EX/MEM流水线缓冲寄存器(32+1位) • PC分支目标地址的计算结果→EX/MEM流水线缓冲寄存器(32位) • EX/MEM流水线缓冲寄存器共97位 华东师范大学计算机科学技术系
例5) • 4. 内存访问 图6-14 • ① 数据存储器读出内容→MEM/WB流水线缓冲寄存器(32位) • 指令操作运算结果→MEM/WB流水线缓冲寄存器(32位) • MEM/WB流水线缓冲寄存器共64位 • 5. 写回 图6-14 • 从MEM/WB流水线缓冲寄存器中读出数据写入寄存器堆。 华东师范大学计算机科学技术系
一、流水线工作原理 • 例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位) 华东师范大学计算机科学技术系