计算机组织与系统结构习题答案_第1页
计算机组织与系统结构习题答案_第2页
计算机组织与系统结构习题答案_第3页
计算机组织与系统结构习题答案_第4页
计算机组织与系统结构习题答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、习题1. 给出以下 概 念的 解 释 说 明 。指 令 流 水 线 ( Instruction pipelining )指令吞吐 量 (Instruction throughput)结 构 冒 险 ( Structural hazard )数据冒险(Data hazard )气泡(Bubble)分支条件满足 ( Branch taken)静态分支预测 ( Static predict)延迟分支 ( Delayed branch)转发(Forwarding )流 水 段 寄 存 器 ( Pipeline register )静态多发射(Static multiple issue)超流水线 ( S

2、uperpipelining)超标量流水线( Superscalar )指 令 预 取 ( Instruction prefetch )按 序 发 射 ( in-order issue )存 储 站 ( Reservation station )指令提交单元 ( Instruction commit unit)按序完成(in-order completion )2. 简 单 回 答 下 列 问 题 。流水线深度(Pipeline Depth)流水线冒险(Hazard )控制冒险(Control hazard)流水线阻塞( Pipeline stall)空操作(nop)分 支 预 测 ( Bra

3、nch predict )动态分支预 测( Dynamic predict )分 支 延 迟 槽 ( Delayed branch slot ) 旁 路 ( Bypassing )IPC ( Instructions Per Cycle )动态多发射( Dynamic multipleissue)超长指令字VLIW动 态 流 水 线 ( Dynamic pipelining)指令分发(Instruction dispatch)无 序 发 射 ( out-of-order issue )重 排 序 缓 冲 ( Reorder buffer )乱 序 执 行 ( out-of-order exec

4、ution )无 序 完 成 ( out-of-order completion )?167 ?1) 流 水线方式下,一条指令的执行时间缩短 了还 是 加 长 了 ? 程序 的执行时间缩短了还 是加长了?为什么?2) 具有什么 特征的指令集易于实现指令流 水线 ?3) )流水线处理器中时钟周期如何确定?单 条流水 线 处 理 器 的CPI 为多少?每个时钟周 期一定有一条指令完成吗?为什么?4) 流水线处理器的控制器实现方式更类似于单周期控制器还是多周期控制器?5) 为什么要在各流水段之间加寄存器?各流水段寄存器的宽度是否都一样?为什么 ?6) 你能列出哪几种流水线被阻塞的情况?你知道硬件和软

5、件是如何处理它们的吗?7) 超流水线和多发射流水线的主要区别是什么?8) 静态多发射流水线和动态多发射流水线的主要区别是什么?9) 为 什 么 说 Pentium 4 是 “ CISC 壳 、 RISC 核 ” 的 体 系 结 构 ?3. 假 定 在一 个 五级 流 水线 ( 如 图 7.5 所 示 ) 处 理 器 中 , 各 主 要 功 能 单 元的 操 作 时 间 为 : 存 储单 元 :200ps; ALU和 加 法 器: 150ps; 寄 存 器 堆 读 口 或 写 口 : 50ps 。 请 问 :4. 1 )若 执 行 阶 段 EX 所 用 的 ALU 操 作 时 间 缩 短 20%

6、 ,则 能 否 加 快 流 水 线 执 行 速 度 ? 如 果 能的话,能加快多少?如果不能的话,为什么?5. 2 )若ALU 操作时间增加20% ,对流水线的性能有何影响?6. 3 )若ALU 操作时间增加40% ,对流水线的性能有何影响?参考答案:a. ALU 操 作 时 间 缩 短 20% 不 能 加 快 流 水 线 指 令 速 度 。因 为 存 储 单 元 的 时 间 为 200ps ,所 以 流 水 线 的 时 钟 周 期 不 会 因 为 ALU 操 作 时 间 的 缩 短 而 变 短 。b. ALU 操 作 时 间 延 长 20% 时 , 变 为 180ps , 比 200ps 小

7、 , 对 流 水 线 性 能 没 有 影 响 ;c. ALU 操 作 时 间 延 长 40% 时 ,变 为 210ps ,比 200ps 大 ,所 以 ,流 水 线 的 时 钟 周 期 将 变 为 210 , 其 效 率 降 低 了 ( 210-200)/200=5%。4. 假 定 某计 算 机 工程 师 想 设计 一个新 CPU ,一 个 典 型 程 序 的 核 心 模 块 有 一 百 万 条 指 令 ,每 条指 令 执行 时 间 为100ps。请 问:( 1) 在 非 流 水 线 处 理 器 上 执 行 该 程 序 需 要 花 多 长 时 间 ?( 2 )若 新 CPU 是 一 个 20

8、级 流 水 线 处 理 器 ,执 行 上 述 同 样 的 程 序 ,理 想 情 况 下 ,它 比 非 流 水线处理器快多少?( 3 )实 际 流 水 线 并 不 是 理 想 的 ,流 水 段 间 数 据 传 送 会 有 额 外 开 销 。这 些 开 销 是 否 会 影 响 指令 执 行 时 间 ( Instruction latency ) 和 指 令 吞 吐 率 ( Instruction throughput ) ? 参考答案:(1)非流水线处理器上执行该程序的时间为:100Ps x 10 6=100g( 2 )若在 一 个 20 级 流 水 线 的 处 理 器 上 执 行 ,理 想 情

9、况 下 ,每 个 时 钟 周 期 为 : 100/20=5ps ,所以,程序执行时间约为5 x 10 6=5的.快100/5=20倍。( 3)流水 线 段 之 间数 据 的 传 递 产 生 的 额 外 开 销 , 使 得 一 条 指 令 的 执行时间被延 长 , 即 影响Instructionlatency; 同 时 也 拉 长 了 每 个 流 水 段 的 执 行 时 间,即影响 InstructionthroughPut 。还有什么不理想的因素? 时 钟 周 期 不 会 是 5us可能发生阻塞等5. 假 定 最复 杂 的一条 指令所 用的 组 合 逻 辑分 成6块,依次为AF,其延迟分别为8

10、0ps、30ps 、60ps 、50ps 、70ps、10ps。 在 这些 组合逻辑块之间插入必 要的流水段寄存器就 可实现 相应 的 指令 流 水线, 寄 存器 延迟 为20ps。理想情况下,以下 各种方式所得到的时 钟周期 、指令吞吐率和指令执行时间各是多少?应该在哪里插入流水线寄存器?(1) 插入一个流水段寄存器,得到一个两级流水线(2) 插入两个流水段寄存器,得到一个三级流水线(3) 插入三个流水段寄存器,得到一个四级流水线(4) 吞吐量最大的流水线参考答案:(1) 两 级 流水 线的平衡点在C和D之间 , 其 前 面 一 个 流 水 段的 组 合 逻辑延 时为80+30+60=170

11、ps, 后面一个流水段的组合逻辑延 时 为 50+70+10=130ps。 这 样 每个流 水段都 以 最 长 延 时 调 整 为 170+20=190ps, 故 时 钟 周 期 为 190ps , 指 令 吞 吐 率 为1/190ps=5.26GOPS,每条指令的执行时间为2x190=380ps。( 2 )两 个 流 水 段 寄 存 器 分 别 插 在 B 和 C 、 D 和 E 之 间 ,这 样 第 一 个 流 水 段 的 组 合 逻 辑 延 时 为 80+30=110ps, 中 间 第 二 段 的 时 延 为 60+50=110ps, 最 后 一 个 段 延 时 为 70+10=80ps

12、。这 样 每 个 流 水 段 都 以最长延时调整为110+20=130ps, 故 时钟周 期 为130ps,指令吞吐率为1/130ps=7.69GOPS,每条指令的执行时 间 为 3x130=390ps。( 3 )三 个 流 水 段 寄 存 器 分 别 插 在 A 和 B 、 C 和 D 、 D 和 E 之 间 ,这 样 第 一 个 流 水 段 的 组 合 逻 辑 延 时 为 80ps,第二段时延为30+60=90ps, 第 三 段时延 为50ps ,最后一段延时为70+10=80ps。 这 样 每 个 流 水 段都 以 最 长 延 时 调 整 为 90+20=110ps,故 时钟周 期为 1

13、10ps ,指 令 吞 吐 率 为 1/110ps=9.09GOPS, 每 条 指 令 的 执 行 时 间 为 4x110=440ps。( 4) 因为 所 有 组 合 逻 辑 块中 最 长 延 时 为 80ps, 所 以 , 达 到 最大可 能吞吐 率的 划 分 应 该是 以 一 个 流 水 段 延 时 为 80ps+20ps 来 进 行 ,因 此 ,至 少 按 五 段 来 划 分 ,分 别 把 流 水 段 寄 存 器 插 在 A 和 B、 B 和 C、 C 和 D、 D 和 E 之 间 ,这 样 第 一 段 的 组 合 逻 辑 延 时 为 80ps ,第 二 段 为 30ps , 第 三 段

14、 为 60ps , 第 四 段 为 50ps , 最 后 一 段 为 70+10=80ps。 这 样 每 个 流 水 段 都 以 最长延时调整为80+20=100ps ,故时钟 周 期 为 100ps ,指 令 吞 吐 率 为 1/100ps=10GOPS ,每 条指令的执行时间 为 5x100=500ps。吞吐率的提高,单条指令执行时间的延长6. 以 下 指 令 序 列 中 ,哪 些 指 令 对 发 生 数 据 相 关 ? 假 定 采 用“ 取 指 、译 码/取 数 、执 行 、访 存 、写 回 ”五 段 流 水 线 方 式 ,那 么 不 用“ 转 发 ”技 术 的 话 ,需 要 在 发 生

15、 数 据 相 关 的 指 令 前 加 入 几 条 nop 指 令 才 能 使 这 段 程 序 避 免 数 据 冒 险 ? 如 果 采 用 “ 转 发 ” 是 否 可 以 完 全 解 决 数 据 冒 险 ? 不 行 的 话 , 需 要 在 发 生 数 据 相 关 的 指 令 前 加 入 几 条 nop 指 令 才 能 使 这 段 程 序 不 发 生数据冒险?add$s3, $s1, $s0sub$t2, $s0, $s3lw$t1, 0($t2)add $t1, $t1, $t2参考答案:发生数据相关的有:第1和2 间关于$s3、 第2 和 3间关于$t2 、 第2 和 4间关于$t2、第 3

16、和4间关于$t1 。不 进 行“ 转 发 ”处 理 的 话 ,需 要 分 别 在 第 2 、 3 、 4 条 指 令 前 加 三 条 nop 指 令 才 能 避 免 数据冒险。而 通 过 “转发”可 以 避 免1和2、2 和 3、2 和4 间 的 数据 相 关;但第3和4 间是load-use数据相关,所以无法用“转 发”消 除冒险 , 因此 ,需 在 第4条指令前加入一条 nop指令。寄存器写口和寄存器读口分别安排在一个时钟周期的前、后半个周期内独立工作呢? 2、 3、 4 条 之 前 分 别 插 入 2 条 nop 就 可 以7. 假 定 以 下 MIPS 指 令 序 列 在 图 7.18

17、 所 示 的 流 水 线 数 据 通 路 中 执 行 : addu$s3, $s1, $s0subu$t2, $s0, $s3lw$t1, 0($t2)add$t3, $t1, $t2add$t1, $s4, $s5请 问:(1) 上 述 指 令 序 列 中, 哪 些 指 令 的哪 个 寄 存器 需 要 转 发 , 转 发 到 何 处 ?( 2) 上述 指 令 序 列 中 , 是 否存 在 load-use数 据 冒 险 ?( 3) 第 5 周 期 结 束 时 , 各 指 令 执 行 状 态 是 什 么 ? 哪 些 寄 存 器 的 数 据 正 被 读 出 ? 哪 些 寄 存 器 将被写入?参考

18、答案:( 1 )发 生 数 据 相 关 的 有 :第 1 和 2 间 关 于 $s3 、第 2 和 3 间 关 于 $t2 、第 2 和 4 间 关 于 $t2 、 第3 和 4 间关 于$t1。通过“转发” 可 以 避 免 1 和2、 2 和3、2 和4间 的 数 据 相 关 ;( 2 ) 第3 和 4 间是load-use数据相关, 所 以 无 法 用 “转发 ” 消除冒险 。( 4) 第 五 个 时 钟 内 各 条 指 令 的 执 行 情 况 如 下 :指 令1 在“WB ”阶 段,控制信息等在MEM/WB.Reg中 ,$s3 正 在被写 ,结束 时 写 完指 令2 在“MEM”阶段,控

19、制信息等在EX/MEM.Reg 中。sub 指令在 该 阶段 进 行 的 是 空 操作 ;在 转 发 检 测 单 元 中 ,因 为 流 水 段 寄 存 器 Ex/Mem 中 的 目 的 寄 存 器 RegRd 为 $t2 ,流 水 段 寄 存 器 ID/Ex 中 的 源 寄 存 器 Rs 也 为 $t2 ,同 时 ,流 水 段 寄 存 器 Ex/Mem 中 的 RegWr 控 制 信 号 为 1 ,所 以 检 测 到 转 发 条 件 满 足 ,因 而 ,此 时 , sub 指 令 在 上 一 个 时 钟 周 期 中 的 执 行 结 果( 在 流 水段寄存器 Ex/Mem 中 的 ALU 输出结

20、果 )正被 回送到ALU 的 输 入 端 ; 结束 时转发完成指令3 在 “EXE ”阶 段 , ALU正在执 行“add”操作, 进行 地址 运 算 ,ALU输出结果将被写入流水段 寄 存 器 Ex/Mem 中 ; 结束 时 运 算 完 成 。控制信 息等 在ID/EX.Reg 中,正在检测是否loaduse 冒 险指 令 4 在 “ ID/REG ”阶 段 ,指 令 在 IF/ID.Reg 中 , $t1 和 $t2 正 在 被 读 出 。 在 load-use 冒 险 检测单元中,因为流水段寄存 器IF/ID中源操作数寄存器Rs为$t1,流水 段寄存器 ID/Ex中目的操作数寄存器Rt也

21、为$t1 ,同 时,因为上条指令是lw,故 流水段 寄 存器ID/Ex 中的MemRead 控 制 信 号 为 1 , 所 以 在 该 阶 段 检 测 到 load-use 冒 险 条 件 满 足 , 此 时 , 需 要 进 行 load-use 冒险处理,在流水线中插入一 个“气 泡”,将指令的执行阻塞 一个时钟周期 。包括以 下 三 个步骤: 将流水段寄存器ID/Ex中的控制信号全部清0,以保证第4条指令被阻塞一个时钟周 期执行; 将 流 水段寄存器IF/ID中的 指令维持不变,以保证 第4 条指 令重新译码后 执 行;将PC 的 值 维 持不变,以保证 根据 PC 的值重新取出第5条指

22、令。结 束时完成上述 工 作。指 令5在“IF ”阶段,指令正被 读出。 结束时已送到流水段寄存 器IF/ID的输入端。 因 为之前 发 生 了 load-use 数 据 冒 险 , 所 以 该 指 令 将 在 随 后 的 第 6 个 时 钟 周 期 内 重 新 被 读 出 。8. 假te有一个程序的指令序列为 lw, add, lw, add, 。add指令仅依赖它刖面的lw指令, 而lw指令也仅依赖它前面的add指令,寄存器写口和寄存器读口分别在一个时钟周期的前、 后半个周期内独立工作。请问:(1)在带转发的五段流水线中执行该程序,其CPI为多少?(2)在不带转发的五段流水线中执行该程序,

23、其CPI为多少?参考答案:(1 )因为lw指令和add指令之间存在一个load- use 数据冒险,所 以每个lw 指令和add指令之间要有一次流水线阻塞。而add指令和lw指令之间的数据冒险可通过 数据转发解决。即:CPI为1.5使用,转发”的情况:Time (clock cycfes)add rl,r2,r3Iw r4,0(r1) stall add r6,r4,r7Iw r8f0(r6)使用,'转发”时,只有附指令后需要一次阻塞!不使用“转发”的情况:Tim& (clock cycles)(2)如果没有转发,而寄存器写口和寄存器读口分别在一个时钟周期的前、后半个周期 内工

24、作,则在每条lw指令和add指令之间将会有两个阻塞,这样每条指令相当于都要有 三个时钟才能完成。即:CPI为3add r6,r4,r7IFID/RFMEMWB iadd rl,r2fr3stallstallIw r4,0(r1) stall stall通过寄存器与口,读口分别安排在前华/后半周期r在不使用,,转 发”时使得每条指令之间只要阻塞两次就可解决!9. 假 定 在 一 个 带 转 发 功 能 的 五 段 流 水 线 中 执 行 以 下 程 序 段 , 则 可 以 怎 样 调 整 以 下 指 令 序 列 使 其性能达到最好?参考答案:1lw$2, 100($6)2add$2, $2, $

25、33 lw $3, 200($7)4add$6, $4, $75sub$3, $4, $66lw$2, 300($8)7beq$2, $8, Loop因为采用“转发”技术,所以 ,只 要对load-use数据冒险进行 指 令序列调整。从上述指令序列来看,第1和第2 条指令、 第6 和第7 条 指 令之间存在load-use数据冒险,所以,可将与第2和第3条指令无关的第4条指 令插入 第 2条指令之前;将 无 关的第5条指令插入第7条 指 令 之 前 。 调 整 顺 序 后 的 指 令 序 列 如 下 ( 粗 体 部 分 为 变 换 了 位 置 的 指 令 )。lw $2, 100($6)add

26、$6, $4, $7add$2, $2, $3lw$3, 200($7)lw$2, 300($8)sub$3, $4, $6beq$2, $8, Loop10. 在 一 个 采 用“ 取 指 、译 码 /取 数 、执 行 、访 存 、写 回 ”的 五 段 流 水 线 中 ,若 检 测 结 果 是 否 为 “零 ”的 操 作 在 执 行 阶 段 进 行 , 则 分 支 延 迟 损 失 时 间 片 ( 即 分 支 延 迟 槽 ) 为 多 少 ? 以 下 一 段 MIPS 指 令 序 列 中 , 在 考 虑 数 据 转 发 的 情 况 下 , 哪 些 指 令 执 行 时 会 发 生 流 水 线 阻

27、塞 ? 各 需要阻塞几个时钟周期?loop:add$t1, $s3, $s3add$t1, $t1, $t1add$t1, $t1, $s6lw$t0, 0($t1)bne$t0, $s5, exitadd$s3, $s3, $s4loopexit:参考答案:若 检 测 操 作 在 执 行 阶 段 进 行 , 则 分 支 延 迟 损 失 时 间 片 ( 即 分 支 延 迟 槽 ) 为 2。分 析 :发 生 数 据 相 关 的 是 :第 1 和 第 2 条 指 令 之 间 关 于 $t1 ,第 2 和 第 3 条 指 令 之 间 关 于 $t1 , 第 3 和 第 4 条 指 令 之 间 关 于

28、 $t1 , 第 4 和 第 5 条 指 令 之 间 关 于 $t0 , 以 及 第 6 和 第 1 条 指 令 之关 于 $s3。 此 外 , 第 5 和 第 7 条 指 令 的 执 行 都 会 发 生 控 制 相 关 。对于数据冒险,如果不采用“转发”,而是简单地通过加入nop指 令 来避免冒险的话,那么应该在第2、3、 4、5 条指令 前各 加 两 条 nop 指 令 , 以 消 除 数 据 相 关 ; 对 于 第 6条 和 第 1条指令之间的 数据 相 关, 则可通 过在 第 7 条“ j loop ”指 令 后 面 加 一 条 或 两 条 nop指 令消 除 (这样同时还能解决第7条

29、“jloop” 指令的控制 冒险);此处,第2、3、4 条指令所需的 操作数可通过“转发”得到 ,无 需 加nop指令。第5条bne指令所需的操作数$t0是load-use冒险,不能用“转发”解决问 题,需要在第 5 条指令前加一条 nop 指令,或通过硬件将第5 条指令的执 行 阻 塞 一 个 时 钟 周 期 。j指令如果在译码阶段就根据译码结果计算跳转目标地址,那么j指令后面指令会被阻塞1个时钟 周 期,若在执行阶段计算, 则要阻塞2个 时 钟 周 期 。其它11. 假设数据 通路中各 主 要功 能 单元的 操 作 时 间为:存储单元: 200ps ; ALU和 加 法 器 : 100ps

30、 ;寄存器堆 读口或写 口 :50ps 。程序中 指 令 的组成比例为:取 数 25% 、 存 数10% 、 ALU52% 、分支11%、跳转2%。假 设 时钟周期 取 存 储器存取时间的一 半 , MUX 、控 制 单 元 、 PC、扩展器和传输线路等的延迟都忽略不计,则下面的实现方式中,哪个更快?快多少?(1) 单周期方式:每条指令在一个固定 长 度 的 时 钟周期 内 完 成 ;(2) 多周期方式:每类指令时钟数:取 数 -7, 存 数-6, ALU-5, 分 支 -4, 跳 转 -4;(3) 流水线 方 式:取指1 、取指2、取数/译码、执行、存取1 、存取2、写回7段流水线;没有 结

31、构冒险;数据冒险 采用“转发”技术处理;load指令与后续各指令之间存在依赖关系的概率分别1/2、1/4、1/8、;分支延迟损失时间片为2,预测准确 率为75% ;不考虑异常、中断 和访问失效引起的流水线冒 险。参考答案:单 周 期 : 存 储 器 操 作 变 为 两 个 时 钟 周 期 后 , 其 数 据 通 路 的 时 钟 周 期 不 变 , 为 600ps多 周 期 : CPI=0.25x7+0.10x6+0.52x5+0.11x4+0.02x4 = 5.47存储器操作变为两个时钟周 期 后 , 多周 期 数据 通 路 的 时 钟 周 期 为 100ps ,故一条指令的执行时间为100x5.47=547ps流 水 线 : 存储 器操 作 变为两 个时钟 周期后 ,其流 水 线包 含 了 7个 阶 段.对 于 ALU指 令, 随 后的数 据相关 指令都 可通过 转 发解 决 ,故 CPI=1对于Store指令,不会发生数据冒险,故CPI=1对于Jump指令,总要等到译码结束才能确 定 转移 地址,故CPI=3(取指1,2, 译 码 )对于beq,若预测正确,则为1个周 期, 若预测 错误 ,则为 3个周 期 , 故CPI=1/4x3+3/4x1=1.5对 于 loa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论