《计算机系统结构实验报告要点》由会员分享,可在线阅读,更多相关《计算机系统结构实验报告要点(19页珍藏版)》请在金锄头文库上搜索。
1、精选优质文档-倾情为你奉上实验一 流水线相关一. 实验目的1. 熟练掌握WinDLX 模拟器的操作和使用,熟悉DLX 指令集结构及其特点;2. 加深对计算机流水线基本概念的理解;3. 进一步了解DLX 基本流水线各段的功能以及基本操作;4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU 性能的影响;5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。二. 实验内容1. 用WinDLX 模拟器执行下列三个程序(任选一个):l 求阶乘程序fact.sl 求最大公倍数程序gcm.sl 求素数程序prim.s 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线
2、中的执行情况,观察CPU 中寄存器和存储器的内容。熟练掌握WinDLX 的操作和使用。 注意:fact.s 中调用了input.s 中的输入子程序。load 程序时,要两个程序一起装入(都select 后再点击load)。gcm.s 也是如此。2. 用WinDLX 运行程序structure_d.s,通过模拟:l 找出存在结构相关的指令对以及导致结构相关的部件;l 记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;l 论述结构相关对CPU 性能的影响,讨论解决结构相关的方法。3. 在不采用定向技术的情况下(去掉Configuration 菜单中Enable Forw
3、arding 选项前的勾选符),用WinDLX 运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。4. 在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX 再次运行程序data_d.s。重复上述3 中的工作,并计算采用定向技术后性能提高的倍数。三实验过程和截图1.模拟执行fact.s和input.s流水线的状态如下:在执行求阶乘程序fact.s之后,输入值5,查看寄存器的值为120,结果正确。2. 执行程序structure_d.s之后的实验数据如下图:由实验数据显示:(1) 该程序没有
4、结构相关;(2) 该程序总共暂停的时钟周期数为:108个时钟周期,暂停的时钟周期数占总的时钟周期数的百分比为3. 不采用定向技术,运行data_d.s程序,实验数据如下图:由实验数据显示:(1) 由数据相关引起的暂停的时钟周期数为:104(2) 程序执行的总的时钟周期数为:202(3) 暂停的时钟周期数占总的时钟周期数的百分比:4. 采用定向技术执行程序data_d.s,实验数据如下图:由实验数据显示:(1) 程序由于数据相关引起的暂停的时候周期数为:30;(2) 程序执行的总的时钟周期数为:128;(3) 暂停的时钟周期数占总的时钟周期数的百分比为:30/128=23.44%(4) CPU性
5、能提高的倍数:202/128=1.58。四 实验体会本次实验是计算机系统结构该课程的第一次实验,刚刚开始的时候由于不会使用WINDLX软件,所以导致得到了一些错误的实验数据,但是后来在老师和同学的帮助下渐渐的熟悉了该软件对于实验的作用,也学会了如何运用该软件来观察程序在流水线的状态下的执行,我们可以看到实验的真实数据,流水线的时空图等等,这让我们对流水线的的认识更加深刻。实验二 循环展开及指令调度一实验目的1. 加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;2. 熟悉用指令调度技术来解决流水线中的数据相关的方法;3. 了解循环展开、指令调度等技术对CPU 性能的改进。
6、二实验内容1用指令调度技术解决流水线中的结构相关与数据相关(1) 用DLX 汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:加法乘法除法部件各有2 个,延迟时间都是3 个时钟周期)(2) 通过Configuration 菜单中的 “Floating point stages” 选项,把加法乘法除法部件的个数设置为2 个,把延迟都设置为3 个时钟周期;(3) 用WinDLX 运行程序。记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;(4) 采用指令调度技术对程序进行指令调度,消除相关;(5) 用WinDLX 运行调度后的程序,观察程序在流水
7、线中的执行情况,记录程序执行的总时钟周期数;(6) 根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU 性能的意义。2. 用循环展开、寄存器换名以及指令调度提高性能(1) 用DLX 汇编语言编写代码文件*.s,程序中包含一个循环次数为4 的整数倍的简单循环;(2) 用WinDLX 运行该程序。记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;(3) 将循环展开3 次,将4 个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度;(4) 用WinDLX 运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期
8、数;(5) 根据记录结果,比较循环展开、指令调度前后的性能。三实验过程和截图1.(1)用DLX汇编语言写的代码如下:Main: addf f1,f2,f3;addf f3,f2,f1;addf f5,f6,f5;addf f4,f6,f4;multf f8,f7,f6;multf f11,f10,f9;Finish:trap 0;(2) 用WinDLX运行程序,实验数据如下图:由实验数据显示:(1) 数据相关发生次数:2(2) 结构相关发生次数:1(3) 程序执行的总的时钟周期数:16(3)采用指令调度技术实验数据如下图:进行指令调度之后的指令代码:main: addf f1,f2,f3;ad
9、df f5,f6,f5;multf f8,f7,f6;addf f4,f6,f4;multf f11,f10,f9;addf f3,f2,f1; Finish: trap 0由实验数据显示:(1) 消除了数据相关,使数据相关的次数为0;(2) 消除了结构相关,使结构相关的次数为0;(3) 程序执行的总的时钟周期数为13;(4) CPU性能提升:16/13=1.23倍;2. 用循环展开、寄存器换名以及指令调度提高性能(1) 使用DLX汇编语言写的循环指令代码:main:addi r2,r0,#0addi r1,r0,#8 loop:addi r2,r2,#1addi r1,r1,#-1bnez
10、r1,loopFinish: trap 0(2) 用WinDLX执行程序,实验数据如下图:由实验数据显示:(1) 数据相关发生的次数:8;(2) 结构相关发生的次数:0;(3) 程序执行的总的时钟周期数:46;(3)采用循环展开技术,将指令展开七次,代码如下:main:addi r2,r0,#0addi r1,r0,#8 ;loop:addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,
11、#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1addi r2,r2,#1addi r1,r1,#-1;bnez r1,loopFinish: trap 0用WinDLX执行该程序,实验数据如下:由实验数据显示:(1) 数据相关次数:0(2) 结构相关次数:0(3) 程序执行的总的时钟周期数:23(4) CPU性能提高了1倍四实验体会 该实验的目的是让我们加深对指令调度和循环展开技术的了解,在大多数指令中会涉及到循环指令,循环指令中存在着数据相关、结构相关和控制相关等等,这些相关的存在都影响着CPU的性能,要想得到更高的效率,所
12、以我们需要减少这些相关的次数,甚至消除这些相关。循环展开和指令调度就是消除这些相关来提高CPU性能的技术,由实验可以看出,指令调度和循环展开对于相关的减少和性能的提高具有显著的作用。 实验三 记分牌算法和Tomasulo 算法一实验目的1. 掌握DLXview 模拟器的使用方法;2. 进一步理解指令动态调度的基本思想,了解指令动态调度的基本过程与方法;3. 理解记分牌算法和Tomasulo 算法的基本思想,了解它们的基本结构、运行过程;4. 比较分析基本流水线与记分牌算法和Tomasulo 算法的性能及优缺点。二实验内容1. 用DLX 汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控
13、制相关以及结构相关),以及相关的初始化寄存器文件*.i 和数据文件*.d;2. 观察程序中出现的数据相关、控制相关、结构相关,并指出三种相关的指令组合;3. 将自己编写的程序*.s、*.i、*.d 装载到DLXview 模拟器上,(1) 分别用基本流水线、记分牌算法和Tomasulo 算法模拟,针对每一种模拟做如下分析: 统计程序的执行周期数和流水线中的暂停时钟周期数; 改变功能部件数目重新模拟,观察并记录性能的改变; 改变功能部件延迟重新模拟,观察并记录性能的改变;论述功能部件数目、功能部件延迟对性能的影响。(2) 记录运行记分牌算法时的功能部件状态表和指令状态表;(3) 记录运行Tomasulo 算法时的指令状态表和保留站信息;三 实验过程和截图1. 用DLX汇编语言编写的代码如下:addr4, r0, r0addr5, r0, r0addir1, r0, 5LOOP:subir1, r1, 1multff4,f4,f4multff5,f5,f5multff6,f6,f6multff7,f7,f7addir4