计算机体系结构张晨曦版本第四章解答-new_第1页
计算机体系结构张晨曦版本第四章解答-new_第2页
计算机体系结构张晨曦版本第四章解答-new_第3页
计算机体系结构张晨曦版本第四章解答-new_第4页
计算机体系结构张晨曦版本第四章解答-new_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 习题四4.1 解释下列术语:指令级并行:指令序列中存在的潜在的并行性称为指令级并行。指令调度:指令调度是一种用以避免冲突的方法,但并不改变相关。通过改变指令在程序中的位置,将相关指令间的距离加大到不小于指令执行延迟的时钟数,以此消除相关指令造成的流水线冲突。指令的动态调度:在程序执行过程中,依靠专门的硬件对代码进行调度,重新安排指令的执行顺序,来调整相关指令实际执行时的关系,减少可能的冲突。指令的静态调度:在程序的编译期间,由编译器进行代码调度和优化,重新安排指令的执行顺序,把相关的指令拉开距离,以减少可能产生的冲突。保留站:在Tomasulo算法实现结构中,保留站设置在运算部件的入口

2、,每个保留站中保存一条已经流出并等待到本功能部件执行的指令的相关信息,包括操作码、 操作数以及用于检测和解决冲突的信息。在一条指令流出到保留站的时候, 如果该指令的操作数已经在寄存器中就绪,则将之取到该保留站中。如果操作数还没有计算出来,则在该保留站中记录将产生这个操作数的保留站的标识。CDB:公共数据总线,是Tomasulo算法实现结构中的一条重要的数据通路,所有功能部件的计算结果都要送到CDB 上,由它把这些结果直接送到各个需要该结果的地方。动态分支预测技术:用硬件动态地进行分支处理的方法。这些方法是在程序运行时, 根据分支指令过去的表现来预测其将来的行为。如果分支行为发生了变化, 预测结

3、果也随之改变。其目的有两个:预测分支是否成功和尽快找到分支目标地址(或指令),从而避免控制相关造成流水线停顿。BHT : 分支历史表,也称之为分支预测缓冲器,用来记录分支指令最近一次或几次的执行情况(成功或不成功),并根据此进行预测。分支目标缓冲:将分支成功的分支指令的地址和它的分支目标地址都放到一个缓冲区中保存起来,缓冲区以分支指令的地址作为标识,取指令阶段,所有指令地址都与保存的标示作比较,一旦相同,就认为本指令是分支指令,且认为它转移成功,并且它的分支目标地址就是保存在缓冲区的分支目标地址。前瞻执行:基于硬件的前瞻执行结合了以下三种思想:(1)动态分支预测。用来选择后续执行的指令。(2)

4、在控制相关的结果尚未出来之前,前瞻地执行后续指令。(3)用动态调度方法对基本块的各种组合进行跨基本块的调度。ROB:再定序缓冲,前瞻执行允许指令乱序执行,但要求按程序顺序确认, 为此设置ROB,用以保存指令执行完毕到指令得到确认间的所有指令及其结果。超标量:超标量处理机的典型结构是有多个操作部件,每个时钟周期流出的指令数不定,但有上限。可通过多个独立的操作部件实现多指令的并行,使 CPI 的值小于1。超流水:将流水段进一步化,在一个时钟周期内能够分时流出多条指令, 使 CPI的值小于1。超长指令字:这种指令字很长,被分割成多个字段,每个字段称为一个指令 槽,直接独立控制一个功能部件。每个时钟周

5、期流出的指令数是固定的, 它们构 成一条长指令,或说是一个混合指令包,只能通过编译静态调度。循环展开:通过多次复制循环体并改变结束条件来相对增加有效操作时间, 用于指令调度的一种方式。4.2 简述Tomasulo算法的基本思想。(1)记录和检测指令相关,操作数一旦就绪就立即执行,把发生 RAW冲 突的可能性减少到最小;(2)通过寄存器换名来消除 WAR和WAW冲突。4.3 根据需要展开下面的循环并进行指令调度,直到没有任何延迟。指令的延迟 如表4.3。表4.3本章使用的浮点流水线的延迟浮点计算另外的浮点计算3浮点计算浮点存操作(SD)2浮点取操作(LD)浮点计算1浮点取操作(LD)浮点存操作(

6、SD)0LOOP:L.DF0, 0(R1)(一次空转)MULT.DF0, F0, F2L.DF4, 0(R2)(二次空转)ADD.DF0, F0, F4(二次空转)S.D0(R2), F0DSUBIR1, R1, #8DSUBIR2, R2, #8BNEQZR1, LOOP(一次空转)循环展开三次:LOOP:LDF0,0(R1)LDF3,-8(R1)LDF6,-16(R1)MULTDF0,F0, F2MULTDF3,F3, F2MULTDF6,F6, F2LDF4,0(R2)LDF5,-8(R2)LDF7,-16(R2)ADDDF0,F0, F4ADDDF3,F3, F5ADDDF6,F6,

7、F7SD0(R2),F0SD-8(R2),F3SD-16(R2)F6SUBIR1,R1,#24BNEQZR1,LOOPSUBIR2,R2,#24展开二次也可。4.4 假设有一个长流水线,仅仅对条件转移指令使用分支目标缓冲。假设分支预测错误的开销为4 个时钟周期,缓冲不命中的开销为3 个时钟周期。假设:命中率为 90%,预测精度为90%,分支频率为15%,没有分支的基本CPI 为 1。( 1) 求程序执行的CPI( 2) 相对于采用固定的2 个时钟周期延迟的分支处理,哪种方法程序执行速度更快?解答:(1) CPI=1+命中率 预测错误率4+不命中率3分支频率=1+0.9 0.1 4+0.1 3

8、0.15=1+0.36+0.3 0.15=1+0.66 0.15=1.099(2) 采用固定2 时钟延迟CPI=1+15% 2=1.3由 CPI 比较可知前一种方式更快4.5 假设分支目标缓冲的命中率为90%, 程序中无条件转移指令的比例为5%,没有无条件转移指令的程序CPI 值为1。假设分支目标缓冲中包含分支目标指令,允许无条件转移指令进入分支目标缓冲,则程序的CPI 值为多少?解答: CPI=1+5% (1-90%) 3=1.00154 6 下面一段MIPS 汇编程序是计算高斯消去法中的关键一步,用于完成下面公式的计算:Y=a X +Y其浮点指令延迟如表4.3所示, 整数指令均为1 个时钟

9、周期完成,浮点和整数部件均为流水。整数操作之间以及与其他所有浮点操作之间的延迟为0, 转移指令的延迟为0。 X 中的最后一个元素存放在存储器中的地址为DONE 。FOO:L.DF2 ,0(R1)MULT.DF4 ,F2 ,F0L.DF6 ,0(R2)ADD.DF6 ,F4 ,F6S.D0(R2),F6DADDIUR1 ,R1,#8DSUBIUR3 ,R1 , DONEBEQZR3 ,FOO(1)对于标准的MIPS单流水线,上述循环计算一个 Y值需要多少时间?其中有 多少空转周期?(2) 对于标准的MIPS单流水线,将上述循环顺序展开4次,不进行任何指令调度,计算一个Y 值需要多少时间?加速比是

10、多少?其加速是如何获得的?(3) 对于标准的MIPS单流水线,将上述循环顺序展开4次,优化和调度指令,使循环处理时间达到最优,计算一个Y 值平均需要多少时间,加速比是多少?解答: ( 1)易知循环计算一个Y 值需要 15 个时钟周期,其中有6 个空转周期。FOO: L.D(一次空转)MULT.DL.D(二次空转)ADD.D(二次空转)S.DDADDIU DADDIUDSUBIU BEQZ (一次空转)( 2)FOO: L.D(一次空转)MULT.DL.D(二次空转)F2 ,0(R1)F4 ,F2 ,F0F6 ,0(R2)F6 ,F4 ,F60(R2), F6R1 ,R1,#8R2 ,R2,#8

11、R3 , R1 , DONER3 ,FOOF2 ,0(R1)F4 ,F2 ,F0F6 ,0(R2)F6 ,F4 ,F6; load Xi; mutliply a* Xi; load Yi; add a* Xi+ Yi; store Yi;increment X index; increment Y index; test if done; loop if not done; load Xi; mutliply a* Xi; load Yi; add a* Xi+ YiADD.D(二次空转)S.D0(R2),F6; store YiDADDIUR1 ,R1,#8;increment X inde

12、xDADDIUR2 ,R2,#8; increment Y indexDSUBIUR3 ,R1 , DONE; test if doneBEQZR3 ,FOO; loop if not done(一次空转)FOO: L.DF2 ,8(R1); load Xi(一次空转)MULT.DF4 ,F2 , F0; mutliply a* XiL.DF6 ,8(R2); load Yi(二次空转)ADD.DF6 ,F4 , F6; add a* Xi+ Yi(二次空转)S.D8(R2),F6; store YiDADDIUR1 ,R1,#8;increment X indexDADDIUR2 ,R2,#

13、8; increment Y indexDSUBIUR3 ,R1 , DONE; test if doneBEQZR3 ,FOO; loop if not done(一次空转)FOO: L.DF2 ,16(R1); load Xi(一次空转)MULT.DF4 ,F2 , F0; mutliply a* XiL.DF6 ,16(R2); load Yi(二次空转)ADD.DF6 ,F4 , F6; add a* Xi+ Yi(二次空转)S.D16(R2),F6; store YiDADDIUR1 ,R1,#8;increment X indexDADDIUR2 ,R2,#8; increment

14、 Y indexLDF110(R2)DSUBIUR3 ,R1 ,DONE; test if doneBEQZ(一次空转)R3 ,FOO; loop if not doneFOO: L.D(一次空转)F2 ,24(R1); load XiMULT.DF4 ,F2 ,F0; mutliply a* XiL.D(二次空转)F6 ,24(R2); load YiADD.D(二次空转)F6 ,F4 ,F6; add a* Xi+ YiS.D24(R2),F6; store YiDADDIUR1 ,R1,#32;increment X indexDADDIUR2 ,R2,#32; increment Y indexDSUBIUR3 ,R1 ,DONE; test if doneBEQZR3 ,FOO; loop if not done(一次空转)计算一个Y 值平均需要:45/4=11.25个时钟周期加速比:15/11.25=1.33通过循环展开使得指令减少、分支减少。3)FOO: LDLDLDLDMULTDMULTDMULTDMULTDF2 ,0(R1)F1,0(R1)F7,0(R1)F8,0(R1)F4 , F2 , F0F3,F1, F0F

温馨提示

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

评论

0/150

提交评论