计算机组成原理
实
验
指
导
书
软件学院 2015.9
实验报告要求
一、 该实验为计算机组成原理课程的仿真训练项目,包括实验1-5, 每个实验6分,共30分,计入最终考核成绩。
二、每人每个实验写一份实验报告。要求在熟悉仿真软件和相关理论知识的基础上,按照实验步骤,认真观察实验结果数据,做好记录或截图,并对结果进行分析,最后总结实验中遇到的问题和解决方法,写出实验心得体会。
三、每个实验应在相对应的理论知识讲授完毕后进行,实验完成后以答辩形式组织考核打分。实验报告需要同时上交电子版和A4纸打印版,封面参考附件。
附件
计算机组成原理
实验报告
学院(系):
专 业:
班 级:
学 号:
姓 名:
年 月 日
实验1 Cache模拟器的实现
一.实验目的
(1)加深对 Cache的基本概念、基本组织结构以及基本工作原理的理解。
(2)掌握 Cache容量、相联度、块大小对Cache性能的影响。
(3)掌握降低 Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。
(4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。
二、实验内容和步骤
1、启动CacheSim。
2、根据课本上的相关知识,进一步熟悉Cache的概念和工作机制。
3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略和写策略。
4、读取cache-traces.zip中的trace文件。
5、运行程序,观察cache的访问次数、读/写次数、平均命中率、读/写命中率。 思考:1、Cache的命中率与其容量大小有何关系?
2、Cache块大小对不命中率有何影响?
3、替换算法和相联度大小对不命中率有何影响?
三.实验结果分析
四.实验心得
实验2:MIPS指令系统和MIPS体系结构
一.实验目的
(1)了解和熟悉指令级模拟器
(2)熟悉掌握MIPSsim模拟器的操作和使用方法
(3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解
(4)熟悉MIPS体系结构
二. 实验内容和步骤
首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统。
(1)、启动MIPSsim。
(2)、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。
(3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。
(4)、选择“文件”->“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置。
(5)、查看“寄存器”窗口PC寄存器的值:[PC]= 。
(6)、执行load和store指令,步骤如下:
1)单步执行一条指令(F7)。
2)下一条指令地址为 ,是一条 (有,无)符号载入 (字节,半字,字)指令。
3)单步执行一条指令(F7)。
4)查看R1的值,[R1]= 。
5)下一条指令地址为 ,是一条 (有,无)符号载入 (字节,半字,字)指令。
6)单步执行1条指令。
7)查看R1的值,[R1]= 。
8)下一条指令地址为 ,是一条 (有,无)符号载入 (字节,半字,字)指令。
9)单步执行1条指令。
10)查看R1的值,[R1]= 。
11)单步执行1条指令。
12)下一条指令地址为 ,是一条保存 (字节,半字,字)指令。
13)单步执行一条指令。
14)查看内存BUFFER处字的值,值为 。
(7)、执行算术运算类指令。步骤如下:
1)双击“寄存器”窗口中的R1,将其值修改为2。
2)双击“寄存器”窗口中的R2,将其值修改为3。
3)单步执行一条指令。
4)下一条指令地址为 ,是一条加法指令。
5)单步执行一条指令。
6)查看R3的值,[R3]= 。
7)下一条指令地址为 ,是一条乘法指令。
8)单步执行一条指令。
9)查看LO、HI的值,[LO]= ,[HI]= 。
(8)、执行逻辑运算类指令。步骤如下:
1)双击“寄存器”窗口中的R1,将其值修改为0XFFFF0000。
2)双击“寄存器”窗口中的R2,将其值修改为0XFF00FF00。
3)单步执行一条指令。
4)下一条指令地址为 ,是一条逻辑与运算指令,第二个操作数寻址方式是 (寄存器直接寻址,立即数寻址)。
5)单步执行一条指令。
6)查看R3的值,[R3]= 。
7)下一条指令地址为 ,是一条逻辑或指令,第二个操作数寻址方式是 (寄存器直接寻址,立即数寻址)。
8)单步执行一条指令。
9)查看R3的值,[R3]= 。
(9)、执行控制转移类指令。步骤如下:
1)双击“寄存器”窗口中R1,将其值修改为2。
2)双击“寄存器”窗口中R2,将其值修改为2。
3)单步执行一条指令。
4)下一条指令地址为 ,是一条BEQ指令,其测试条件是 。
5) 单步执行1条指令。
6) 查看PC的值,[PC]= ,表明分支 (成功,失败)。
7) 一条指令是一条BGEZ指令,其测试条件是 ,目标地址为 。
8) 单步执行1条指令。
9) 查看PC的值,[PC]= ,表明分支 (成功,失败)。
10) 下一条指令是一条BGEZAL指令,其测试条件是 ,目标地址为 。
11) 单步执行1条指令。
12) 查看PC的值,[PC]= ,表明分支 (成功,失败);查看R31的值,[R31]= 。
13) 单步执行1条指令。
14)查看R1的值,[R1]= 。
15)下一条指令地址为 ,是一条JALR指令,保存目标地址的寄存器为R1 ,保存返回地址的目标寄存器为R3。
16)单步执行1条指令。
17)查看PC和R3的值,[PC]= ,[R3]= 。
三、实验结果分析
四.实验心得
实验3 流水线及流水线中的冲突
一.实验目的
(1)理解计算机流水线基本概念。
(2)理解MIPS结构如何用5段流水线来实现。
(3)理解各段的功能和基本操作。
(4)加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影响。
(5)进一步理解解决数据冲突的方法,掌握如何应用定向技术来减少数据冲突引起的停顿。
二.实验内容和步骤
(1)、启动MIPSsim。
(2)、根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。(用鼠标双击各段,就可以看到各流水寄存器的内容)
(3)、参照MIPSsim模拟器使用说明,熟悉MIPSsim模拟器的操作和使用方法。
(4)、选择配置菜单中的“流水方式”选项,使模拟器工作于流水方式下。
(5)、观察程序在流水线中的执行情况,步骤如下:
1)选择MIPSsim的“文件”—>“载入程序”选项来加载pipeline.s。
2)关闭定向功能。这是通过“配置”—>“定向”。
3)用单步执行一个周期的方式执行该程序,观察每一个周期中,各段流水寄存器内容的变化、指令的执行情况(“代码”窗口)以及时钟周期图。
4)当执行到第13个时钟周期时,各段分别正在处理的指令是: IF:
ID:
EX:
MEM:
WB:
画出这时的时钟周期图。
(6)、这时各流水寄存器中的内容为:
IF/ID.IR:
IF/ID.NPC:
ID/EX.A:
ID/EX.B:
ID/EX.IR:
ID/EX.Imm:
EX/MEM.ALUo:
EX/MEM.IR:
MEM/WB.LMD:
MEM/WB.ALUo:
MEM/WB.IR:
(7)、观察和分析结构冲突对CPU性能的影响,步骤如下:
1)加载structure_hz.s。
2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件。
3)记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总执行周期数的百分比。
4)把浮点加法器的个数改为4个。
5)再次重复步骤1)-步骤3)的工作。
6)分析结构冲突对CPU性能的影响,讨论解决结构冲突的方法。
(8)、 观察数据冲突并用定向技术来减少停顿,步骤如下:
1)全部复位。
2)加载data_hz.s。
3)关闭定向功能。
4)单步执行一个周期,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突。
5)记录数据冲突引起的停顿时钟周期数及程序执行的总时钟周期数,计算
停顿时钟周期数占总执行周期数的百分比。
6)复位CPU。
7)打开定向功能。
8)单步执行一个周期,同时查看时钟周期图,列出在什么时刻发生了RAW(先写后读)冲突,并与步骤(3)的结果进行比较。
9)记录由数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数,计算采用定向技术后的性能是原来的几倍。
三.实验结果分析
四.实验心得
实验4 指令调度和延迟分支
一.实验目的
(1)加深对指令调度技术的理解。
(2)加深对延迟分支技术的理解。
(3)熟练掌握用指令调度技术解决流水线中的数据冲突的方法。
(4)进一步理解指令调度技术对CPU性能的改进。
(5)进一步理解延迟分支技术对CPU性能的改进。
二.实验内容和步骤:
(1)、启动MIPSsim。
(2)、根据前面的相关知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。
(3)、选择“配置”->“流水方式”选项,使模拟器工作于流水方式下。
(4)、用指令调度技术解决流水线中的数据冲突。
1)启动MIPSsim。
2)加载schedule.s。
3)关闭定向功能。
4)执行所载入的程序。通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数、发生冲突的指令组合以及程序执行的总时钟周期数。
5)采用指令调度技术对程序进行指令调度,消除冲突。将调度后的程序存到after-schedule.s中。
6)载入after-schedule.s。
7)执行该程序。观察程序在流水线中的执行情况,记录程序执行的总时钟周期数。
8)根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU性能的作用。
(5)、用延迟分支减少分支指令对性能的影响。
1)启动MIPSsim。
2)载入branch.s。
3)关闭延迟分支功能。
4)执行该程序。观察并记录发生分支延迟的时刻。
5)记录执行该程序所用的总时钟周期数。
6)假设延迟槽有1个,对branch.s进行指令调度,然后保存到“delayed-branch.s”中。
7)载入delayed-branch.s。
8)打开延迟分支功能。
9)执行该程序。观察其时钟周期图。
10)记录执行该程序所用的总时钟周期数。
11)对比上述两种情况下的时钟周期图。
12)根据记录结果,比较没采用延迟分支和采用了延迟分支的性能之间的不同。论述延迟分支对于提高CPU性能的作用。
三.实验结果分析
四.实验心得
实验5 运算器的编程实现
一、实验目的
1、加深对计算机中运算器的基本概念、运算方法和基本原理的理解。
2、提高学生对计算机编程语言掌握的熟练程度。
二、实验内容
运用一种编程语言实现计算器的基本功能。
思考:1、计算机中数据是如何表示的?
2、计算机中二进制数的加、减、乘、除四则运算如何实现?
3、运算器的基本结构和功能有哪些?
三.实验结果分析
四.实验心得
第二篇:计算机组成原理 静态随机存储器实验
实验报告
一、实验名称
静态随机储存器实验
二、实验目的
掌握静态随机储存器RAM的工作特性和数据的读写方法
三、实验设备
TDN-CM++计算机组成原理教学实验系统一套,导线若干。
四、实验原理
实验所用的半导体静态存储器电路原理如图1所示,实验中的静态存储器由一片6116(2K×8)构成,其数据线接至数据总线,地址线由地址锁存器(74LS273)给出。地址灯ADO~AD7与地址线相连,显示地址线内容。数据开关经三态门(74LS245)连至数据总线,分时给出地址和数据。
因地址寄存器为8位,接入6116的地址A7--AO,而高三位A8—A1O接地,所以其实际容量为256字节。6116有三个控制线:CE(片选线)、0E(读线)、WE(写线)。当片选有效(CE=O)时,OE=O时进行读操作,WE=0时进行写操作。本实验中将0E常接地,因此6116的引脚信号WE=1时进行读操作, WE=0时进行写操作。
在此情况下,要对存储器进行读操作,必须设置控制端CE=O、WE=O,同时有T3脉冲到来,要对存储器进行写操作,必须设置控制端CE=O、WE=1,同时有T3脉冲到来,其读写时间与T3脉冲宽度一致。
实验时将T3脉冲接至实验板上时序电路模块的TS3相应插孔中,其脉冲宽度可调,其它电平控制信号由“SWITCH UNIT”单元的二进制开关模拟,其中SW-B为低电平有效,LDAR为高电平有效。
图1 存储器实验原理图
五、实验内容
1. 向存储器中指定的地址单元输入数据,地址先输入AR寄存器,在地址灯上显示;再将数据送入总线后,存到指定的存储单元,数据在数据显示灯和数码显示管显示。
2. 从存储器中指定的地址单元读出数据, 地址先输入AR寄存器,在地址灯显示; 读出的数据送入总线, 通过数据显示灯和数码显示管显示。
六、实验步骤
(1) 将时序电路模块中的Φ和H23排针相连。
将时序电路模块中的二进制开关“STOP”设置为“RUN”状态、将“STEP”设置为"STEP"状态。
注意:关于stop和step的说明: 将“STOP”开关置为“Run"状态、“STEP”开关置为“EXEC”状态时,按动微动开关START,则T3输出为连续的方波信号,此时调节电位器W1,用示波器观察,使T3输出实验要求的脉冲信号。当“STOP”开关置为“RUN”状态、“STEP”开关置为"STEP"状态时,每按动一次微动开关START,则T3输出一个单脉冲,其脉冲宽度与连续方式相同。
(2) 按图2连接实验线路,仔细查线无误后接通电源。
图2 存储器实验接线图
(3) 向存储器指定的地址送入数据,如:向00单元中输入11, 步骤如下:
① 向地址寄存器AR中输入地址00的流程如下:
1)操作步骤是,设置:a、SW-B=1;
b、从输入开关输入00000000;
c、打开输入三态门:SW-B=0;
d、将地址打入地址锁存器中:LDAR=1,按START发T3脉冲。
2)观察地址灯的变化。
② 输入要存放的数据11的流程如下:
1)操作步骤是,设置:a、SW-B=1;
b、从输入开关输入00010001;
c、打开输入三态门:SW-B=0;
d、关闭地址寄存器:LDAR=0;
e、将数据写入存储单元:CE=0,WE=1,按START发T3脉冲;
f、输入数据在数码管上显示:LED-B=0,发W/R脉冲。
2)观察数据显示灯和数码显示管的变化。
③ 按照①②的步骤继续向下面的几个地址中输入下述数据:
(4) 从存储器指定的地址中读出数据. 如从00中读出的流程如下:
1)操作步骤是,设置:a、SW-B=1;
b、 禁止存储器读写CE=1;
c、从输入开关输入00000000;
d、打开输入三态门:SW-B=0;
e、将地址打入地址锁存器中:LDAR=1,按START发T3脉冲。
f、关闭输入三态门:SW-B=0;
g、关闭地址寄存器:LDAR=0;
h、从存储器中读出数据:CE=0,WE=0;
i、数据在数码管上显示:LED-B=0,发W/R脉冲。
2)同样从其它4个地址: 01 ,02 ,03 , 04中读出数据,观察地址显示灯, 数据显示灯和数码显示管的变化,并检查是否和输入的数据一致。
七、实验结果
步骤3向存储器指定的地址输入数据结果:
步骤四中,地址显示灯, 数据显示灯和数码显示管的变化,和输入的数据一致。
八、小结
通过这次实验,较好的掌握了静态存储器的工作特性及使用方法。掌握了半导体随机存储器如何存储数据及读出数据。从此次实验中懂得了在实验接线时要细心。在操作过程中,若出现问题应能在最短时间内检查出问题,从而使实验过程更顺利。