编者的话计算机体系结构是计算机科学与技术、网络工程、信息安全专业以及计算机应用专业本科生的一门重要专业课程,其目的是提高学生从总体结构、系统分析这一层次来研究和分析计算机系统的能力,在计算机组成原理和相关课程的基础上建立起计算机系统的完整概念。学习本门课程的目标是:初步具备计算机系统的量化分析、性能评价、设计和选型的能力。学习计算机体系结构的过程中,将会接触到很多基本概念、原理和分析方法,对于计算机性能的分析与评测不容易领会和掌握。亟需一套较系统完整的实验工具和环境。长期以来,研究人员也开发出了各种指令模拟器和分析工具。通过这些工具,能够直观地理解计算机体系结构中的细节内容,有助于培养分析和解决问题的能力和创新精神。其中著名的威斯康辛大学的计算机体系结构主页()提供了丰富的仿真和测评工具。我们在2006年以前使用的是基于有关模拟器的自编实验指导书。张晨曦教授等编著《计算机系统结构实践教程》设计和编写了11个实验:指令系统和体系结构、流水线及流水线中的冲突、指令调度和延迟分支、Cache性能分析、Tomasulo算法、再定序缓冲(ROB)工作原理、多Cache一致性——监听协议、多Cache一致性——目录协议。实验内容基本覆盖了传统的计算机体系结构教学内容,有利于加深对体系结构知识的理解。特别是该书所附光盘提供了系统结构实验模拟器(可运行于Windows平台的模拟器)。这些模拟器界面友好,使用方便、直观,交互性很强。我们在信息学院2007级2008级、2009级以及软件学院2009级计应班的计算机体系结构课程实验的使用中,效果良好。以下是2010级体系结构实验的参考范例(计算机系2009级蓝子睿同学的实验报告),希望同学们把更多的时间用于实验的测试、分析和性能评价中,提高课程的学习效率,进一步加深课程知识体系的理解。计算机体系结构教学小组2012年9月计算机系统结构实践教程作者:张晨曦出版社:清华大学出版社出版时间:2010年5月1日ISBN:9787302223719定价:19.00内容简介:《计算机系统结构实践教程》设计和编写了11个实验:指令系统和体系结构、流水线及流水线中的冲突、指令调度和延迟分支、Cache性能分析、Tomasulo算法、再定序缓冲(ROB)工作原理、多Cache一致性——监听协议、多Cache一致性——目录协议。《计算机系统结构实践教程》覆盖面广,内容丰富,有利于加深对系统结构知识的理解。《计算机系统结构实践教程》的实验既有基于MIPS指令集的,也有基于SPARC指令集的。教师可根据具体教学需要选择。《计算机系统结构实践教程》包含了实验所需相关知识的介绍,可以跟大多数系统结构教材配合使用。《计算机系统结构实践教程》所附光盘提供了我们专门为系统结构实验开发的一套运行于Windows平台的模拟器。这些模拟器界面友好,使用方便、直观,交互性很强。随书光盘还提供了计算机系统结构课程相关的动画和视频课件。《计算机系统结构实践教程》可作为本科生或研究生的系统结构课程以及计算机组成与结构课程的实验教材,也可作为自学者的辅助教材。目录第一部分基于MIPS体系结构实验1MIPS指令系统和MIPS体系结构1.1实验目的1.2实验平台1.3实验内容和步骤1.4MIPSsim使用手册1.4.1启动模拟器1.4.2MIPSsim的窗口1.4.3MIPSsim的菜单1.5相关知识:MIPS指令系统1.5.1MIPS的寄存器1.5.2MIPS的数据表示1.5.3MIPS的数据寻址方式1.5.4MIPS的指令格式1.5.5MIPS的部分指令介绍实验2流水线及流水线中的冲突2.1实验目的2.2实验平台2.3实验内容和步骤2.4MIPSsim使用手册2.5相关知识:流水线、相关与冲突2.5.1一条经典的5段流水线2.5.2相关与流水线冲突2.5.3流水线的实现实验3指令调度和延迟分支3.1实验目的3.2实验平台3.3实验内容和步骤3.4MIPSsim使用手册3.5相关知识:指令调度和延迟分支3.5.1指令调度3.5.2延迟分支第二部分基于SPARC体系结构实验4SPARC指令系统和SPARC体系结构4.1实验目的4.2实验平台4.3实验内容和步骤4.4SPARCsim使用手册4.4.1启动程序4.4.2SPARCsim的窗口4.4.3SPARCsim的菜单4.5相关知识:UltraSPARC指令系统4.5.1UltraSPARC的寄存器4.5.2UltraSPARC的数据表示4.5.3UltraSPARC的数据寻址方式4.5.4UltraSPARC的指令格式4.5.5UltraSPARC的部分指令介绍实验5流水线及流水线中的冲突5.1实验目的5.2实验平台5.3实验内容和步骤5.4SPARCsim使用手册5.5相关知识:流水线、相关与冲突5.5.1一条经典的5段流水线5.5.2相关与流水线冲突5.5.3流水线的实现实验6指令调度和延迟分支6.1实验目的6.2实验平台6.3实验内容和步骤6.4SPARCsim使用手册6.5相关知识:指令调度和延迟分支第三部分Cache和指令并行实验实验7Cache性能分析7.1实验目的7.2实验平台7.3实验内容和步骤7.3.1Cache容量对不命中率的影响7.3.2相联度对不命中率的影响7.3.3Cache块大小对不命中率的影响7.3.4替换算法对不命中率的影响7.4MyCache模拟器的使用方法7.5相关知识:Cache的基本原理7.5.1Cache的映像规则7.5.2查找方法7.5.3替换算法7.5.4写策略7.5.5改进Cache性能7.5.63种类型的不命中7.5.7降低不命中率的方法7.5.8分离Cache和混合Cache实验8Tomasulo算法8.1实验目的8.2实验平台8.3实验内容和步骤8.4Tomasulo算法模拟器的使用方法8.5相关知识:Tomasulo算法8.5.1基本思想8.5.2具体算法实验9再定序缓冲(ROB)212作原理9.1实验目的9.2实验平台9.3实验内容和步骤9.4ROB模拟器的使用方法9.5相关知识:再定序缓冲ROB实验10多Cache一致性——监听协议10.1实验目的10.2实验平台10.3实验内容和步骤10.4监听协议模拟器的使用方法10.5相关知识:监听协议10.5.1基本思想10.5.2监听协议的实现实验11多Cache一致性——目录协议11.1实验目的11.2实验平台11.3实验内容和步骤11.4目录协议模拟器的使用方法11.5相关知识:目录协议11.5.1目录协议的基本思想11.5.2目录协议实例附录AMIPSsim的指令列表(MIPS64指令集的一个子集)附录BMIPSsim的指令系统(MIPS64指令集的一个子集)附录C模拟器MIPSsim的汇编语言参考文献随书附送的模拟器计算机体系结构实验报告1实验报告实验人:蓝子睿学号:09388092日期:2011-11-06院(系):信科院计算机系专业(班级):09计算机科学与技术实验题目:MIPS指令系统和MIPS体系结构1.实验目的(1)了解和熟悉指令级模拟器。(2)熟练掌握MIPSsim模拟器的操作和使用方法。(3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解。(4)熟悉MIPS体系结构。2.实验平台实验平台采用指令级和流水线操作级模拟器MIPSsim(随书光盘中提供)。设计:张晨曦教授,版权所有。开发:孙太一3.实验内容和步骤首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言(见附录A、附录B和附录C)。(1)启动MIPSsim(用鼠标双击MIPSsim.exe)。(2)选择“配置”—“流水方式”选项,使模拟器工作在非流水方式下。(3)参照1.4节的使用说明,熟悉MIPSsim模拟器的操作和使用方法。可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一条指令、执行多条指令、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化。(4)选择“文件”→“载入程序”选项,加载样例程序alltest.asm,然后查看“代码”窗口,计算机体系结构实验报告2查看程序所在的位置(起始地址为0x00000100)。(5)查看“寄存器”窗口PC寄存器的值:[PC]=0x00000000。(6)执行load和store指令,步骤如下:○1单步执行1条指令(F7)。○2下一条指令地址为0x00000004,是一条有(有,无)符号载入字节(字节,半字,字)指令。○3单步执行1条指令(F7)。○4查看R1的值,[R1]=0xFFFFFFFFFFFFFF80。○5下一条指令地址为0x00000008,是一条有(有,无)符号载入字(字节,半子,字)指令。○6单步执行1条指令。○7查看R1的值,[R1]=0x0000000000000080。○8下一条指令地址为0x0000000C,是一条无(有,无)符号载人字节(字节,半字,字)字节指令。○9单步执行执1条指令。○10查看R1的值,[R1]=0x0000000000000080。○11单步执行1条指令。○12下一条指令地址为0x00000010,是一条保存字(字,半字,字)指令。○13单步执行l条指令(F7)。○14查看内存BUFFER处字的值,值为0x00000080。(7)执行算术运算类指令。步骤如下:○1双击“寄存器”窗口中的R1,将其值修改为2。○2双击“寄存器”窗口中的R2,将其值修改为3。○3单步执行1条指令○4下一条指令地址为0x00000020,是一条加法指令。○5单步执行1条指令。○6查看R3的值,[R3]=0x0000000000000005。○7下一条指令地址为0x00000024,是一条乘法指令。○8单步执行1条指令。○9查看LO、HI的值,[LO]=0x0000000000000006,[HI]=0x0000000000000000。(8)执行逻辑运算类指令。步骤如下:○1双击“寄存器”窗口中的R1,将其值修改为0xFFFF0000。○2双击“寄存器”窗口中的R2,将其值修改为0xFF00FF00。○3单步执行1条指令。○4下一条指令地址为0x00000030,是一条逻辑与运算指令,第二个操作数寻址方式计算机体系结构实验报告3是寄存器直接寻址(寄存器直接寻址,立即数寻址)。○5单步执行1条指令。○6查看R3的值,[R3]=0xFF000000。○7下一条指令地址为0x00000034,是一条逻辑与指令,第二个操作数寻址方式是立即数寻址(寄存器直接寻址,立即数寻址)。○8单步执行1条指令。○9查看R3的值,[R3]=0x0000000000000000。(9)执行控制转移类指令。步骤如下:○1双击“寄存器”窗口中的R1,将其值修改为2。○2双击“寄存器”窗口中的R2,将其值修改为2。○3单步执行1条指令。○4下一条指令地址为0x00000040,是一条BEQ指令,其测试条件是[R1]=[R2],目标地址0x0000004C。○5单步执行1条指令。○6查看PC的值,[PC]=0x0000004C,表明分支成功(成功,失败)。○7下一条指令是一条BGEZ指令,其测试条件是[R1]0,目标地址为0x00000058。○8单步执行1条指令。○9查看PC的值,[PC]=0x00000058,表明分支成功(成功,失败)。○10下一条指令是一条BGEZAL指令,其测试条件是[R1]0,目标地址为0x00000064。○11单步执行1条指令。○12查看PC的值,[PC]=0x00000064,表明分支成功(成功,失败);查看R31的值,[R31]=0x000000000000005C。○13单步执行1条指令。○14查看R1的值,[R1]=0x0000000000000074。○15下一条指令地址为0x00000068,是一