您好,欢迎访问三七文档
计算机组成原理实验报告学院(系):软件学院专业:软件设计班级:软件设计一班学号:1415925365姓名:沈烨2016年11月24日实验1Cache模拟器的实现一.实验目的(1)加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。(2)掌握Cache容量、相联度、块大小对Cache性能的影响。(3)掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。(4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。二、实验内容和步骤1、启动CacheSim。2、根据课本上的相关知识,进一步熟悉Cache的概念和工作机制。3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略和写策略。Cache容量块容量映射方式替换策略写策略256KB8Byte直接映射-------------64KB32Byte4路组相联LRU-------64KB32Byte4路组相联随机--------8KB64Byte全相联LRU---------4、读取cache-traces.zip中的trace文件。5、运行程序,观察cache的访问次数、读/写次数、平均命中率、读/写命中率。思考:1、Cache的命中率与其容量大小有何关系?Cache的容量与块长是影响cache效率的重要因素;Cache容量越大,其CPU命中率就越高,当然容量过大,增加成本,而且cache容量达到一定值时,命中率已不因容量的增加而又明显的提高;2、Cache块大小对不命中率有何影响?Cache当块由小到大,在已被访问字的附近,近期也可能访问,增大块长,可将更多有用字存入缓存,提高命中率;但是继续增大块长,命中率可能下降,因为所装入缓存的有用数据反而少于被替换掉的有用数据,由于块长增大,块数减少,装入新的块要覆盖旧块,很可能出现少数块刚装入就被覆盖,故命中率可能下降;3、替换算法和相联度大小对不命中率有何影响?替换算法中:LRU算法的平均命中率比FIFO的高LRU算法比较好地利用访存局部性原理,替换出近期用得最少的字块,它需要随时记录cache各个字块使用情况。FIFO不需要记录各个字块的使用情况,比较容易实现开销小,但是没有根据访存的局部性原理,最早调入的信息可能以后还要用到,或经常用到例如循环程序;Cache容量一定时,随着相联度的不断增加,不命中率渐渐减小,但是当相连度增加到一定程度时,不命中率保持不变;三.实验结果分析Cache的命中率与其容量大小的关系将所有测试的数据绘制成折线图,更清晰的展现,如下Cache块大小对不命中率的影响替换算法对命中率影响数据分析FIFOLRURandom相关度大小对命中率的影响*折线图四.实验心得从书中学习了cache发展历程,基本工作原理;对实验所需要的重点名词,进行了理解;命中率,访问效率,平均访问时间例题进行了理解,从而分析了Cache容量,相关度,块大小,替换算法对命中率的影响;因为LRU、FIFO、RANDOM替换算法对命中率也有这一些影响;看了主存地址映射:有直接映射,全相连映射,感觉有一些迷糊了;不是太容易理解了,然后百度搜了一些相连度大小对命中率影响,然后运用CacheSim模拟器,仅仅从一个数值中值看出来简单的变化;但是并不能看出有什么规律;然后把它们用excel做成折线图,发现其中存在的规律;然后翻阅书籍;解释为什么会存在着现象;这种实践让在学习知识点的过程中,更加有说服性了;实验2运算器的编程实现一、实验目的1、加深对计算机中运算器的基本概念、运算方法和基本原理的理解。2、提高学生对计算机编程语言掌握的熟练程度。二、实验内容运用一种编程语言实现计算器的基本功能。思考:1、计算机中数据是如何表示的?2、计算机中二进制数的加、减、乘、除四则运算如何实现?3、运算器的基本结构和功能有哪些?三.实验结果分析计算器运行结果:1:计算机中数据是如何表示的?计算机中数据都是以二进制形式表示的;实际数表示方法:符号(正负数)数值处理(数制转换)小数点的处理(定点浮点)机器数的表示方法:原码反码补码解释:原码、反码、补码对于有符号的数而言1:二进制的最高位是符号位:0表示正数;1表示负数2:正数的原码、反码、补码都一样3:负数的反码=它的原码符号位不变,其他位取反1-04:负数的补码=它的反码+15:0的反码,补码都是0;6:在计算机运算时,都是以补码的方式来运算的;简单补码反码原码运算图形表示:4个位运算:分别是&|^~按位与&:两位都为1,结果为1按位或|:两位有一个为1,结果为1;按位异或^:两位一个为0,一个为1,结果为1;按位取反~:0-1;1-0三个移位运算符算术右移,算术左移算术右移:低位溢出,符号位不变,并用符号位补溢出的高位算术左移:符号位不变,低位补0逻辑右移:低位溢出,高位补0加减运算2:计算机中二进制数的加、减、乘、除四则运算如何实现?全部采用的是二进制,因为它只使用0,1两个数字符号,非常简单方便,易于用电子方式实现,计算机内部处理的信息,都是采用二进制数来表示,二进制(binary)数用0和1两个数字及其组合来表示任何数,进位规则是逢“2进1”数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。3:运算器的基本结构和功能有哪些?运算器由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成;针对没一种算术运算,都必须有一个相对应的基本硬件配置,其核心部件是加法器和寄存器,当需要完成逻辑运算时,势必需要配置相应的逻辑电离能,而ALU电路是既能完成算术运算又能完成逻辑运算的部件;功能:运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作四.实验心得通过本次实验对计算器的用语言编写的写法有了更大的提高;同时清楚了计算机内部的运行原理,每个操作大概是如何实现的。这对我以后的计算机系统结构的学习打下了坚实的基础,让我不断提高,增长了我的知识。实验3MIPS指令系统和MIPS体系结构一.实验目的(1)了解和熟悉指令级模拟器(2)熟悉掌握MIPSsim模拟器的操作和使用方法(3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解(4)熟悉MIPS体系结构二.实验内容和步骤首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言。(1)启动MIPSsim(用鼠标双击MIPSsim.exe)。(2)选择“配置”-“流水方式”选项,使模拟器工作在非流水方式。(3)参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一条指令、执行多条指令、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化。(4)选择“文件”-“载入程序”选项,加载样例程序alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000100)。(5)查看“寄存器”窗口PC寄存器的值:[PC]=0X00000000。(6)执行load和store指令,步骤如下:1)单步执行一条指令(F7)。2)下一条指令地址为=0X00000004,是一条有(有,无)符号载入字节(字节,半字,字)指令。3)单步执行一条指令(F5)。4)查看R1的值,[R1]=0XFFFFFFFFFFFFFF80。5)下一条指令地址为0X00000008,是一条有(有,无)符号载入字(字节,半字,字)指令。6)单步执行1条指令。7)查看R1的值,[R1]=0X0000000000000080。8)下一条指令地址为0x0000000c,是一条无(有,无)符号载入字节(字节,半字,字)指令。9)单步执行1条指令。10)查看R1的值,[R1]=0X0000000000000080。11)单步执行1条指令。12)下一条指令地址为0X00000014,是一条保存字(字节,半字,字)指令。13)单步执行一条指令(F5)。14)查看内存BUFFER处字的值,值为0X00000080。(7)执行算术运算类指令。步骤如下:1)双击“寄存器”窗口中的R1,将其值修改为2。2)双击“寄存器”窗口中的R2,将其值修改为3。3)单步执行一条指令。4)下一条指令地址为0x00000020,是一条加法指令。5)单步执行一条指令。6)查看R3的值,[R3]=0x0000000000000005。7)下一条指令地址为0x00000024,是一条乘法指令。8)单步执行一条指令。9)查看LO、HI的值,[LO]=0x0000000000000006,[HI]=0x0000000000000000。(8)执行逻辑运算类指令。步骤如下:1)双击“寄存器”窗口中的R1,将其值修改为0XFFFF0000。2)双击“寄存器”窗口中的R2,将其值修改为0XFF00FF00。3)单步执行一条指令。4)下一条指令地址为0x00000030,是一条逻辑与运算指令,第二个操作数寻址方式是寄存器直接寻址(寄存器直接寻址,立即数寻址)。5)单步执行一条指令。6)查看R3的值,[R3]=0x00000000FF000000。7)下一条指令地址为0x00000034,是一条逻辑与指令,第二个操作数寻址方式是立即数寻址(寄存器直接寻址,立即数寻址)。8)单步执行一条指令。9)查看R3的值,[R3]=0x0000000000000000。(9)执行控制转移类指令。步骤如下:1)双击“寄存器”窗口中R1,将其值修改为2。2)双击“寄存器”窗口中R2,将其值修改为2。3)单步执行一条指令。4)下一条指令地址为0x00000040__________,是一条BEQ指令,其测试条件是__相等________,目标地址为0x0000004C__________。5)单步执行1条指令。6)查看PC的值,[PC]=0x0000004c__________,表明分支_成功_________(成功,失败)。7)一条指令是一条BGEZ指令,其测试条件是大于或等于零________,目标地址为0x00000058__________。8)单步执行1条指令。9)查看PC的值,[PC]=0x00000058_________,表明分支___成功_______(成功,失败)。10)下一条指令是一条BGEZAL指令,其测试条件是___小于或等于零转移_______,目标地址为0x00000064__________。11)单步执行1条指令。12)查看PC的值,[PC]=0x00000064_________,表明分支___成功_______(成功,失败);查看R31的值,[R31]=0x000000000000005C_______________。13)单步执行1条指令。14)查看R1的值,[R1]=0x0000000000000074_______________。15)下一条指令地址为0x00000068________,是一条JALR指令,保存目标地址的寄存器为R1_____,保存返回地址的目标寄存器为R3___。16)单步执行1条指令。17)查看PC和R3的值,[PC]=0x00000074____,[R3]=0x000000000000006C________。三、实验结果分析四.实验心得MIPSsim模拟器的基础操作以及使用方法;单步执行,程序的载入,以及配置方式中的流水;熟悉MIPS指令系统;加深对MIPS指令操作语义的理解;并对代码区,寄存器进行了剖析,但是对时钟周期内存这部分理解的还不是很清晰;在以后的实验中解决;思考了LB,字节,字,双字,以及无符号如何查看,以及buffer如何查看内容;然后通过对对代码区中的符号指令进行了自我学习;以及对ARM进行了很好的温习;认识LW,LB,LU,ADDU,ADDIU,SLL,MUL,BEQ,等简单的指令的含义进行了分析;但是仍然存在部分的寄存器值的变化未清楚其详细步骤;
本文标题:计算机组成原理实验
链接地址:https://www.777doc.com/doc-7290587 .html