计算机组织与系统结构第七章习题答案
更新时间:2023-11-13 10:35:01 阅读量: 教育文库 文档下载
习题
1. 给出以下概念的解释说明。
指令流水线(Instruction pipelining) 指令吞吐量(Instruction throughput) 结构冒险(Structural hazard) 数据冒险(Data hazard) 气泡(Bubble)
流水线深度(Pipeline Depth) 流水线冒险(Hazard) 控制冒险(Control hazard) 流水线阻塞(Pipeline stall) 空操作(nop)
分支预测(Branch predict) 动态分支预测(Dynamic predict)
分支条件满足(Branch taken) 静态分支预测(Static predict) 延迟分支(Delayed branch) 转发(Forwarding)
分支延迟槽(Delayed branch slot)
旁路(Bypassing)
IPC(Instructions Per Cycle)
动态多发射(Dynamic multiple issue) 超长指令字VLIW
流水段寄存器(Pipeline register) 静态多发射(Static multiple issue) 超流水线(Superpipelining) 超标量流水线(Superscalar)
动态流水线(Dynamic pipelining) 指令分发(Instruction dispatch) 无序发射(out-of-order issue) 重排序缓冲(Reorder buffer) 乱序执行(out-of-order execution) 无序完成(out-of-order completion)
指令预取(Instruction prefetch) 按序发射(in-order issue)
存储站(Reservation station)
指令提交单元(Instruction commit unit) 按序完成(in-order completion) 2. 简单回答下列问题。
(1)流水线方式下,一条指令的执行时间缩短了还是加长了?程序的执行时间缩短了还是
加长了?为什么?
(2)具有什么特征的指令集易于实现指令流水线?
(3)流水线处理器中时钟周期如何确定?单条流水线处理器的CPI为多少?每个时钟周期
一定有一条指令完成吗?为什么?
(4)流水线处理器的控制器实现方式更类似于单周期控制器还是多周期控制器? (5)为什么要在各流水段之间加寄存器?各流水段寄存器的宽度是否都一样?为什么? (6)你能列出哪几种流水线被阻塞的情况?你知道硬件和软件是如何处理它们的吗? (7)超流水线和多发射流水线的主要区别是什么?
(8)静态多发射流水线和动态多发射流水线的主要区别是什么? (9)为什么说Pentium 4是“CISC壳、RISC核”的体系结构?
? 156 ?
3. 假定在一个五级流水线(如图7.5所示)处理器中,各主要功能单元的操作时间为:存储
单元:200ps;ALU和加法器:150ps;寄存器堆读口或写口:50ps。请问:
(1)若执行阶段EX所用的ALU操作时间缩短20%,则能否加快流水线执行速度?如果能的话,能加快多少?如果不能的话,为什么?
(2)若ALU操作时间增加20%,对流水线的性能有何影响? (3)若ALU操作时间增加40%,对流水线的性能有何影响? 参考答案:
a. ALU操作时间缩短20%不能加快流水线指令速度。因为存储单元的时间为200ps,所以流水线的时钟周期不会因为ALU操作时间的缩短而变短。
b. ALU操作时间延长20%时,变为180ps,比200ps小,对流水线性能没有影响; c. ALU操作时间延长40%时,变为210ps,比200ps大,所以,流水线的时钟周期将变为210,其效率降低了(210-200)/200=5%。
4. 假定某计算机工程师想设计一个新CPU,一个典型程序的核心模块有一百万条指令,每条
指令执行时间为100ps。请问:
(1)在非流水线处理器上执行该程序需要花多长时间?
(2)若新CPU是一个20级流水线处理器,执行上述同样的程序,理想情况下,它比非流
水线处理器快多少?
(3)实际流水线并不是理想的,流水段间数据传送会有额外开销。这些开销是否会影响指
令执行时间(Instruction latency)和指令吞吐率(Instruction throughput)? 参考答案:
(1)非流水线处理器上执行该程序的时间为:100ps x 106=100μs.
(2)若在一个20级流水线的处理器上执行,理想情况下,每个时钟周期为:100/20=5ps,
所以,程序执行时间约为5 x 106=5μs. 快100/5=20倍。
(3)流水线段之间数据的传递产生的额外开销,使得一条指令的执行时间被延长,即影
响 Instruction latency;同时也拉长了每个流水段的执行时间,即影响 Instruction throughput。 还有什么不理想的因素? ——时钟周期不会是5us ——可能发生阻塞等
? 157 ?
5. 假定最复杂的一条指令所用的组合逻辑分成6块,依次为A~F,其延迟分别为80ps、30ps、
60ps、50ps、70ps、10ps。在这些组合逻辑块之间插入必要的流水段寄存器就可实现相应的指令流水线,寄存器延迟为20ps。理想情况下,以下各种方式所得到的时钟周期、指令吞吐率和指令执行时间各是多少?应该在哪里插入流水线寄存器? (1)插入一个流水段寄存器,得到一个两级流水线 (2)插入两个流水段寄存器,得到一个三级流水线 (3)插入三个流水段寄存器,得到一个四级流水线 (4)吞吐量最大的流水线 参考答案:
(1)两级流水线的平衡点在C和D之间,其前面一个流水段的组合逻辑延时为80+30+60=170ps,后面一个流水段的组合逻辑延时为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。这样每个流水段都以最长延时调整为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,故时钟周期为110ps,指令吞吐率为1/110ps=9.09GOPS,每条指令的执行时间为4x110=440ps。
(4)因为所有组合逻辑块中最长延时为80ps,所以,达到最大可能吞吐率的划分应该是以一个流水段延时为80ps+20ps来进行,因此,至少按五段来划分,分别把流水段寄存器插在A和B、B和C、C和D、D和E之间,这样第一段的组合逻辑延时为80ps,第二段为30ps,第三段为60ps,第四段为50ps,最后一段为70+10=80ps。这样每个流水段都以最长延时调整为80+20=100ps,故时钟周期为100ps,指令吞吐率为1/100ps=10GOPS,每条指令的执行时间为5x100=500ps。
——吞吐率的提高,单条指令执行时间的延长
? 158 ?
6. 以下指令序列中,哪些指令对发生数据相关?假定采用“取指、译码/取数、执行、访存、
写回”五段流水线方式,那么不用“转发”技术的话,需要在发生数据相关的指令前加入几条nop指令才能使这段程序避免数据冒险?如果采用“转发”是否可以完全解决数据冒险?不行的话,需要在发生数据相关的指令前加入几条nop指令才能使这段程序不发生数据冒险?
add $s3, $s1, $s0 sub $t2, $s0, $s3 lw $t1, 0($t2) add $t1, $t1, $t2
参考答案:
发生数据相关的有:第1和2间关于$s3、第2和3间关于$t2、第2和4间关于$t2、第3和4间关于$t1。
不进行“转发”处理的话,需要分别在第2、3、4条指令前加三条nop指令才能避免数据冒险。而通过“转发”可以避免1和2、2和3、2和4间的数据相关;但第3和4间是load-use数据相关,所以无法用“转发”消除冒险,因此,需在第4条指令前加入一条nop指令。
寄存器写口和寄存器读口分别安排在一个时钟周期的前、后半个周期内独立工作呢? ——2、3、4条之前分别插入2条nop就可以
? 159 ?
7. 假定以下MIPS指令序列在图7.18所示的流水线数据通路中执行:
addu
subu add
$s3, $s1, $s0 $t2, $s0, $s3 $t3, $t1, $t2
lw $t1, 0($t2) add $t1, $s4, $s5
请问:(1)上述指令序列中,哪些指令的哪个寄存器需要转发,转发到何处? (2)上述指令序列中,是否存在load-use数据冒险?
(3)第5周期结束时,各指令执行状态是什么?哪些寄存器的数据正被读出?哪些寄存器
将被写入? 参考答案:
(1)发生数据相关的有:第1和2间关于$s3、第2和3间关于$t2、第2和4间关于$t2、
第3和4间关于$t1。通过“转发”可以避免1和2、2和3、2和4间的数据相关; (2)第3和4间是load-use数据相关,所以无法用“转发”消除冒险。 (3)第五个时钟内各条指令的执行情况如下:
指令1在“WB”阶段,控制信息等在MEM/WB.Reg中,$s3正在被写,结束时写完 指令2在“MEM”阶段,控制信息等在EX/MEM.Reg中。sub指令在该阶段进行的是空操作;在转发检测单元中,因为流水段寄存器Ex/Mem中的目的寄存器RegRd为$t2,流水段寄存器ID/Ex中的源寄存器Rs也为$t2,同时,流水段寄存器Ex/Mem中的RegWr控制信号为1,所以检测到转发条件满足,因而,此时,sub指令在上一个时钟周期中的执行结果(在流水段寄存器Ex/Mem中的ALU输出结果)正被回送到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也为$t1,同时,因为上条指令是lw,故流水段寄存器ID/Ex中的MemRead控制信号为1,所以在该阶段检测到load-use冒险条件满足,此时,需要进行load-use冒险处理,在流水线中插入一个“气泡”,将指令的执行阻塞一个时钟周期。包括以下三个步骤:① 将流水段寄存器ID/Ex中的控制信号全部清0,以保证第4条指令被阻塞一个时钟周期执行;② 将流水段寄存器IF/ID中的指令维持不变,以保证第4条指令重新译码后执行;③ 将PC的值维持不变,以保证根据PC的值重新取出第5条指令。结束时完成上述工作。
指令5在“IF”阶段,指令正被读出。结束时已送到流水段寄存器IF/ID的输入端。因为之前发生了load-use数据冒险,所以该指令将在随后的第6个时钟周期内重新被读出。
? 160 ?
正在阅读:
计算机组织与系统结构第七章习题答案11-13
hibernate与struts、spring三大框架整合中web-xml的使用介绍06-05
2016职代会工作报告3篇06-30
幼儿园感恩活动方案08-21
SAP PM模块前台操作详解(S4系统)04-12
人教版 - 五年级 - 语文上册 - 配套练习册 - 参考答案11-07
提纲格式02-19
成都学院成都大学兼职辅导员管理办法试行03-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 第七章
- 习题
- 答案
- 结构
- 组织
- 计算机
- 系统
- 加强人文关怀与心理疏导研究
- 福建省2017年上半年混凝土工:施工前的技术交底考试试卷
- 全国电力行业优秀QC小组等名单
- 《伤仲永》教学设计(精品公开课)
- 2018-2019年廊坊市霸州市胜芳镇第五小学一年级上册数学模拟月考无答案
- 暨南大学普生2006-2010真题
- 鸡尾酒调制及酒吧经营期末考查题
- 计算机组成原理 复习题及答案
- 案例3 李宁公司
- 07-04-1-人员不安全行为辨识和控制措施表
- 包神铁路公司《行车设备检查(施工)登记簿》登销记管理办法 - 图文
- 汽车理论知识点 - 图文
- 东财《国际投资法》在线作业二
- 高等流体力学作业参考答案-20121215
- 金梅路、江汽大道改建工程老路检测报告 - 图文
- 《德鲁克管理思想精要》读书笔记
- 定语从句教案
- “十三五”重点项目-气压给水设备项目可行性研究报告 - 图文
- 以人为本关爱员工
- 二年级少队工作计划