实验作业3:DLX流水线实验报告.doc
文本预览下载声明
计算机体系结构
实验作业3:DLX流水线实验报告
姓名:
学号:
班级:
班号:
《计算机系统结构》第三次实验作业
一、实验目的
本次实验的主要目的是熟悉DLX流水线以及结构相关、数据相关、控制相关、前送(forwarding)等概念和技术。
二、实验内容
1. 了解各种指令在DLX流水线中的运行过程;
2. 流水线相关实验;
3. 前送(forwarding)技术对流水线性能的影响;
4. 考察改变部件数量和延迟数对性能的影响。
三、实验步骤及结果分析
1. 了解各种指令在DLX流水线中的运行过程
如上次实验那样,读入并运行fact.s和input.s。请从程序中选择有代表性的5条不同类型的指令,并描述每条指令在5段流水线中每步完成的工作。
(1)
(2)
(3)
(4)
(5)
2. 流水线相关实验
在流水线窗口中观察,分别找出结构相关、数据相关、控制相关各一种,并描述冒险情况以及这些冒险在winDLX是如何解决的。
结构相关
在执行subd f0,f0,f4和j fact.Loop期间由于ALU被占用硬件资源无法满足j fact.Loop进入EX阶段,发生结构相关的冒险。winDLX中通过阻塞EX 1个周期来解决此问题。
数据相关
bnez r5,input.Finish需要使用seqi的计算结果r5,所以产生数据相关的冒险。WindDLX通过阻塞解决问题。
控制相关
语句lw r2,SaveR2(r0)被aborted,这是控制相关的冒险造成的。因为前一条语句j input.Loop是跳转语句,而指定到EX阶段语句被解码后在能知道其作用,所以已经取指令的lw语句被取消。
前送(forwarding)技术对流水线性能的影响
(1)开启forwarding:
没有开启forwarding:
lbur r3,0x0(r2) …… ①
seqi r5,r3,0xa …… ②
对比在开启和关闭forwarding的情况下以上两条语句的执行,由于语句2需要使用语句1计算的结果r3作为输入,产生数据冒险。在没有forwarding时语句2的IF阶段需要阻塞2个周期,即等待语句1完成EX,后才可继续执行。当开启forwarding后语句2的IF与语句1的ID并行执行,语句2的ID受冒险影响阻塞1个周期,并在EX阶段得到前送数据,继续执行。从整体上看,开启forwarding后使阻塞周期减少了1个,提高了性能。
(2)
开启forwarding:
没有开启forwarding:
movi2fp f11,r2 …… ①
cvti2d f2,f11 …… ②
对比在开启和关闭forwarding的情况下以上两条语句的执行,由于语句2需要使用语句1计算的结果f11作为输入。在没有forwarding时语句2的IF阶段需要阻塞8个周期,即等待语句1完成后,才可继续执行。当开启forwarding后语句2的IF与语句1的ID并行执行,从整体上看,开启forwarding后使阻塞周期减少了8个,提高了性能。
4. 考察改变部件数量和延迟数对性能的影响
通过configuration(floating point stages可施加各种改变。该实验由你自己设计实验计划,得出结果和结论。
使用默认设置:
增加加法单元数量
增加加法单元的延时:
通过测试可以发现,增加加法单元并没有明显改变性能情况,但是增加延时使得总周期数和阻塞周期发生明显变换。
四、实验总结
通过此次实验,我学习了计算机体系结构的流水线操作。winDLX有了进一步了解。熟悉了DLX流水线以及结构相关、数据相关、控制相关、前送(forwarding)等概念和技术。
显示全部