计算机系统结构实验指导书.pdf
《计算机系统结构实验指导书.pdf》由会员分享,可在线阅读,更多相关《计算机系统结构实验指导书.pdf(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录W i n D L X 简介二.W i n D L X 寄存器结构及指令集三.W i n D L X 教程四.实验注意事项及要求五.实验一熟悉W i n D L X 的使用六.实 验 二 用 WinDLX执行程序求最大公约数七.实 验 三 用 WinDLX模拟器完成求素数程序八.实验四结构相关九.实验五数据相关十.实验六指令调度十一.实验七多处理机并行计算WinDLX 简介1.DLX流水线处理器DLX是贯穿本课程的一个流水线处理器实例,许多讨论、模拟结果和例题都是基于DLX的。它不仅体现了当今多种机器(AMD29K、DEC station 3100.HP850、IBM 801、Intel
2、 i860、MIPS M/120A、MIPS M/1000、Motorola 88k、RISCI,SGI4D/60,SPARC station 1、Sun 4/110,Sun 4/260 等)指令集结构的共同特点,而且它还将会体现未来些机器的指令集结构的特点。这些机器的指令集结构设计思想都和DLX指令集结构的设计思想十分相似,它们都强调:具有一个简单的Load/Store指令集;注重指令流水效率;简化指令的译码;高效支持编译器。2.DLX 模拟器-WinDLXWinDLX是一个基于Windows的DLX模拟器,用于模拟DLX流水线的工作过程。你可以灵活、方便地设置参数、控制执行、统计数据等。W
3、inDLX提供了直观的窗口显小。我们将WinDLX模拟器及有关程序已放在实验用计算机上,同学们打开XTJG文件夹通过双击WinDLX舞图标,启动WinDLX即可。二.WinDLX寄存器结构及指令集1.DLX中的寄存器DLX中 的 寄 存 器长度为32位(R o 032个通用寄存器 :一(GPRs),:,、|Rsi-长度为32位F。32个浮点寄存器(FPRs)32位单精度浮点数t-F2 64位叫 r双精度浮点数f一些特殊的寄存器图 12.DLX的数据类型2DLX的 数 据 类 型DLXW供 了 多 种 氏 度 的 整 型 数 据 和 浮 点 数 据。8位|整 型 数 据16位32位32位 单 精
4、 度 浮 点 数浮 点 数 据64位 双 精 度 浮 点 数图 23.DLX的寻址方式和数据传送3DLX的 寻 址 方 式 和 数 据 传 送寻 址 方 式 寄存器寻址立即值寻址偏移寻址、寄存器间接寻址存储器通过寄存器和存储器之间的数据传送操作完成对存储器的访问广寄存器I图 3由于DLX支持上述数据类型,所以对通用寄存器而言,相应的存储器访问数据大小有8位、16位和32位;而对浮点寄存器而言,相应的存储器访问数据大小有32位(单精度浮点数)和64位(双精度浮点数)值得注意的是,DLX的所有存储器访问均需对齐。4.DLX的指令格式4DLX的指令格式6 5 5 16操作码0Prslrd立即值字节、
5、半字、字的载入和储存rd rsl OP 立即值6.5 5 5 11R类型指令 操作码OP|rsl|rs2 rd Func寄存器-寄存器AL嗾 作:rd rsl Func rs2函数对数据的操作进行编码:力 口、减对特殊寄存器的读/写和移动6 26j 类 型 指 令|操作角O P|与pc相加的偏移豆一跳转,跳转并链接,从异常处自陷和返回。图 45.DLX中 的 操 作DLX除了支持上面提到的一些简单操作之外,还支持其它一些操作。DLX指令中的操作可以分为四种类型,即:Load和Store操作、ALU操作、分支和跳转操作、浮点操作。在分别讨论这四种操作类型之前,请先阅读有关本课程中所采用的一些符号
6、的约定。5些 约 定一:数 据 传 送 操 作一n !传送一个n位的数据称:表示两个域的串联操作域的下标:表明从该域中选择某一位0 13 1R 40 1 2 3 2 4 3 1R e g s R 4 0:选择寄存器R 4中内容的符号位R e g s R 3次”:寄存器R 3中内容的最低一个字节上 标:表示复制一个域0窈0 0.0得到一个2 4位全为0的域变量M e m:表示存储器中的一个数组器储存图5为 了 进 一 步 说 明 上 述 约 定 表 示 方 法 的 用 途,现设R 8和R 1 0均 为32位寄存器举 例:R e g s R 1 0 i6.3i-1 6(Me m R e g s R
7、 8 0)8#Me m R e g s R 8 J的 含 义 是:以寄存器R8的 内 容 为 地 址,取 出 存 储 器 单 元 内 容,将该内6容的第“0”位(最高位)复制为八个“0”作为高八位再并上该存储单元内容,形成十六位数送寄存器R10的 1631位。6.WinDLX指令综述(1)Load和 Store 操作:LF F0,50(R3)可以对DLX的所有通用寄存器和浮点寄存器进行Load(载入)和Store(储存)操作,但是对通用寄存器R0的Load操作没有任何效果。表 1给出了载入和储存指令的一些实例。表 1 DLX中Load和Store指令实例指令实例 指令名称 含 义LWR1,30
8、(R2)载入整型字 Regs RlJ-32Mem 30+Regs R2LW RI,1000载入整型字 RegsfRl-32 Memfl000+0(R0)Regs Rl=32(Mem 4O+Regs R3o)24LB RI,40(R3)载入字节#Mem 40+Regs R3LBURl,4 0(R 3)载入无符号字节 Regs Rl-32024#Mem 40+Regs R3Regs Rl-32(Mem 4O+Regs R3o)6载入整型半字#Mem 40+Regs R3U#Mem 41+Regs R3J载入单精度浮点 Regs F0-32 Mem 50+Regs R3载入双精度浮点Regs F0#
9、Regs Fl-M Mem 50+Regs R2储存整型字 Mem 500+Regs R4-32 Regs R3SF40(R3),F0 储存单精度浮点 Mem 40+Regs R3-32 Regs F0Mem 40+Regs R3-32 Regs F0SD 40(R3),F0 储存双精度浮点Mem 44+Regs R3-32 Regs FlSH502(R2),R31 储存整型半字 Mem 502+Regs R2一怖 Regs R31i63LHR1,40(R3)LD F0,50(R2)R37SB 41(R3),R2 储存整型字节 Mem41+RegsR3-8 RegsR2243(2)ALU操作:
10、在DLX中,所有的ALU指令都是寄存器一寄存器型指令,其运算包含了简单的算术和逻辑运算,如加、减、AND、OR、XOR和移位。另外,DLX还允许所有这些指令对立即值进行操作,立即值以16位符号扩展形式出现。LHI(Load高位立即值)操作将立即值载入到一个寄存器的高半部分,而该寄存器的低半部分则设置为0。这样就可以通过两条Load指令构造一个32位的常数。正如上面所提到的,R0主要用来合成一些有用的操作。比如,Load一个常数就可以看作是一次简单的立即值加操作,其中一个嫄操作数是R0;寄存器一寄存器间的数据移动也可以看作是一次简单的加,其中一个源操作数是R0。这两个操作可以分别用LI和MOV表
11、示。在DLX指令集中,还有一些寄存器比较指令(=,#,W,2),如果比较结果为真,这些指令就在目标寄存器中填入1 (表示真),否则填入0(表示假)。因为这些比较操作指令要对目标寄存器进行“设置”,所以也称它们为设置相等、设置不等、设置小于等指令。DLX同样也提供了这些比较指令的立即值形式,表2给出了ALU操作指令的一些实例。8表 2 ALU指令实例指令实例 指令名称含 义Add RI,R 2,R3 加RegsRl-RegsR2+RegsR3ADDI RI,R2,和立即值相加#3LHIR1,#42 载入高位立即值RegsRl J-RegsR2+3RegsfRl-42#016逻辑左移的立即值形SL
12、LI RI,R2,#5式RegslRl J-RegsR2J 5if(RegsR2=D dregb)fps=1 else fps=0Both are double precision floats.gefEx:gef f3,f6if(F frega=F fregb)fps=1 else fps=0Both are single precision floats.gtdEx:gtd f8,f6if(D drega Dfdregb)fps=1 else fps=0Both are double precision floats.gtfEx:gtf f3,f6if(F frega F fregb)fp
13、s=1 else fps=0Both are single precision floats.jEx:j labelPC-PC+imm26+4Unconditionally jumps relative to the PC of the next instruction.imm26 is a26-bit signed integer.jalEx:jal labelR31-PC+8;PC-PC+imm26+4Saves a return address in register 31 and jumps relative to the PC of the nextinstruction.imm26
14、 is a 26-bit signed integer.20jalrEx:jalr r2R31-PC+8;PC-R regaSaves a return address in register 31 and does an absolute jump to the target addresscontained in R rega.jrEx:jr r3PC RfregaR rega is treated as an unsigned integer.Does an absolute jump to the targetaddress contained in Rfrega.lbEx:lb rl
15、,40-4(r2)Rfregb (sign extended)M imml6+RfregaOne byte of data is read from the effective address computed by adding signedinteger imml6 and signed integer R rega.The byte from memory is then signextended to 32-bits and stored in register R regb.IbuEx:Ibu r2Jabel-786+4(r3)RlregbJ-0A24#M imml6+R regaO
16、ne byte of data is read from the eflective address computed by adding signedinteger imm!6 and signed integer RLregaJ.The byte from memory is then zeroextended to 32 bits and stored in register R regb.IdEx:ldf2,240(rl)Dfdregb-6 4 Mfimm 16+RfregaTwo words of data are read from the effective address co
17、mputed by addingsigned integer imml6 and unsigned integer Rfrega and stored in doubleregister Dfdregb.This is equivalent to two If instructions:F fregb-Mfimml6+R regaF freg(b+1)-M imm 16+R rega+4where F freg(b+1)is the next fp register after F fregb in sequence,and allvalues are simply copied and no
18、t converted.)21ledEx:led f8,f6if(D drega=D dregb)fps=1 else fps=0Both are double precision floats.lefEx:lef f3,f6if(F frega=F fregb)fps=1 else fps=0Both are single precision floats.IfEx:If f6,76(r4)Fffregb-Mfimml6+RfregaOne word of data is read from the effective address computed by adding signedint
19、eger imml6 and signed integer R rega and stored in fp register Fffregb.lhEx:lhrl,32(r3)Rfregb (sign extended)M imml6+RfregaTwo bytes of data are read from the effective address computed by addingsigned integer imml6 and signed integer R rega.The address must be half-wordaligned.The half-word from me
20、mory is then sign extended to 32 bits and stored inregister R regb.IhiEx:Ihi r3,#-40Rfregb imml6#0A16Loads the 16 bit immediate value imml6 into the most significant half of aninteger register and clears the least significant half.IhuEx:Ihu r2,-40+4(r3)Rfregb-0A16#M imml6+R regaTwo bytes of data are
21、 read from the effective address computed by addingsigned integer imml6 and signed integer R rega.The address must be half-wordaligned.The half-word from memory is then zero extended to 32 bits and stored in22register Rfregb.ltdEx:lid f8,f6if(Dfdrega D dregb)fps=1 else fps=0Both are double precision
22、 floats.ItfEx:Itff3,f6if(F frega=Rfregb)R regc-1 else Rfregc-0All are signed integers.sgeiEx:sgei r2,rl,#6if(R rega=imm!6)R regb-1 else Rlregb-0All are signed integers.sgtEx:sgt r4,r5,r6if(R rega Rfregb)R regc-1 else R regc-0All are signed integers.sgtiEx:sgti rl,r2,#-3000if(R rega imml6)R regb-1 el
23、se R regbJ-0All are signed integers.shEx:sh 421(r3),r526M imml6+R rega-1 6 R regb_16.31Two bytes of data from the least significant half of register R regb are writtento the effective address computed by adding signed integer imml6 and unsignedinteger R rega.The effective address must be halfword al
24、igned.sleEx:sle rl,r2,r3if(Rfrega=R regb)R regc-1 else Rfregc-0All are signed integers.sleiEx:slei r8”,#345if(R rega=imml6)R regb-1 else RlregbJ-0All are signed integers.sllEx:sll r6,r7,rl 1R regc-R rega R regb_27.31All are unsigned integers.R rega is logically shifted left by the low five bits ofRf
25、regb.Zeros are shifted into the least-significant bit.slliEx:slli rl,r2,#3Rfregb-Rfrega uimml6_27.31All are unsigned integers.R rega is logically shifted left by the low five bits ofuimml6.Zeros are shifted into the least-significant bit.(Actually only thebottom five bits of R regb are used.)sitEx:s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 实验 指导书
限制150内