第三章流水线技术 3.1名词解释 1.流水线一—将一个重复的时序过程,分解为若干个子过程,而每一个子过程都可有效地 在其专用功能段上与其他子过程同时执行 2.单功能流水线——只能完成一种固定功能的流水线 3.多功能流水线一一流水线的各段可以进行不同的连接,从而使流水线在不同的时间 者在同一时间完成不同的功能 4.静态流水线一一同一时间内,流水线的各段只能按同一种功能的连接方式工作。 5.动态流水线一一同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种 运算。 6.部件级流水线一—(运算操作流水线)把处理机的算术逻辑部件分段,以便为各种数据 类型进行流水操作 7.处理机级流水线一—(指令流水线)把解释指令的过程按照流水方式处理。 8.处理机间流水线——(宏流水线)由两个以上的处理机串行地对同一数据流进行处理, 每一个处理机完成一项任务。 9.线性流水线一一指流水线的各段串行连接,没有反馈回路。 10.非线性流水线—一指流水线中除有串行连接的通路外,还有反馈回路。 11.标量流水处理机一一处理机不具有向量数据表示,仅对标量数据进行流水处理。 12.向量流水处理机一一处理机具有向量数据表示,并通过向量指令对向量的各元素进行处 理 3.结构相关—一某些指令组合在流水线中重叠执行时,发生资源冲突,则称该流水线有结 构相关 14.数据相关一一当指令在流水线中重叠执行时,流水线有可能改变指令读/写操作的顺序, 使得读/写操作顺序不同于它们非流水实现时的顺序,将导致数据相关 15.定向一一将计算结果从其产生的地方直接送到其他指令需要它的地方,或所有需要它 功能单元,避免暂停。 16.RAW——两条指令i,j,i在j前进入流水线,j执行要用到i的结果,但当其在流水线中 重叠执行时,j可能在i写入其结果之前就先行对保存该结果的寄存器进行读操作,得到 错误值。 17.wAW—一两条指令i,j,i在j前进入流水线,j、i的操作数一样,在流水线中重叠执行 时,j可能在i写入其结果之前就先行对保存该结果的寄存器进行写操作,导致写错误 18.wAR——两条指令i,j,i在j前进入流水线,j可能在i读某个寄存器之前对该寄存器进 行写操作,导致i读出数据错误 第1页共52页
第 1 页 共 52页 第三章 流水线技术 3.1 名词解释 1. 流水线——将一个重复的时序过程,分解为若干个子过程,而每一个子过程都可有效地 在其专用功能段上与其他子过程同时执行。 2. 单功能流水线——只能完成一种固定功能的流水线。 3. 多功能流水线——流水线的各段可以进行不同的连接,从而使流水线在不同的时间,或 者在同一时间完成不同的功能。 4. 静态流水线——同一时间内,流水线的各段只能按同一种功能的连接方式工作。 5. 动态流水线——同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种 运算。 6. 部件级流水线——(运算操作流水线)把处理机的算术逻辑部件分段,以便为各种数据 类型进行流水操作。 7. 处理机级流水线——(指令流水线)把解释指令的过程按照流水方式处理。 8. 处理机间流水线——(宏流水线)由两个以上的处理机串行地对同一数据流进行处理, 每一个处理机完成一项任务。 9. 线性流水线——指流水线的各段串行连接,没有反馈回路。 10. 非线性流水线——指流水线中除有串行连接的通路外,还有反馈回路。 11. 标量流水处理机——处理机不具有向量数据表示,仅对标量数据进行流水处理。 12. 向量流水处理机——处理机具有向量数据表示,并通过向量指令对向量的各元素进行处 理。 13. 结构相关——某些指令组合在流水线中重叠执行时,发生资源冲突,则称该流水线有结 构相关。 14. 数据相关——当指令在流水线中重叠执行时,流水线有可能改变指令读/写操作的顺序, 使得读/写操作顺序不同于它们非流水实现时的顺序,将导致数据相关。 15. 定向——将计算结果从其产生的地方直接送到其他指令需要它的地方,或所有需要它的 功能单元,避免暂停。 16. RAW——两条指令 i,j,i 在 j 前进入流水线,j 执行要用到 i 的结果,但当其在流水线中 重叠执行时,j 可能在 i 写入其结果之前就先行对保存该结果的寄存器进行读操作,得到 错误值。 17. WAW——两条指令 i,j,i 在 j 前进入流水线,j、i 的操作数一样,在流水线中重叠执行 时,j 可能在 i 写入其结果之前就先行对保存该结果的寄存器进行写操作,导致写错误。 18. WAR——两条指令 i,j,i 在 j 前进入流水线,j 可能在 i 读某个寄存器之前对该寄存器进 行写操作,导致 i 读出数据错误
3.2简述流水线技术的特点。 (1)流水过程由多个相联系的子过程组成,每个过程称为流水线的“级”或“段” (2)每个子过程由专用的功能段实现 (3)各个功能段所需时间应尽量相等,否则,时间长的功能段将成为流水线的瓶颈 会造成流水线的“堵塞”和“断流”; (4)流水线需要有“通过时间”(第一个任务流出结果所需的时间),在此之后流水过 程才进入稳定工作状态,每一个时钟周期(拍)流出一个结 (5)流水技术适合于大量重复的时序过程,只有在输入端能连续地提供任务,流水线 的效率才能充分发挥。 3.3请画出DX基本流水线,并简述其工作原理 工作原理:把一条DX指令在5个周期内实现,将每一个时钟周期看作是流水线的一个 时钟周期,硬件每个时钟周期启动一条新的指令,并执行5条不同指令中的某一部分。每条指 令虽仍需5个时钟周期完成,但提高了吞吐率,实现了流水。 指令/时钟123 56 IF ID EX MEM WB I+1 IF ID EX MEM WB F ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 3.5解决流水线结构相关的方法有哪些? (1)流水化功能单元 (2)资源重复 (3)暂停流水线 3.6降低流水线分支损失的方法有哪些? (1)在流水线中尽早判断出分支转移是否成功 (2)尽早计算出分支转移成功时的PC值(即分支的目标地址) “冻结”或“排空”流水线的方法 预测分支失败 预测分支成功 ●延迟分支 第2页共52页
第 2 页 共 52页 3.2 简述流水线技术的特点。 (1) 流水过程由多个相联系的子过程组成,每个过程称为流水线的“级”或“段” ; (2) 每个子过程由专用的功能段实现; (3) 各个功能段所需时间应尽量相等,否则,时间长的功能段将成为流水线的瓶颈, 会造成流水线的“堵塞”和“断流”; (4) 流水线需要有“通过时间”(第一个任务流出结果所需的时间),在此之后流水过 程才进入稳定工作状态,每一个时钟周期(拍)流出一个结果; (5) 流水技术适合于大量重复的时序过程,只有在输入端能连续地提供任务,流水线 的效率才能充分发挥。 3.3 请画出 DLX 基本流水线,并简述其工作原理。 工作原理:把一条 DLX 指令在 5 个周期内实现,将每一个时钟周期看作是流水线的一个 时钟周期,硬件每个时钟周期启动一条新的指令,并执行 5 条不同指令中的某一部分。每条指 令虽仍需 5 个时钟周期完成,但提高了吞吐率,实现了流水。 指令/时钟 1 2 3 4 5 6 7 8 9 I IF ID EX MEM WB I+1 IF ID EX MEM WB I+2 IF ID EX MEM WB I+3 IF ID EX MEM WB I+4 IF ID EX MEM WB 3.5 解决流水线结构相关的方法有哪些? (1) 流水化功能单元 (2) 资源重复 (3) 暂停流水线 3.6 降低流水线分支损失的方法有哪些? (1)在流水线中尽早判断出分支转移是否成功; (2)尽早计算出分支转移成功时的 PC 值(即分支的目标地址) ⚫ “冻结”或“排空”流水线的方法 ⚫ 预测分支失败 ⚫ 预测分支成功 ⚫ 延迟分支
3.7请对延迟分支办法中的三种调度策略进行评价。 1.从前调动:分支必须不依赖于被调度的指令,总是可以有效提高流水线性能 2.从目标处调度:若分支转移失败,必须保证被调度的指令对程序的执行没有影响, 可能需要复制被调度指令。分支转移成功时,可提高流水线性能。但由于复制指令, 可能加大程序空间。 3.从失败处调度:若分支转移成功,必须保证被调度的指令对程序的执行无影响。分 支转移失败时,可提高流水线性能 3.8简述三种向量处理方法,它们对向量处理机的结构要求有什么不同? 1.水平处理方式:若向量长度为N,则水平处理方式相当于执行N次循环。若使用流水 线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。 2.垂直处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算。适合对 向量进行流水处理,向量运算指令的源目向量都放在存储器内,使得流水线运算部 件的输入、输出端直接与存储器相联,构成M-M型的运算流水线。 3.分组处理方式:把长度为N的向量分为若干组,每组长度为n,组内按纵向方式处理 依次处理各组,组数为N n/适合流水处理。可设长度为n的向量寄存器,使每 组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量 寄存器相联,构成R-R型运算流水线 3.9有一条流水线如下所示 一+2+a} 出 (1)求连续输入10条指令,该流水线的实际吞吐率和效率 (2)该流水线的瓶颈在哪一段?请采取三种不同的措施消除此“瓶颈”。对于你所给出 的新流水线,计算连续输入10条指令时,其实际吞吐率和效率。 解:(1 Tpm=>△t+(n-1)△tm 50+50+100+200)+9×200 2200(ns) %nm=均2 第3页共52页
第 3 页 共 52页 3.7 请对延迟分支办法中的三种调度策略进行评价。 1.从前调动:分支必须不依赖于被调度的指令,总是可以有效提高流水线性能。 2.从目标处调度:若分支转移失败,必须保证被调度的指令对程序的执行没有影响, 可能需要复制被调度指令。分支转移成功时,可提高流水线性能。但由于复制指令, 可能加大程序空间。 3.从失败处调度:若分支转移成功,必须保证被调度的指令对程序的执行无影响。分 支转移失败时,可提高流水线性能。 3.8 简述三种向量处理方法,它们对向量处理机的结构要求有什么不同? 1.水平处理方式:若向量长度为 N,则水平处理方式相当于执行 N 次循环。若使用流水 线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。 2.垂直处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算。适合对 向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部 件的输入、输出端直接与存储器相联,构成 M-M 型的运算流水线。 3.分组处理方式:把长度为 N 的向量分为若干组,每组长度为 n,组内按纵向方式处理, 依次处理各组,组数为 n N ,适合流水处理。可设长度为 n 的向量寄存器,使每 组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量 寄存器相联,构成 R-R 型运算流水线。 3.9 有一条流水线如下所示。 1 2 3 4 50ns 50ns 100ns 200ns 入 出 (1)求连续输入 10 条指令,该流水线的实际吞吐率和效率; (2)该流水线的瓶颈在哪一段?请采取三种不同的措施消除此“瓶颈”。对于你所给出 的新流水线,计算连续输入 10 条指令时,其实际吞吐率和效率。 解:(1) 2200(ns) (50 50 100 200) 9 200 T t (n 1) tmax m i 1 pipeline i = = + + + + = + − = (ns ) 220 1 T TP n 1 pipeline − = =
E=TP 4114545% (2)瓶颈在3、4段。 变成八级流水线(细分) Pipeline=>△t+(n-1)△tmx =50×8+9×50 =850(s) TE nT incine=785 Ati E=T 40010 =≈58.82% 变成两级流水线(合并) 入 200ns 200ns T 200×2+9×200 2200(ns) %nm=2 E=TP TP.40010 90.91% 211 重复设置部件 第4页共52页
第 4 页 共 52页 45.45% 11 5 4 400 TP m t E TP m i 1 i = = = = (2)瓶颈在 3、4 段。 ⚫ 变成八级流水线(细分) 1 2 3_1 3_2 4_1 4_4 入 出 50ns 50ns 50ns 50ns 50ns 50ns 850(ns) 50 8 9 50 T t (n 1) tmax m i 1 pipeline i = = + = + − = (ns ) 85 1 T TP n 1 pipeline − = = 58.82% 17 10 8 400 TP m ti E TP m i 1 = = = = ⚫ 变成两级流水线(合并) 123 4 入 出 200ns 200ns 2200(ns) 200 2 9 200 T t (n 1) tmax m i 1 pipeline i = = + = + − = (ns ) 220 1 T TP n 1 pipeline − = = 90.91% 11 10 2 400 TP m ti E TP m i 1 = = = = ⚫ 重复设置部件
T 4-1 4-2 4-4 marindin =ssns 850× 8=%17≈5882% 3.10一个流水线由四段组成,其中每当流经第三段时,总要在该段循环一次才能流到第四段。 如果每段经过一次的时间都是△t,问 (1)当在流水线的输入端每△t时间输入任务时,该流水线会发生什么情况? (2)此流水线的实际吞吐率为多少?如果每2△t输入一个任务,连续处理10个任务的实 际吞吐率和效率是多少? (3)当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理10个任务时,其吞吐 率提高多少? 解:(1)会发生流水线阻塞情况 stage3 stage3 stage4 stagel stage2 stall stage3 stage3 tagel stall stage3 stage4 nstr 4 l stagel stall stage2 stal stage3 stage3 stage4 第5页共52页
第 5 页 共 52页 1 2 3_1 3_2 4_1 4_2 4_3 4_4 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 8 8 9 9 10 10 8 9 10 8 9 10 850ns Time Stage (ns ) 85 1 T TP n 1 pipeline − = = 58.82% 17 10 850 8 E 400 10 = = 3.10 一个流水线由四段组成,其中每当流经第三段时,总要在该段循环一次才能流到第四段。 如果每段经过一次的时间都是△t,问: (1)当在流水线的输入端每△t 时间输入任务时,该流水线会发生什么情况? (2)此流水线的实际吞吐率为多少?如果每 2△t 输入一个任务,连续处理 10 个任务的实 际吞吐率和效率是多少? (3)当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理 10 个任务 时,其吞吐 率提高多少? 解:(1)会发生流水线阻塞情况。 Instr.1 stage1 stage2 stage3 stage3 stage4 instr.2 stage1 stage2 stall stage3 stage3 stage4 instr.3 stage1 stall stage2 stall stage3 stage3 stage4 instr.4 stall stage1 stall stage2 stall stage3 stage3 stage4 1 2 3-1 3-2 4-1 4-2 4-3 4-4
(2) 3t 4t 5t Instr. I stagel stage2 stage3 stage 3 stage4 instr 2 stagel stage2 stage3 stage3 stage4 instr 3 stagel stage2 stage3 stage3 stage4 3回叫 23At Sta 口日 Time 23M 2At 23 %n 23△t ≈54.35% (3)重复设置部件 第6页共52页
第 6 页 共 52页 (2) 0t 1t 2t 3t 4t 5t 6t 7t 8t Instr.1 stage1 stage2 stage3 stage3 stage4 instr.2 stage1 stage2 stage3 stage3 stage4 instr.3 stage1 stage2 stage3 stage3 stage4 Stage Time 1 2 3 4 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 9 9 10 10 10 10 10 23t Stage Time 1 2 3 4 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 9 9 10 10 10 10 10 23t 54.35% 92 50 4 E TP 5 23 10 T Tp n T 23 2 1 TP pipeline pipeline max = = = = = = t t t t (3)重复设置部件 1 2 3_1 3_2 4 t t t t t
31 32 22。。画 31 2□口 14 %nm=1%4.M=为. 吞吐率提高倍数=M=1.64 3.11如果流水线有m段,各段的处理时间分别是t(i=1,2,,m),现在有n个任务需要 完成,且每个任务均需流水线各段实现,请计算 (1)流水线完成这n个任务所需要的时间 (2)和非流水线实现相比,这n个任务流水实现的加速比是多少?加速比的峰值是多少? 解:(1) Tpipeline=>ti+(n-1)tmax nopipeline= n ∑t+(n-1),tm Speedupmux m (ti=to) (n> m, Speedup→m) 3.2在改进的DLX流水线上运行如下代码序列: LOOP. Lw RI, O(R2) 第7页共52页
第 7 页 共 52页 1 2 3_1 3_2 4 t t t t t Stage 1 1 Time 2 3_1 3_2 4 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 9 9 1 0 1 0 1 0 1 0 1 0 14t t t = = = 7 5 14 10 T TP n pipeline 吞吐率提高倍数= t t 23 10 7 5 =1.64 3.11 如果流水线有 m 段,各段的处理时间分别是 ti(i=1,2,…,m),现在有 n 个任务需要 完成,且每个任务均需流水线各段实现,请计算: (1)流水线完成这 n 个任务所需要的时间; (2)和非流水线实现相比,这 n 个任务流水实现的加速比是多少?加速比的峰值是多少? 解:(1) = = + − m i 1 Tpipeline ti (n 1) tmax (2) = = m i 1 Tnopipeline n ti (n m, Speedup m) (t t ) m n 1 Speedup m n t (n 1) t n t T T Speedup max i 0 m i 1 i max m i 1 i pipeline nopipeline → = + − = + − = = = = 3.12 在改进的 DLX 流水线上运行如下代码序列: LOOP: LW R1, 0(R2)
ADDI RI. RI#1 W O(R2), RI ADDI R2 R2. #4 R4,R3, BNZ R4 LOOP 其中,R3的初始值是R2+396。假设:在整个代码序列的运行过程中,所有的存储器访 都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存 向”。问: (1)在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列执行的流水线时 空图。假设采用排空流水线的策略处理分支指令,且所有的存储器访问都可以命中 Cache,那么执行上述循环需要多少个时钟周期? (2)假设该DLX流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。假 设采用预测分支失败的策略处理分支指令,且所有的存储器访问都可以命中 Cache 那么执行上述循环需要多少个时钟周期? (3)假设该DLX流水线有正常的定向路径,请对该循环中的指令进行调度。注意可以重 新组织指令的顺序,也可以修改指令的操作数,但是不能增加指令的条数。请画出 该指令序列执行的流水线时空图,并计算执行上述循环需要的时钟周期数 解 (1)寄存器读写可以定向,无其他旁路硬件支持。排空流水线。 Instruction 12345678910111213141516171819202122 Iwrl, 0(r2) IF ID EX M WB addirLrl#1 F SS ID EX M WB swrl, 0(r2) IF SS ID EX M WB addi r2. ]. #4 IF ID EX M WB sub r4 r3 r2 IFSSⅢ D EX M WB bnz r4, loop IF SS ID EX M WB wwrl.0 IF SS IF ID EX M WB 第i次迭代(i=0.98)开始周期:1+(i×17) 总的时钟周期数:(98×17)+18=1684 (2)有正常定向路径,预测分支失败。 Instruction 678910111131415 lwl, 0(r2) IF ID EX M WB addirlrl#1 IF ID S EX M WB wrl, 0(r2) IF S ID EX M WB addi r2 r2.#4 IF ID EX M WB sub r. r3 r2 IF ID EX M WB bnz r4, loop IF ID EX M WB wrl, O(r2) IF miss miss IF Id EX M WB 第i次迭代(i=0.98)开始周期:1+(i×10) 第8页共52页
第 8 页 共 52页 ADDI R1, R1, #1 SW 0(R2), R1 ADDI R2, R2, #4 SUB R4, R3, R2 BNZ R4, LOOP 其中,R3 的初始值是 R2+396。假设:在整个代码序列的运行过程中,所有的存储器访 问都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存 器“定向”。问: (1)在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列执行的流水线时 空图。假设采用排空流水线的策略处理分支指令,且所有的存储器访问都可以命中 Cache,那么执行上述循环需要多少个时钟周期? (2)假设该 DLX 流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。假 设采用预测分支失败的策略处理分支指令,且所有的存储器访问都可以命中 Cache, 那么执行上述循环需要多少个时钟周期? (3)假设该 DLX 流水线有正常的定向路径,请对该循环中的指令进行调度。注意可以重 新组织指令的顺序,也可以修改指令的操作数,但是不能增加指令的条数。请画出 该指令序列执行的流水线时空图,并计算执行上述循环需要的时钟周期数? 解: (1)寄存器读写可以定向,无其他旁路硬件支持。排空流水线。 Instruction 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 lw r1,0(r2) IF ID EX M WB addi r1,r1,#1 IF S S ID EX M WB sw r1,0(r2) IF S S ID EX M WB addi r2,r2,#4 IF ID EX M WB sub r4,r3,r2 IF S S ID EX M WB bnz r4,loop IF S S ID EX M WB lw r1,0(r2) IF S S IF ID EX M WB 第 i 次迭代(i=0..98)开始周期:1+(i×17) 总的时钟周期数:(98×17)+18=1684 (2)有正常定向路径,预测分支失败。 Instruction 1 2 3 4 5 6 7 8 9 10 11 1 13 14 15 lw r1,0(r2) IF ID EX M WB addi r1,r1,#1 IF ID S EX M WB sw r1,0(r2) IF S ID EX M WB addi r2,r2,#4 IF ID EX M WB sub r4,r3,r2 IF ID EX M WB bnz r4,loop IF ID EX M WB lw r1,0(r2) IF miss miss IF ID EX M WB 第 i 次迭代(i=0..98)开始周期:1+(i×10)
总的时钟周期数:(98×10)+11=991 (3)有正常定向路径。单周期延迟分支。 addi r2r2.#4 addi rlrl.#1 sub r4. r3 r2 sw rl, -4(r2) 第i次迭代(i=0.98)开始周期:1+(i×6) 总的时钟周期数:(98×6)+10=598 Instruction lw rl, O(r2) IF ID EX M WB addi r2 r2.# IF ID EX M WB addirl.rl.#1 IF ID EX M WB sub r4.r3 r2 IF ID EX M WB bnz r4, loop IF ID EX M WB swrl, -4(r2) IF ID EX M WB Iw rl, 0(r2) IF ID EX M WB 3.13假设各种分支所占指令数地百分比如下表所示: 条件分支 20%(其中60%是成功的) 跳转和调用 5% 现有一深度为4地流水线(流水线有4段),无条件分支在第二个时钟周期结束时就被解 析出来,而条件分支要到第三个时钟周期结束时才能被解析出来。第一个流水段是完全独 立于指令类型的,即所有的指令都必须经过第一个流水段的处理。请问在没有任何结构相 关地情况下,该流水线相对于存在上述结构相关情况下地加速比是多少? 解:在不存在结构相关时,每条指令的平均执行时间是1个时钟周期,而存在上述条件相 关的情况下,并假设条件分支预测成功,那么无条件分支和成功的条件分支的等待时间都是1, 而不成功地条件分支等待时间是2个周期:所以加速比就等于存在相关的每条指令的平均执行 时间和不存在相关的每条指令的执行时间1的比值: P无条件分支= Stall 加速比=1+C=1+f×P分支 条件分支 每条指令的平均等待时间 C=f条件分支×P条件分支十f无条件分支×P无条件分支 =20%×60%×2+20%×40%×1+5%×1 =0.37 第9页共52页
第 9 页 共 52页 总的时钟周期数:(98×10)+11=991 (3)有正常定向路径。单周期延迟分支。 Loop: lw r1,0(r2) addi r2,r2,#4 addi r1,r1,#1 sub r4,r3,r2 bnz r4,loop sw r1,-4(r2) 第 i 次迭代(i =0..98)开始周期:1+(i ×6 ) 总的时钟周期数:(98×6)+10=598 Instruction 1 2 3 4 5 6 7 8 9 10 11 lw r1,0(r2) IF ID EX M WB addi r2,r2,#4 IF ID EX M WB addi r1,r1,#1 IF ID EX M WB sub r4,r3,r2 IF ID EX M WB bnz r4,loop IF ID EX M WB sw r1,-4(r2) IF ID EX M WB lw r1,0(r2) IF ID EX M WB 3.13 假设各种分支所占指令数地百分比如下表所示: 条件分支 20%(其中 60%是成功的) 跳转和调用 5% 现有一深度为 4 地流水线(流水线有 4 段),无条件分支在第二个时钟周期结束时就被解 析出来,而条件分支要到第三个时钟周期结束时才能被解析出来。第一个流水段是完全独 立于指令类型的,即所有的指令都必须经过第一个流水段的处理。请问在没有任何结构相 关地情况下,该流水线相对于存在上述结构相关情况下地加速比是多少? 解:在不存在结构相关时,每条指令的平均执行时间是 1 个时钟周期,而存在上述条件相 关的情况下,并假设条件分支预测成功,那么无条件分支和成功的条件分支的等待时间都是 1, 而不成功地条件分支等待时间是 2 个周期;所以加速比就等于存在相关的每条指令的平均执行 时间和不存在相关的每条指令的执行时间 1 的比值: 加速比 = 1+ C = 1+ f P分支 P 2stall P 1stall = = 条件分支 无条件分支 每条指令的平均等待时间: 0.37 20 60% 2 20% 40% 1 5 1 C f P f P = = % + % 条件分支 条件分支+ 无条件分支 无条件分支 + =
所以:加速比=1.37 3.14CRAY-1机器上,按照链接方式执行下述4条向量指令(括号中给出了相应功能部件的时 间),如果向量寄存器和功能部件之间数据传输需要1拍,试求此链接流水线的通过时间 是多少拍?如果向量长度为64,则需要多少拍才能得到全部结果。 Vo←存储器 (从存储器中取数:7拍) V2←Vo+V1 向量加:3拍) V2←V2<A (按(A3)左移:4拍) Vs←V3^V4 (向量逻辑乘:2拍) 解:通过时间就是每条向量指令的第一个操作数执行完毕需要的时间,也就是各功能 流水线由空到满的时间,具体过程如下图所示。要得到全部结果,在流水线充满之后,向 量中后继操作数继续以流水方式执行,直到整组向量执行完毕。 访存 向量加 左移 向量逻 T通过=(7+1)+(1+3+1)+(1+4+1)+(1+2+1)=23(拍) T共=T通过+(64-1)=23+63=86(拍) 3.15向量处理机有16个向量寄存器,其中V0~V5中分别存放有向量A、B、C、D、E、F, 向量长度均为8,向量各元素均为浮点数:处理部件采用两个单功能流水线,加法功能部 件时间为2拍,乘法功能部件时间为3拍。采用类似CRAY-1的链接技术,先计算(A B)*C,在流水线不停留的情况下,接着计算(D+E)*F (1)求此链接流水线的通过时间为多少拍?(设寄存器入、出各需1拍) (2)假如每拍时间为50ns,完成这些计算并把结果存进相应寄存器,此处理部件地实际 吞吐率为多少 MFLOPS? 解:(1)我们在这里假设A+B的中间结果放在V6中,(A+B)*C地最后结果放 在V7中,D+E地中间结果放在V8中,(D+E)的最后结果放在V9中。具体实现参 考下图 第10页共52页
第 10 页 共 52页 所以: 加速比 = 1.37 3.14 CRAY-1 机器上,按照链接方式执行下述 4 条向量指令(括号中给出了相应功能部件的时 间),如果向量寄存器和功能部件之间数据传输需要 1 拍,试求此链接流水线的通过时间 是多少拍?如果向量长度为 64,则需要多少拍才能得到全部结果。 V0←存储器 (从存储器中取数:7 拍) V2←V0+V1 (向量加:3 拍) V2←V2 < A3 (按(A3)左移:4 拍) V5←V3∧V4 (向量逻辑乘:2 拍) 解:通过时间就是每条向量指令的第一个操作数执行完毕需要的时间,也就是各功能 流水线由空到满的时间,具体过程如下图所示。要得到全部结果,在流水线充满之后,向 量中后继操作数继续以流水方式执行,直到整组向量执行完毕。 存储器 访存 向量加 左移 向量逻 辑乘 V0 V1 V2 V3 V4 V5 A3 +( -)= + = (拍) =( +)+(+ +)+(+ +)+(+ +)= (拍) 总共 通过 通过 T T 64 1 23 63 86 T 7 1 1 3 1 1 4 1 1 2 1 23 = 3.15 向量处理机有 16 个向量寄存器,其中 V0~V5 中分别存放有向量 A、B、C、D、E、F, 向量长度均为 8,向量各元素均为浮点数;处理部件采用两个单功能流水线,加法功能部 件时间为 2 拍,乘法功能部件时间为 3 拍。采用类似 CRAY-1 的链接技术,先计算(A+ B)*C,在流水线不停留的情况下,接着计算(D+E)*F。 (1)求此链接流水线的通过时间为多少拍?(设寄存器入、出各需 1 拍) (2)假如每拍时间为 50ns,完成这些计算并把结果存进相应寄存器,此处理部件地实际 吞吐率为多少 MFLOPS? 解:(1)我们在这里假设 A+B 的中间结果放在 V6 中,(A+B)*C 地最后结果放 在 V7 中,D+E 地中间结果放在 V8 中,(D+E)*F 的最后结果放在 V9 中。具体实现参 考下图: