实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一熟悉WinDLX的使用
实验目的:
通过本实验,熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。
实验内容:
1. 参考《WinDLX 教程》,熟悉掌握WinDLX的配置和使用,掌握“Register”,
“Code”,“Pipeline”,“Clock Cycle Diagram”,“Statistics”和“Breakpoints”
等窗口的特性和用法。
2. 用WinDLX模拟器执行求阶乘程序fact.s。
这个程序说明浮点指令的使用。该程序从标准输入端读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
3. 查阅资料,熟悉理解DLX指令,画出各程序的流程图。
实验结果如图所示:
实验二结构相关
实验目的:
(1)了加深对计算机流水线基本概念的理解。
(2)理解DLX结构如何用5段流水线来实现,理解各段的功能和基本操作。
(3)加深对结构相关的理解,了解结构相关对CPU性能的影响
实验内容和步骤:
1.理解预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌
握各流水寄存器的含义(查看WinDLX软件中的help)。(用鼠标双击各段,可以看到各流水寄存器的内容)。
填写下列各寄存器的含义:
IMAR:__指令内存地址寄存器_____________________
IR:____指令寄存器________________
A,B:____ALU操作数寄存器A和B__________________
BTA:___分支目标地址寄存器___________________
ALU:______ALU输出寄存器________________
DMAR:_____数据内存地址寄存器________________
SDR:_______存数据寄存器____________
LDR:_______取数据寄存器____________________
2.观察程序在流水线中的执行情况,步骤如下:
①加载程序structure_d.s。
②关闭“Enable Forwarding”定向功能。
③选定“Absolute Cycle Count”项。
④用单步执行一个周期的方式执行该程序,观察每一个周期中,各段流水寄存器内容
的变化、指令的执行情况(“Code”窗口)以及时钟周期图。
⑤当执行到第25个时钟周期时,各段分别正在处理的指令是:
IF:___IMAR<-PC(=loop+0x18)__ IR<-Mem[MAR](=0x00822822)
PC<-PC+4(=loop+0x1c)_______
ID:____________(空)_________________
intEX:_____ALU<-A+(8)(=0x190)(A=0x188)_______________________
MEM:_______Noting to do_____________________
WB:_________D2<-ALU(=2)_____________________
⑥这时各流水寄存器中的内容为:
IMAR:____0x0000012c______________________
IR:_______0x00822822______________________
A,B:______0x00000188____0x00000000__________________
ALU:_____0x00000190______________________
3.观察和分析结构相关对CPU性能的影响,步骤如下:
①重新加载程序structure_d.s。
②执行该程序,找出存在结构相关的指令对以及导致结构相关的部件。
③记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百
分比。
④把浮点加法器的个数改为4个。
⑤再次重复执行①~③的工作。
⑥记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百
分比。
⑦分析结构相关对CPU性能的影响,讨论解决结构相关的方法。
实验三数据相关
实验目的:
(1)了加深对计算机流水线基本概念的理解。
(2)理解DLX结构如何用5段流水线来实现,理解各段的功能和基本操作。
(3)加深对数据相关的理解,了解数据相关对CPU性能的影响。
(4)掌握如何使用定向技术来减少数据带来的暂停。
实验内容和步骤:
1. 启动WinDLX。
2. 观察不采用定向技术的情况下的数据相关,步骤如下:
①全部复位。
②加载程序data_d.s。
③关闭定向功能,通过Configuration菜单中的Enable Forwarding选项设置。
④用单步执行一个周期的方式执行该程序,同时查看时钟周期图,列出在什么时候发生了RAW冲突。
⑤记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
3. 观察采用定向技术的情况下的数据相关,步骤如下:
①全部复位。
③打开定向功能,通过Configuration菜单中的Enable Forwarding选项设置。
④用单步执行一个周期的方式执行该程序,同时查看时钟周期图,列出在什么时候发生了RAW冲突,并与步骤2-④的结果进行比较。
⑤记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。
4. 根据上面记录的数据,计算采用定向技术后性能提高的倍数。
实验结果:
关闭定向功能时发生RAW冲突的时钟周期为7,11和14;程序执行的总时钟周期数为15,暂停时钟周期数为3,比率为3/15=0.2
打开定向功能时发生RAW冲突的时钟周期为2,3,6,7,10,11,13,14;程序执行的总时钟周期数为15,暂停时钟周期数为8,比率为8/15=0.5625
实验四指令调度
实验目的:
(1)加深对指令调度的理解。