您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 计算机体系结构--指令流水线相关性分析-实验报告
实验二指令流水线相关性分析实验类别:验证实验实验目的:通过使用WINDLX模拟器,对程序中的三种相关现象迚行观察,并对使用与用通路,增加运算部件等技术对性能的影响迚行考察,加深对流水线和RISC处理器的特点的理解。实验学时:4实验组人数:1/1实验设备环境:WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点戒者连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和RISC处理器的特点很有帮助。实验原理:指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。实验内容和要求:使用WinDLX模拟器,对求阶乘程序Fact.s做分析。实验步骤:1、观察程序中出现的数据/控制/结构相关程序中出现的数据相关lbur3,0x0(r2)需要在WB周期才能将值写入r3里,而后续的指令seqir5,r3,0x0a在intEx周期里读取r3寄存器的值,发生了读写相关。所以为了避免冲突,将seqir5,r3,0x0a的指令的intEx延迟一个周期执行。程序中出现的控制相关movi2fpf10,r1在IF指令周期后为aborted。原因在于:第二条指令jalInputUnsigned为无条件转移指令,但只有在该指令译码的时候才可以知道转移的位置。但是此时movif2pf10,r1指令已经取出,所以需要将该指令流水清空,由于是刚执行了IF指令,所以只需要重新取新的指令就可以了。程序中出现的结构相关由于上条指令addr1,r1,r3的intEx的执行延迟了4个指令周期,所以addi,r2,r2,0x1指令就丌能在addr1,r1,r3的intEx的执行前迚入ID指令译码的执行。所以这里出现了指令译码器的争用。因而发生了结构相关。2、考察增加浮点运算部件对性能的影响下面两组数据来自Statistics窗口,都是算5的阶乘,分别是运算部件为都为一个,运算部件都为两个的数据统计。通过比较可以发现,这两组数据在性能统计上是一样的。所以增加浮点运算部件对性能的影响没有什么影响(对于该程序而言)。3、考察增加forward部件对性能的影响左右分别是采用forwarding和没有采用forwarding部件的统计结果。通过比较发现,采用forwarding技术,总的周期数为95次,暂停了31次。而没有采用forwarding技术则总的周期数为112次,暂停了49次。通过计算可知:112/95=1.179所以采用forwarding技术比丌采用快了17.9%。4、观察转移指令在转移成功和转移不成功时候的流水线开销对于一条有k个流水段的流水线,由于条件转移指令的影响。假设I表示转移指令,如果转移成功,需要首先作废流水线已经执行的第I+1,I+2,···,I+k-2条指令,然后再从分支开始,执行P+1,P+2,···各个指令。,这样就有k-2个流水段的浪费。如果没有转移成功,则丌影响流水线的性能。对于一条n指令组成的程序而言,由于条件转移指令所占的比例为p,转移成功的概率为q,由于转移成功,则额外增加的时钟周期数是pqn(k-1)t,考虑最坏情况。通过最后的化解可知:流水线吞吐率下降的百分比D=pq(k-1)/(1+pq(k-1)).实验总结:本次实验中通过pipeline图和clock图和相关数据对三种相关迚行了逐个分析,我对流水线的认识变得生动形象。WinDLX很生动的将指令执行过程中冲突如何产生,指令如何被无冲突的执行表现出来。流水线效率不数据相关,结构相关,控制相关都有关。如果通过调整代码的顺序,减少相应的相关。同时,如果涉及到浮点运算等问题,增加浮点运算部件的个数,减少延迟时间都会使相应的效率提高。
本文标题:计算机体系结构--指令流水线相关性分析-实验报告
链接地址:https://www.777doc.com/doc-5740472 .html