《计算机系统结构实验指导书.docx》由会员分享,可在线阅读,更多相关《计算机系统结构实验指导书.docx(72页珍藏版)》请在优知文库上搜索。
1、计算机系统结构实睑指导书段晓峰编著山东大学计算机科学与技术学院2004年3月前S计算机系统结构是计算机科学与技术专业的一门骨干课程,课程中讲授的许多内容诸如:指令流水线、向量计算、流水线的相关、并行计算、定向技术等内容比拟抽象,同学们在学习中会有些难度。为了使理论教学与实践教学紧密结合,注重学生的智力开发和能力培养,为了帮助大家学好这门课程,我们安排了计算机系统结构实验,希望同学们认真完成实验内容,增进对课程内容的理解,提高自己理论联系实际的能力,提高自己独立思考解决问题的能力。本实验采用了目前在世界上计算机系统结构实验教学过程中广泛采用的WinDLX模拟器,该模拟器把系统结构课程中许多抽象的
2、东西变成实际的、便于同学们理解的内容。本实验中借鉴和引用了其他学校的经验和内容,在此表示感谢。山东大学计算机科学与技术学院殷晓峰2004.3WinDLX简介二.WinDLX存放器结构及指令集三.WinDLX教程四.实验考前须知及要求五.实验一熟悉WinDLX的使用六.实验二用WinDLX执行程序求最大公约数七.实验三用WinDLX模拟器完成求素数程序八.实验四结构相关九.实验五数据相关十.实验六指令调度实验七多处理机并行计算,WinDLX简介1. DLX流水线处理器DLX是贯穿本课程的一个流水线处理器实例,许多讨论、模拟结果和例题都是基于DLX的。它不仅表达了当今多种机器(AMD29K、DEC
3、station3100、HP850、IBM801、Inteli860、MIPSM120AMIPSM1000Motorola88k、RISCI,SGI4D60,SPARCstation1、Sun4/110Sun4/260等)指令集结构的共同特点,而且它还将会表达未来一些机器的指令集结构的特点。这些机器的指令集结构设计思想都和DLX指令集结构的设计思想十分相似,它们都强调:具有一个简单的LOad/Store指令集;注重指令流水效率;简化指令的译码;高效支持编译器。2. DLX模拟器-WinDLXWinDLX是一个基于Windows的DLX模拟器,用于模拟DLX流水线的工作过程。你可以灵活、方便地设
4、置参数、控制执行、统计数据等。WinDLX提供了直观的窗口显示O我们将WinDLX模拟器及有关程序已放在实验用计算机上,同学们翻开XTJG文件夹通过双击WinDLxS图标,启动WinDLX即可。二.WinDLX存放器结构及指令集DLX中的寄存器32个通用寄存器FO、64位双精度浮点数一些特殊的寄存器1DLX的数据类型DLX供了多种长度的整型数据和浮点数据。rI8位I整型数据I16位III32位一rI32位单精度浮点数I浮点数据II64位双精度浮正薮图23. DLX的寻址方式和数据传送DLX的寻址方式和数据传送厂寄存器寻址j立即值寻址寻址方式、偏移寻址I寄存器间接寻址存储器通过寄存器和存储器之间
5、的数据传送操作完成对存储器的访问寄存器III1图3由于DLX支持上述数据类型,所以对通用存放器而言,相应的存储器访问数据大小有8位、16位和32位;而对浮点存放器而言,相应的存储器访问数据大小有32位单精度浮点数)和64位双精度浮点数)。值得注意的是,DLX的所有存储器访问均需对齐。4. DLX的指令格式DLX的指令格式6.5516I类型指令I操作码C)PIrSIlrd|立即值字节、半字、字的载入和储存rd-rslOP立即值6.55511R类型指令操作码OPIrSIIrS2rdFunC寄存器寄存器ALUj集作:rd-rslFuncrs2函数对数据的操作进行编码:力、减对特殊寄存器的读/写和移动
6、626J类型指令I操作码OPI与PC相加的偏移基跳转,跳转并链接,从异常处自陷和返回。图45. DLX中的操作DLX除了支持上面提到的一些简单操作之外,还支持其它一些操作。DLX指令中的操作可以分为四种类型,即:LOad和StOre操作、ALU操作、分支和跳转操作、浮点操作。在分别讨论这四种操作类型之前,请先阅读有关本课程中所采用的一些符号的约定。些约定一:数据传送操作n:传送一个啦的数据#:表示两个域的串联操作域的下标:表明从该域中选择某一位O131RegsR40:选择寄存器R4中内容的符号位O1232431眼口I口I-IlX/RysR3m.3:寄存器R3中内容的最低一个字节上标:表示复制一
7、个域。2,一|。|。|。|/得到一个24位全为0的城变量Mem:表示存储器中的一个数组存储器图5为了进一步说明上述约定表示方法的用途,现设R8和RlO均为32位存放器举例:RegsR106.3i-16(MemRegsR8o)8#MemRegsR8的含义是:以存放器R8的内容为地址,取出存储器单元内容,将该内容的第“0”位最高位)复制为八个“0”作为高八位再并上该存储单元内容,形成十六位数送存放器RlO的1631位。6. WinDLX指令综述(1) Load和Store操作:可以对DLX的所有通用存放器和浮点存放器进行Load载入)和Store储存)操作,但是对通用存放器RO的Load操作没有任
8、何效果。表1给出了载入和储存指令的一些实例。表1DLX中Load和Store指令实例指令实例指令名称含义LWRl,30(R2)载入整型字RegsRl-32Mem30+RegsR2LWRl,1000(RO)载入整型字RegsRl-32Mem1000+0RegsRl-32(Mem4O+RegsR3o)24LBRl,40(R3)载入字节JJ#Mem40+RegsR3LBURl,40(R3)载入无符号字节RegsRl-32024#Mem40+RegsR3RegsRl-32(Mem4O+RegsR3o)16LHRl,40(R3)载入整型半字J#Mem40+RegsR3#Mem41+RegsR3LFFO,
9、50(R3)载入单精度浮点RegsFO-32Mem50+RegsR3LDFO,50(R2)载入双精度浮点RegsFO#RegsFl-64Mem50+RegsR2SW500(R4),R3储存整型字Mem500+RegsR4-32RegsR3SF40(R3),FO储存单精度浮点Mem40+RegsR3-32RegsFOMem40+RegsR3-32RegSlT0SD40(R3),FO储存双精度浮点JJMem44+RegsR3-32RegsF1SH502(R2),R31储存整型半字Mem502+RegsR2-i6RegsR316.,3iSB41(R3),R2储存整型字节Mem41+RegsR3-8R
10、egsR224.3i(2) ALU操作:在DLX中,所有的ALU指令都是存放器一存放器型指令,其运算包含了简单的算术和逻辑运算,如加、减、AND、OR、XoR和移位。另外,DLX还允许所有这些指令对立即值进行操作,立即值以16位符号扩展形式出现。LHMLOad高位立即值)操作将立即值载入到一个存放器的高半局部,而该存放器的低半局部那么设置为Oo这样就可以通过两条Load指令构造一个32位的常数。正如上面所提到的,RO主要用来合成一些有用的操作。比方,LOad一个常数就可以看作是一次简单的立即值加操作,其中一个源操作数是R0;存放器一存放器间的数据移动也可以看作是一次简单的加,其中一个源操作数是
11、ROo这两个操作可以分别用LI和MOV表示。在DLX指令集中,还有一些存放器比拟指令二,三),如果比拟结果为真,这些指令就在目标存放器中填入1表示真),否那么填入0表示假)。因为这些比拟操作指令要对目标存放器进行“设置”,所以也称它们为设置相等、设置不等、设置小于等指令。DLX同样也提供了这些比拟指令的立即值形式,表2给出了ALU操作指令的一些实例。表2ALU指令实例指令实例指令名称含义AddRl,R2,R3加RegsRl-RegsR2+RegsR3ADDIRl,R2,#3和立即值相加RegsRl_RegsR2+3LHIRl,#42载入高位立即值RegsRl-42#O16SLLIRl,R2,#
12、5逻辑左移的立即值形式RegsRl_RegsR25SLTRl,R2,R3设置小于if(RegsR2RegsR3)RegsR1-1elseRegsRIO(3)分支和跳转操作:在DLX中,对程序流程的控制是通过一些跳转和分支指令来实现的。根据描述目标地址的方法和是否链接可以将跳转操作指令分为四种类型。其中两种类型的跳转指令用带符号位的26位偏移量加上程序计数器的值来确定跳转的目标地址,另外两种类型的跳转指令那么指定一个存放器,由存放器中的内容决定跳转的目标地址。跳转有两种类型,一种是简单跳转,另一种是跳转并链接用于过程调用),后者将返回一个地址,即将下一条顺序指令地址返回地址)保存在存放器R31中
13、。DLX中的所有分支指令均是条件分支指令,其源操作数存放器中包含了一个数值或某个比拟结果。分支指令测试该源操作数存放器中的值是0还是非3决定分支是否成功。分支目标地址由一个带符号的26位偏移量加上程序计数器的值来确定,分支目的地址指向下一条要执行的指令。表3给出了一些典型的分支和跳转指令。表3典型的分支和跳转指令PC-name;Jname跳转(PC+4)-225)name(PC+4)+225)RegsR31-PC+4;PC-name;JALname跳转并链接(PC+4)-2255)name(PC+4)+225)RegsR31-PC+4;PC-JALRR2存放器型跳转并链接RegsR2;JRR3存放器型跳转PC-RegsR3;BEQZR4,name“等于0”分支if(RegsR4=0)PC-name;指令实例指令名称含义(PC+4)-215)name(PC+4)+215)if(RegsR4!=0)PC-name;BNEZR4,name“不等于0”分支(PC+4)-2i5)WnameW(PC+4)+2)(4)浮点操作:在DLX中,浮点指令的操作数来源于浮点存放器,同时该浮点指令还指明了相应的操作是单精度浮点操作还是双精度浮点操作。DLX的浮点操作有:力口、减、乘、除。后缀D代表双精度浮点操作,而后缀F代表单精度浮点操作如:ADDD、ADDF、SUBD、SUBF、MULTDMU