计算机系统结构电子教案课2

上传人:s9****2 文档编号:591517790 上传时间:2024-09-18 格式:PPT 页数:45 大小:375KB
返回 下载 相关 举报
计算机系统结构电子教案课2_第1页
第1页 / 共45页
计算机系统结构电子教案课2_第2页
第2页 / 共45页
计算机系统结构电子教案课2_第3页
第3页 / 共45页
计算机系统结构电子教案课2_第4页
第4页 / 共45页
计算机系统结构电子教案课2_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《计算机系统结构电子教案课2》由会员分享,可在线阅读,更多相关《计算机系统结构电子教案课2(45页珍藏版)》请在金锄头文库上搜索。

1、第第2 2章章 指令系统的设计指令系统的设计本章主要内容本章主要内容(1) (1) 指令操作码的优化(不讲)指令操作码的优化(不讲)(2) (2) RISCRISC技术简介技术简介(3) (3) MIPSMIPS指令集指令集(4) (4) MIPSMIPS模拟器(补充)模拟器(补充)2014.2.171计算机系统结构电子教案(课2)2.4.2 2.4.2 RISCRISC技术简介(技术简介(P44P44)名词:名词:RISCReduced Instruction Set ComputingRISCReduced Instruction Set Computing,精简指令集计算机精简指令集计算

2、机(1)(1)RISCRISC产生的背景:产生的背景:20%20%与与80%80%规律规律(2)(2)RISCRISC设计的基本原则:设计的基本原则: 只设置最常用的简单指令,凡遇复杂操作均用多条简单指令实现;只设置最常用的简单指令,凡遇复杂操作均用多条简单指令实现; 指令长度固定,操作码与操作数长度都尽量统一;指令长度固定,操作码与操作数长度都尽量统一; 基本指令的启动时间间隔降低到基本指令的启动时间间隔降低到1 1个时钟周期;个时钟周期; 访问主存只有访问主存只有loadload和和storestore指令,用变址寻址;指令,用变址寻址; 尽量采用硬连逻辑对指令译码;尽量采用硬连逻辑对指令

3、译码; 为了加快执行速度,在编译过程中对目标代码结构进行优化;为了加快执行速度,在编译过程中对目标代码结构进行优化;(3)(3)RISCRISC性能优势的原因性能优势的原因采用采用RISCRISC技术的主要动机是使各条指令的执行时序尽可能一致,技术的主要动机是使各条指令的执行时序尽可能一致,CPUCPU在在执行时间上可以把它们安排得更紧凑,就像许多大小相近的箱子容易被堆执行时间上可以把它们安排得更紧凑,就像许多大小相近的箱子容易被堆放得更密集一样。这样机器内的各种资源可以充分利用,单位时间内能执放得更密集一样。这样机器内的各种资源可以充分利用,单位时间内能执行更多的指令,速度更快。行更多的指令

4、,速度更快。这方面的具体内容,在第这方面的具体内容,在第3 3章讲流水线时会详细介绍。章讲流水线时会详细介绍。2014.2.172计算机系统结构电子教案(课2)2.4.2 2.4.2 RISCRISC技术的发展技术的发展2020世纪世纪7070年代初,年代初,IBMIBM研究中心的研究中心的John CockeJohn Cocke证明,计算机中约证明,计算机中约20%20%的的指令承担了指令承担了80%80%的工作,的工作,19741974年,他提出年,他提出RISCRISC的概念。的概念。在在RISCRISC的早期研究中,加州大学伯克利分校(的早期研究中,加州大学伯克利分校(UC Berke

5、leyUC Berkeley)和斯坦福)和斯坦福大学(大学(StanfordStanford)提出了许多有创见的新思想。伯克利率先在提出了许多有创见的新思想。伯克利率先在19821982年完成年完成了了RISC IRISC I型型3232位芯片的设计,斯坦福大学则在位芯片的设计,斯坦福大学则在John HennessyJohn Hennessy(现任校长)现任校长)带领下于带领下于19831983年完成了第一个采用年完成了第一个采用RISCRISC理念的商用理念的商用MIPSMIPS微处理器微处理器。19841984年年HennessyHennessy等人创建了等人创建了MIPSMIPS计算机

6、公司,计算机公司,19981998年改名为年改名为MIPSMIPS技术技术公司(美普思科技公司,公司(美普思科技公司,MIPS Technologies IncMIPS Technologies Inc),),目前是美国最著名的目前是美国最著名的芯片设计公司之一。芯片设计公司之一。MIPSMIPS技术公司本身不生产微处理器,它只设计高性能技术公司本身不生产微处理器,它只设计高性能工业级的工业级的3232位和位和6464位位CPUCPU的结构体系,并且向其它半导体公司提供使用其内的结构体系,并且向其它半导体公司提供使用其内核(核(IPIP)的授权,用于生产基于的授权,用于生产基于MIPSMIPS

7、而又各具特色的微处理器。而又各具特色的微处理器。19991999年年MIPSMIPS技术公司发布了技术公司发布了MIPS32MIPS32和和MIPS64MIPS64架构标准。架构标准。MIPSMIPS的通用微处理器主要用于构建高性能工作站、服务器和超级计算的通用微处理器主要用于构建高性能工作站、服务器和超级计算机系统,其嵌入式产品在机系统,其嵌入式产品在19991999年以前全球销量第一,目前也仅次于年以前全球销量第一,目前也仅次于ARMARM。2014.2.173计算机系统结构电子教案(课2) MIPS处理器处理器MIPSMIPS的意思是的意思是“无内部互锁流水级的微处理器无内部互锁流水级的

8、微处理器”(Microprocessor Microprocessor without interlocked piped stageswithout interlocked piped stages),),其机制是尽量利用软件办法避免流其机制是尽量利用软件办法避免流水线中的数据相关问题。水线中的数据相关问题。MIPSMIPS具有强大的应用基础,能在具有强大的应用基础,能在MIPSMIPS上运行的操作系统,包括上运行的操作系统,包括LinuxLinux、WindRiverWindRiver、WinCEWinCE、GNUGNU、和和Monta VistaMonta Vista等;支持等;支持14

9、14种编译器,包括种编译器,包括MIPSMIPS、SDESDE、Green HillsGreen Hills、GNUGNU和和WindRiverWindRiver等;支持等;支持1515种调试器,包括种调试器,包括GNUGNU、Green Green HillsHills、WindRiverWindRiver、ASHLINGASHLING和和FS2FS2等;支持等;支持1818种仿真工具,包括种仿真工具,包括Mentor Mentor GraphicsGraphics、SynopsysSynopsys、CoWareCoWare和和CandenceCandence等。等。中国科学院计算所的龙芯中

10、国科学院计算所的龙芯1 1和和2 2都采用都采用6464位位MIPSMIPS指令架构。中国龙芯已与指令架构。中国龙芯已与MIPSMIPS公司合作,购买其指令系统授权,以便批量生产与出口。公司合作,购买其指令系统授权,以便批量生产与出口。2014.2.174计算机系统结构电子教案(课2)2.6.1 MIPS的寄存器(的寄存器(P47) 32 32个个6464位通用寄存器(位通用寄存器(GPRsGPRs),),也称为整数寄存器也称为整数寄存器名称是名称是R0R0,R1R1,R31R31(也可写为也可写为$0$0,$ $1 1,$ $3131)R0R0的值永远是的值永远是0 0,可用作源寄存器,也可

11、作为无用结果的目的寄存器;,可用作源寄存器,也可作为无用结果的目的寄存器;R31R31用于存放跳转并链接类指令的返回地址。用于存放跳转并链接类指令的返回地址。 32 32个个6464位浮点数寄存器(位浮点数寄存器(FPRsFPRs)F0F0,F1F1,F31F31用来存放用来存放3232个单精度浮点数(个单精度浮点数(3232位),也可以用来存放位),也可以用来存放3232个双精度浮个双精度浮点数(点数(6464位)。位)。存储单精度浮点数(存储单精度浮点数(3232位)时,只用到位)时,只用到FPRFPR的一半,其另一半没用。的一半,其另一半没用。 特殊功能寄存器特殊功能寄存器PCPC(pr

12、ogram counterprogram counter,程序计数寄存器)程序计数寄存器)HIHI(整数乘除结果高位寄存器,除法余数)整数乘除结果高位寄存器,除法余数)LOLO(整数乘除结果低位寄存器,除法的商整数乘除结果低位寄存器,除法的商)它们可以与通用寄存器交换数据。它们可以与通用寄存器交换数据。浮点状态寄存器:用来保存有关浮点操作结果的信息。浮点状态寄存器:用来保存有关浮点操作结果的信息。2014.2.175计算机系统结构电子教案(课2)MIPS的寄存器别名(程序员习惯用法)的寄存器别名(程序员习惯用法)MIPSMIPS编译器支持一些专业程序员对编译器支持一些专业程序员对3232个个通

13、用寄存器通用寄存器GPRGPR(GENERAL GENERAL PURPOSE REGISTERPURPOSE REGISTER)约定的习惯性用法(非强制的):约定的习惯性用法(非强制的):REGISTER NAMEREGISTER NAMEUSAGE USAGE $0 $zero$0 $zero常量常量0(0(constant value 0) constant value 0) $2-$3 $v0-$v1$2-$3 $v0-$v1函数调用返回值函数调用返回值( (values for results and values for results and expression evaluat

14、ion) expression evaluation) $4-$7 $a0-$a3$4-$7 $a0-$a3函数调用参数函数调用参数( (arguments) arguments) $8-$15 $t0-$t7$8-$15 $t0-$t7暂时的暂时的( (或随便用的或随便用的) ) $16-$23 $16-$23 $s0-$s7s0-$s7保存的保存的( (或如果用,需要或如果用,需要SAVE/RESTORESAVE/RESTORE的的)()(saved) saved) $24-$25 $t8-$t9$24-$25 $t8-$t9暂时的暂时的( (或随便用的或随便用的) ) $26-$27 $

15、k0-$k1$26-$27 $k0-$k1由操作系统的异常或中断处理程序使用由操作系统的异常或中断处理程序使用 $28 $28 $gpgp全局指针全局指针( (Global Pointer) Global Pointer) $29 $sp$29 $sp堆栈指针堆栈指针( (Stack Pointer) Stack Pointer) $30 $fp$30 $fp帧指针帧指针( (Frame Pointer) Frame Pointer) (BNN(BNN:fp is stale acutally, and can be simply used as $t8) fp is stale acutal

16、ly, and can be simply used as $t8) $31 $ra$31 $ra返回地址返回地址( (return address) return address) 2014.2.176计算机系统结构电子教案(课2)2.6.2 MIPS的数据表示的数据表示整数整数字节(字节(8 8位)位) 半字(半字(1616位)位)字(字(3232位)位) 双字(双字(6464位)位)浮点数浮点数单精度浮点数(单精度浮点数(3232位)位) 双精度浮点数(双精度浮点数(6464位)位) 字节、半字或者字在装入字节、半字或者字在装入6464位寄存器时,用零扩展或者用符号位扩展来填位寄存器时,

17、用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照充该寄存器的剩余部分。装入以后,对它们将按照6464位整数的方式进行运算。位整数的方式进行运算。2014.2.177计算机系统结构电子教案(课2)2.6.3 MIPS的数据寻址方式(的数据寻址方式(P47) 立即数寻址与偏移量寻址;立即数寻址与偏移量寻址;立即数字段和偏移量字段都是立即数字段和偏移量字段都是1616位的。位的。 寄存器间接寻址是通过把寄存器间接寻址是通过把0 0作为偏移量来实现的;作为偏移量来实现的; 16 16位绝对寻址是通过把位绝对寻址是通过把R0R0(其值永远为其值永远为0 0)作为基址寄存器来完成的

18、;)作为基址寄存器来完成的; MIPS MIPS的存储器按字节寻址,地址为的存储器按字节寻址,地址为6464位;位; 所有存储器访问必须是边界对齐的,即访问地址必须是该数据长度(字节所有存储器访问必须是边界对齐的,即访问地址必须是该数据长度(字节数)的整倍数,又叫整数边界原则;数)的整倍数,又叫整数边界原则; MIPS MIPS的存储器按字节编制;的存储器按字节编制; 所有数据字、指令字从最高有效位开始依次标记为所有数据字、指令字从最高有效位开始依次标记为bit 0bit 0、1 1、2 2 ; MIPSMIPS处理器的存储顺序,可以设置为处理器的存储顺序,可以设置为“小端字节表示顺序小端字节

19、表示顺序”( LittileLittile- -EndianEndian,低位字节放在低地址低位字节放在低地址)或者或者“大端字节表示顺序大端字节表示顺序”(Big-Big-EndianEndian,高位字节放在低地址,以便适合网络数据包内顺序高位字节放在低地址,以便适合网络数据包内顺序)。)。在下文使用的在下文使用的MIPS64MIPS64模拟器中采用模拟器中采用“小端字节表示顺序小端字节表示顺序”。2014.2.178计算机系统结构电子教案(课2)2.6.4 MIPS指令格式(指令格式(P48) MIPS32 MIPS32和和MIPS64MIPS64体系结构定义了兼容的体系结构定义了兼容的

20、3232位和位和6464位处理机指令位处理机指令 使用条件编译或宏汇编指令能写出可同时在使用条件编译或宏汇编指令能写出可同时在MIPS32MIPS32和和MIPS64MIPS64上运行的程序上运行的程序 寻址方式编码到操作码中寻址方式编码到操作码中 所有的指令都是所有的指令都是3232位的位的 操作码占操作码占6 6位位 3 3种指令格式(种指令格式(3种格式中,同名字段的位置固定不变)种格式中,同名字段的位置固定不变)2014.2.179计算机系统结构电子教案(课2)2.6.4 MIPS指令格式指令格式II类指令类指令 包括所有的包括所有的loadload和和storestore指令,立即数

21、指令,分支指令,寄存器跳转指令,指令,立即数指令,分支指令,寄存器跳转指令,寄存器链接跳转指令。寄存器链接跳转指令。 立即数字段为立即数字段为1616位,用于提供立即数或偏移量。位,用于提供立即数或偏移量。 load load指令指令 访存有效地址:访存有效地址:RegsRegs rsrs immediateimmediate 从存储器取来的数据放入寄存器从存储器取来的数据放入寄存器rtrt storestore指令指令 访存有效地址:访存有效地址:RegsRegs rsrs immediateimmediate 要存入存储器的数据放在寄存器要存入存储器的数据放在寄存器rtrt中中 立即数指令

22、立即数指令 RegsRegs rtrt RegsRegs rsrs op immediate op immediate 分支指令分支指令 转移目标地址:转移目标地址:RegsRegs rsrs immediateimmediate,rtrt无用无用 寄存器跳转、寄存器跳转并链接寄存器跳转、寄存器跳转并链接 转移目标地址为转移目标地址为RegsRegs rsrs 2014.2.1710计算机系统结构电子教案(课2)2.6.4 MIPS指令格式指令格式RR类指令类指令 包括包括ALUALU指令,专用寄存器读指令,专用寄存器读/ /写指令,写指令,movemove指令等。指令等。 ALU ALU指令

23、指令 RegsRegsrd rd RegsRegs rsrs funct Regsfunct Regs rtrt functfunct为具体的运算操作编码为具体的运算操作编码2014.2.1711计算机系统结构电子教案(课2)2.6.4 MIPS指令格式指令格式JJ类指令类指令 包括跳转指令,跳转并链接指令,自陷指令,异常返回指令。包括跳转指令,跳转并链接指令,自陷指令,异常返回指令。 在这类指令中,指令字的低在这类指令中,指令字的低2626位是偏移量,它与位是偏移量,它与PCPC值相加形成跳转的地址。值相加形成跳转的地址。2014.2.1712计算机系统结构电子教案(课2)2.6.5 MIP

24、S的操作(的操作(P49) MIPS MIPS指令可以分为四大类指令可以分为四大类 load load和和storestore ALU ALU操作操作 分支与跳转分支与跳转 浮点操作浮点操作 符号的意义符号的意义 xxn ny y:从从y y传送传送n n位到位到x xx x,yzyz:把把z z传送到传送到x x和和y y下标:表示字段中具体的位;下标:表示字段中具体的位; 对于指令和数据,按从最高位到最低位(即从左到右)的顺序依对于指令和数据,按从最高位到最低位(即从左到右)的顺序依次进行编号,最高位为第次进行编号,最高位为第0 0位,次高位为第位,次高位为第1 1位,依此类推。位,依此类

25、推。 下标可以是一个数字,也可以是一个范围。下标可以是一个数字,也可以是一个范围。例如:例如:RegsRegsR4R40 0:寄存器寄存器R4R4的符号位的符号位 RegsRegsR4R456-6356-63:R4R4的最低字节的最低字节 2014.2.1713计算机系统结构电子教案(课2)2.6.5 MIPS的操作(续的操作(续)MemMem:表示主存;表示主存; 按字节寻址,可以传输任意个字节。按字节寻址,可以传输任意个字节。上标:用于表示对字段进行复制的次数。上标:用于表示对字段进行复制的次数。例如:例如:0 03232表示一个表示一个3232位长的全位长的全0 0字段字段符号符号#:用

26、于两个字段的拼接,并且可以出现在数据传送的任何一边。:用于两个字段的拼接,并且可以出现在数据传送的任何一边。举例举例:R8R8、R6R6是是6464位的寄存器,下式位的寄存器,下式RegsRegsR8R832-6332-63 3232(MemMem RegsRegsR6R60 0)2424 # # MemMem RegsRegsR6R6表示的意义是:以表示的意义是:以R6R6的内容作为地址访问内存,得到的字节按符号位扩展为的内容作为地址访问内存,得到的字节按符号位扩展为3232位后存入位后存入R8R8的低的低3232位,位,R8R8的高的高3232位(即位(即RegsRegsR80-31R80

27、-31)不变。不变。2014.2.1714计算机系统结构电子教案(课2) load和和store指令指令指令举例指令举例 指令名称指令名称 含含 义义 LD R2LD R2,20(R3) 20(R3) 装入双字装入双字 RegsR2RegsR264 64 Mem20+RegsR3 Mem20+RegsR3 LW R2LW R2,40(R3) 40(R3) 装入字装入字 RegsR2RegsR264 64 (Mem40+RegsR3(Mem40+RegsR30 0) )32 32 # # Mem40+RegsR3 Mem40+RegsR3 LB R2LB R2,30(R3) 30(R3) 装入字

28、节装入字节 RegsR2RegsR264 64 (Mem30+RegsR3(Mem30+RegsR30 0) )5656 # # Mem30+RegsR3 Mem30+RegsR3 LBU R2LBU R2,40(R3) 40(R3) 装入无符号字节装入无符号字节 RegsR2RegsR264 64 0 05656 # Mem40+RegsR3 # Mem40+RegsR3 LH R2LH R2,30(R3) 30(R3) 装入半字装入半字 RegsR2RegsR264 64 (Mem30+RegsR3(Mem30+RegsR30 0) )4848 # #Mem30+RegsR3# Mem31

29、+RegsR3 Mem30+RegsR3# Mem31+RegsR3 L.S F2L.S F2,60(R4) 60(R4) 装入单精度浮点数装入单精度浮点数RegsF2RegsF264 64 Mem60+RegsR4 # 0Mem60+RegsR4 # 032 32 L.D F2L.D F2,40(R3) 40(R3) 装入双精度浮点数装入双精度浮点数 RegsF2RegsF26464 Mem40+RegsR3 Mem40+RegsR3 SD R4SD R4,300(R5) 300(R5) 保存双字保存双字 Mem300+RegsR5Mem300+RegsR564 64 RegsR4 Regs

30、R4 SW R4SW R4,300(R5) 300(R5) 保存字保存字 Mem300+RegsR5Mem300+RegsR53232 RegsR4 RegsR4 S.S F2S.S F2,40(R2) 40(R2) 保存单精度浮点数保存单精度浮点数Mem40+RegsR2Mem40+RegsR232 32 RegsF2 RegsF2 031031 SH R5SH R5,502(R4)502(R4)保存半字保存半字Mem502+RegsR4Mem502+RegsR41616 RegsR5 RegsR5 48.6348.63 2014.2.1715计算机系统结构电子教案(课2) ALU指令指令

31、寄存器寄存器型(寄存器寄存器型(RRRR型)指令或立即数型型)指令或立即数型 算术和逻辑操作:加、减、与、或、异或和移位等算术和逻辑操作:加、减、与、或、异或和移位等 R0 R0的值永远是的值永远是0 0,它可以用来合成一些常用的操作。,它可以用来合成一些常用的操作。例如:例如:DADDIU R1DADDIU R1,R0R0,#100 #100 给寄存器给寄存器R1R1装入常数装入常数100100 DADD R1 DADD R1,R0R0,R2 R2 把寄存器把寄存器R2R2中的数据传送到寄存器中的数据传送到寄存器R1R1指令举例指令举例 指令名称指令名称 含义含义 DADDUDADDUR1R

32、1,R2R2,R3 R3 无符号加无符号加 RegsR1 RegsR2+ RegsR3 RegsR1 RegsR2+ RegsR3 DADDIU DADDIU R4R4,R5R5,#6 #6 加无符号立即数加无符号立即数 RegsR4 RegsR5+6 RegsR4 RegsR5+6 LUILUIR1R1,#4 #4 把立即数装入到一个字把立即数装入到一个字的高的高1616位位 RegsR1 0RegsR1 03232 # 4 # 0 # 4 # 01616DSLLDSLLR1R1,R2R2,#5 #5 逻辑左移逻辑左移 RegsR1 RegsR25 RegsR1 RegsR25 DSLT R

33、1DSLT R1,R2R2,R3 R3 置小于置小于 If(RegsR2 RegsR3)If(RegsR2 RegsR3)RegsR1 1 else RegsR10 RegsR1 1 else RegsR10 2014.2.1716计算机系统结构电子教案(课2)2.6.6 MIPS的控制指令(的控制指令(P50) 由一组跳转和一组分支指令来实现控制流的改变由一组跳转和一组分支指令来实现控制流的改变 典型的典型的MIPSMIPS控制指令控制指令指令举例指令举例 指令名称指令名称 含义含义 J name J name 跳转跳转 PC PC 36633663 name2 name2JAL name

34、JAL name 跳转并链接跳转并链接 RegsR31PC+4RegsR31PC+4;PC PC 36633663namename22;(PC+4)(PC+4)2 22727)name)name(PC+4)+2(PC+4)+22727) ) JALR R3 JALR R3 寄存器跳转并链接寄存器跳转并链接 RegsR31PC+4RegsR31PC+4;PC RegsR3 PC RegsR3 JR R5 JR R5 寄存器跳转寄存器跳转 PC RegsR5 PC RegsR5 BEQZ R4BEQZ R4,name name 等于零时分支等于零时分支 if(RegsR4= 0) PCname i

35、f(RegsR4= 0) PCname ;(PC+4)(PC+4)2 21717)name)name(PC+4)+2(PC+4)+21717) ) BNE R3BNE R3,R4R4,name name 不相等时分支不相等时分支 if(RegsR3!= RegsR4) PCnameif(RegsR3!= RegsR4) PCname(PC+4)(PC+4)2 21717)name)name(PC+4)+2(PC+4)+21717) ) MOVZ R1MOVZ R1,R2R2,R3 R3 等于零时移动等于零时移动 if(RegsR3=0) RegsR1if(RegsR3=0) RegsR1 Re

36、gsR2 RegsR2 2014.2.1717计算机系统结构电子教案(课2) 跳转指令跳转指令根据跳转指令确定目标地址的方式不同以及跳转时是否链接,可以把跳根据跳转指令确定目标地址的方式不同以及跳转时是否链接,可以把跳转指令分成转指令分成4 4种。种。确定目标地址的方式确定目标地址的方式 把指令中的把指令中的2626位偏移量左移位偏移量左移2 2位(因为指令字长都是位(因为指令字长都是4 4个字节)后,个字节)后,替换程序计数器的低替换程序计数器的低2828位;位; 间接跳转:由指令中指定的一个寄存器来给出转移目标地址。间接跳转:由指令中指定的一个寄存器来给出转移目标地址。跳转的两种类型跳转的

37、两种类型 简单跳转:把目标地址送入程序计数器。简单跳转:把目标地址送入程序计数器。 跳转并链接:把目标地址送入程序计数器,把返回地址(即顺序下跳转并链接:把目标地址送入程序计数器,把返回地址(即顺序下一条指令的地址)放入寄存器一条指令的地址)放入寄存器R31R31。2014.2.1718计算机系统结构电子教案(课2) 分支指令(条件转移)分支指令(条件转移)分支条件由指令确定分支条件由指令确定例如:测试某个寄存器的值是否为零例如:测试某个寄存器的值是否为零提供一组比较指令,用于比较两个寄存器的值。提供一组比较指令,用于比较两个寄存器的值。例如:例如:“置小于置小于”指令指令有的分支指令可以直接

38、判断寄存器内容是否为负,或者比较两个寄存器有的分支指令可以直接判断寄存器内容是否为负,或者比较两个寄存器是否相等。是否相等。分支的目标地址分支的目标地址由由1616位带符号偏移量左移两位后和位带符号偏移量左移两位后和PCPC相加的结果来决定相加的结果来决定一条浮点条件分支指令:通过测试浮点状态寄存器来决定是否进行分支。一条浮点条件分支指令:通过测试浮点状态寄存器来决定是否进行分支。2014.2.1719计算机系统结构电子教案(课2)2.6.7 MIPS的浮点操作(的浮点操作(P51) 由操作码指出操作数是单精度(由操作码指出操作数是单精度(SPSP)或双精度(或双精度(DPDP)后缀后缀S S

39、:表示操作数是单精度浮点数表示操作数是单精度浮点数后缀后缀D D:表示是双精度浮点数表示是双精度浮点数 浮点操作浮点操作包括加、减、乘、除,分别有单精度和双精度指令。包括加、减、乘、除,分别有单精度和双精度指令。 浮点数比较指令浮点数比较指令根据比较结果设置浮点状态寄存器中的某一位,以便于后面的分支指根据比较结果设置浮点状态寄存器中的某一位,以便于后面的分支指令令BC1TBC1T(若真则分支)或若真则分支)或BC1FBC1F(若假则分支)测试该位,以决定是否进若假则分支)测试该位,以决定是否进行分支。行分支。2014.2.1720计算机系统结构电子教案(课2)注意浮点数的存储格式只有注意浮点数

40、的存储格式只有64位双精度这一种,没有位双精度这一种,没有32位单精度数。位单精度数。MIPS64伪指令伪指令2014.2.1721计算机系统结构电子教案(课2)MIPS64指令集指令集12014.2.1722计算机系统结构电子教案(课2)MIPS64指令集指令集22014.2.1723计算机系统结构电子教案(课2)MIPS64指令集指令集32014.2.1724计算机系统结构电子教案(课2)MIPS64指令集指令集42014.2.1725计算机系统结构电子教案(课2)MIPS64指令集指令集52014.2.1726计算机系统结构电子教案(课2)MIPS64指令集指令集62014.2.1727

41、计算机系统结构电子教案(课2)MIPS64模拟器介绍模拟器介绍12014.2.1728计算机系统结构电子教案(课2)MIPS64模拟器介绍模拟器介绍22014.2.1729计算机系统结构电子教案(课2)MIPS64模拟器介绍模拟器介绍32014.2.1730计算机系统结构电子教案(课2)MIPS64模拟器的存储器映射模拟器的存储器映射I/O地址与命令地址与命令CONTROL: .word32 0x10000CONTROL: .word32 0x10000; ;控制寄存器(映射地址)控制寄存器(映射地址)DATA: .word32 0x10008DATA: .word32 0x10008; ;数

42、据寄存器(映射地址)数据寄存器(映射地址)Set CONTROL = 1, Set CONTROL = 1, 将将DATADATA作为无符号整型数输出作为无符号整型数输出Set CONTROL = 2, Set CONTROL = 2, 将将DATADATA作为有符号整型数输出作为有符号整型数输出Set CONTROL = 3, Set CONTROL = 3, 将将DATADATA作为浮点数输出作为浮点数输出Set CONTROL = 4, Set CONTROL = 4, 将将DATADATA作为输出字串的首地址作为输出字串的首地址Set CONTROL = 5, Set CONTROL

43、= 5, 将将DATA+5 DATA+5 作为作为x x坐标,坐标,DATA+4DATA+4作为作为y y坐标,坐标,DATADATA作为作为RGBRGB彩色值输出彩色值输出Set CONTROL = 6, Set CONTROL = 6, 清除终端屏幕清除终端屏幕Set CONTROL = 7, Set CONTROL = 7, 清除图形屏幕清除图形屏幕Set CONTROL = 8, Set CONTROL = 8, 从键盘读从键盘读DATADATA(整型数或浮点数)整型数或浮点数)Set CONTROL = 9, Set CONTROL = 9, 从从DATADATA读读1 1字节,无字

44、符回显字节,无字符回显数据地址数据地址0 0x00000x00000程序存储器程序存储器程序起点程序起点lwu r24,DATA(r0)lwu r24,DATA(r0)lwu r25,CONTROL(r0)lwu r25,CONTROL(r0)指令地址指令地址0 0x00000x00000数据存储器数据存储器常规数据区常规数据区0 0x10000x100000 0x10008x10008sd r9,0(r24)sd r9,0(r24)sd r2,0(r25)sd r2,0(r25)控制寄存器控制寄存器数据寄存器数据寄存器仿真非智能终端仿真非智能终端2014.2.1731计算机系统结构电子教案(

45、课2)MIPS64模拟器演示实验模拟器演示实验1 整数加法整数加法文件名:文件名:sum.s .dataA: .word 10B: .word 8C: .word 0 .textmain: ld r4,A(r0);r4(A) ld r5,B(r0);r5(B) dadd r3,r4,r5;r3r4+r5 sd r3,C(r0);Cr3 halt2014.2.1732计算机系统结构电子教案(课2)MIPS64模拟器演示实验模拟器演示实验2 阶乘阶乘1 1文件名:文件名:factorial.s; 阶乘示例阶乘示例; 返回值放返回值放r10;.datanumber: .word 10;此数未用,可能

46、想作为输入值的上限此数未用,可能想作为输入值的上限title: .asciiz “factorial program n= “;提示字符串提示字符串CONTROL: .word32 0x10000DATA: .word32 0x10008 .text lwu r21,CONTROL(r0);r21指向指向CONTROL单元(端口)单元(端口) lwu r22,DATA(r0);r22指向指向DATA单元(端口)单元(端口)2014.2.1733计算机系统结构电子教案(课2)MIPS64模拟器演示实验模拟器演示实验2 阶乘阶乘2 2 daddi r24,r0,4;输出输出ascii字串(提示信息

47、)字串(提示信息) daddi r1,r0,title sd r1,(r22) sd r24,(r21) daddi r24,r0,8;从键盘读输入值到从键盘读输入值到r1(整型量)整型量) sd r24,(r21) ld r1,(r22)start: daddi r29,r0,0x80 ;r29指向堆栈区起点(十进制值指向堆栈区起点(十进制值=128) jal factorial;调阶乘子程序,返回值在调阶乘子程序,返回值在r10(整型量)整型量) daddi r24,r0,1;输出输出r10的结果的结果 sd r10,(r22) sd r24,(r21) halt;停机停机2014.2.1

48、734计算机系统结构电子教案(课2)MIPS64模拟器演示实验模拟器演示实验2 阶乘阶乘3 3;阶乘子程序,入口参数在阶乘子程序,入口参数在r1,返回值在返回值在r10;factorial: slti r10,r1,2;如果如果r12(即即r1=1)则则r101,否则否则r100 bnez r10,out ;如果如果r10=1则子程序返回则子程序返回 sd r31,(r29);子程序返回地址压进堆栈子程序返回地址压进堆栈 daddi r29,r29,8;堆栈指针堆栈指针+8 sd r1,(r29);r1当前值压进堆栈当前值压进堆栈 daddi r29,r29,8;堆栈指针堆栈指针+8 dadd

49、i r1,r1,-1;r1r11 jal factorial;递归调用,将乘数序列依次入栈(递归调用,将乘数序列依次入栈(n,3,2)2014.2.1735计算机系统结构电子教案(课2)MIPS64模拟器演示实验模拟器演示实验2 阶乘阶乘4 4 dadd r4,r0,r10;递归出口(首次递归出口(首次r10=1),),r4r10 daddi r29,r29,-8;堆栈指针堆栈指针8 ld r3,(r29);出栈:出栈:r3栈顶单元栈顶单元 dmulu r3,r3,r4;r3r3r4 dadd r10,r0,r3;r10乘积乘积r3 daddi r29,r29,-8;堆栈指针堆栈指针8 ld

50、r31,0(r29);r31返回地址返回地址out: jr r31;子程序返回到子程序返回到r31所指的地址所指的地址2014.2.1736计算机系统结构电子教案(课2)MIPS64模拟器演示实验模拟器演示实验3 存储器映射输出存储器映射输出文件名:文件名:output.soutput.s . .datadataA:A:.word 10.word 10B:B:.word 8.word 8C:C:.word 0.word 0CR:CR:.word32 0x10000.word32 0x10000DR:DR:.word32 0x10008.word32 0x10008.text.textmain:

51、main:ld r4,A(r0)ld r4,A(r0);r4(A);r4(A)ld r5,B(r0)ld r5,B(r0);r5(B);r5(B)dadd r3,r4,r5dadd r3,r4,r5 ;r3r4+r5;r3r4+r5sd r3,C(r0)sd r3,C(r0);Cr3;Cr3lwu r1,CR(r0)lwu r1,CR(r0) ;r1;r1指向指向ControlControl寄存器寄存器lwu r2,DR(r0)lwu r2,DR(r0) ;r2;r2指向指向DataData寄存器寄存器daddi r10,r0,1daddi r10,r0,1 ; ;准备命令准备命令1 1(将(

52、将DATADATA作为无符号整型数输出)作为无符号整型数输出)sd r3,(r2)sd r3,(r2);Data;Data寄存器寄存器r3r3sd r10,(r1)sd r10,(r1);Control;Control寄存器寄存器11halthalt2014.2.1737计算机系统结构电子教案(课2)MIPS64模拟器演示实验模拟器演示实验4存储器映射输入存储器映射输入/输出输出数据地址数据地址0 0x00000x00000程序存储器程序存储器程序起点程序起点lwu r24,DATA(r0)lwu r24,DATA(r0)lwu r25,CONTROL(r0)lwu r25,CONTROL(r

53、0)指令地址指令地址0 0x00000x00000数据存储器数据存储器常规数据区常规数据区0 0x10000x100000 0x10008x10008sd r9,0(r24)sd r9,0(r24)sd r2,0(r25)sd r2,0(r25)控制寄存器控制寄存器数据寄存器数据寄存器仿真非智能终端仿真非智能终端文件名:文件名:testio.s向虚拟终端输出字符串(命令向虚拟终端输出字符串(命令4)、画线、画彩色点(命令)、画线、画彩色点(命令5)。)。CONTROL: .word32 0x10000DATA: .word32 0x10008 .text lwu $t8,DATA($zero)

54、; $t8 = address of DATA register lwu $t9,CONTROL($zero) ; $t9 = address of CONTROL register daddi $v0,$zero,1; set for unsigned integer output ld $t1,int($zero) sd $t1,0($t8) ; write integer to DATA register sd $v0,0($t9) ; write to CONTROL register and make it happen daddi $v0,$zero,2; set for sign

55、ed integer output ld $t1,int($zero) sd $t1,0($t8) ; write integer to DATA register sd $v0,0($t9) ; write to CONTROL register and make it happen2014.2.1738计算机系统结构电子教案(课2)习题习题2.142.14(补充,(补充,MIPS64MIPS64指令系统练习)指令系统练习)人工模拟以下人工模拟以下MIPSMIPS程序的单条指令运行方式,在表中用程序的单条指令运行方式,在表中用1616进制编码记录进制编码记录每一步产生的结果(不得借助模拟软件

56、)。每一步产生的结果(不得借助模拟软件)。 . .datadatan: .word 3n: .word 3x: .double 0.5 x: .double 0.5 .text .text LD R1, n(R0) LD R1, n(R0) L.D F0, x(R0) L.D F0, x(R0) DADDI R2, R0, 1 ; R2 1 DADDI R2, R0, 1 ; R2 1 MTC1 R2, F11 ; F11 1 MTC1 R2, F11 ; F11 1 CVT.D.L F2, F11 ; F2 1 CVT.D.L F2, F11 ; F2 1loop: MUL.D F2, F2

57、, F0 ; F2 F2*F0loop: MUL.D F2, F2, F0 ; F2 F2*F0 DADDI R1, R1, -1 ; decrement R1 by 1 DADDI R1, R1, -1 ; decrement R1 by 1 BNEZ R1, loop ; if R10 continue BNEZ R1, loop ; if R10 continue HALT ; HALT ; 此条不填表此条不填表提示:提示:MIPSMIPS浮点数的格式是浮点数的格式是IEEE754IEEE7542014.2.1739计算机系统结构电子教案(课2)习题习题2.142.14(补充)续(补充)

58、续2014.2.1740计算机系统结构电子教案(课2)实验实验1 1:WinMIPS64WinMIPS64模拟器练习模拟器练习实验要求:用实验要求:用MIPS64MIPS64指令编写一个尽可能短小的程序,将事先存放在数指令编写一个尽可能短小的程序,将事先存放在数据区的据区的4 4字节字符串(例如字节字符串(例如“3901”“3901”)转换为一个)转换为一个4 4位位BCDBCD整数,赋给整数,赋给R9R9。在在WinMIPS64WinMIPS64模拟器调试通过。模拟器调试通过。实验报告:实验报告:(1) (1) 程序清单;程序清单;(2) (2) 运行结果(每轮循环末尾运行结果(每轮循环末尾

59、R9R9的数值,高位的的数值,高位的0 0可以不写)可以不写)(3) (3) 程序效率程序效率2014.2.1741计算机系统结构电子教案(课2)IEEE 754浮点数标准(补充)浮点数标准(补充) 目前国际上流行的浮点数标准是目前国际上流行的浮点数标准是IEEE 754IEEE 754,其基本组成是其基本组成是3232bitbit单精度、单精度、6464bitbit双精度两种类型。双精度两种类型。 IEEE 754 IEEE 754标准的主要起草者是加州大学伯克利分校数学系教授标准的主要起草者是加州大学伯克利分校数学系教授William William KahanKahan,他帮助他帮助In

60、telIntel公司设计了公司设计了80878087浮点处理器(浮点处理器(FPUFPU),),并以此为基础形成并以此为基础形成了了IEEE 754IEEE 754标准,标准,KahanKahan教授也因此获得了教授也因此获得了19871987年的图灵奖。目前几乎所有包年的图灵奖。目前几乎所有包含浮点运算的处理机都宣称支持含浮点运算的处理机都宣称支持IEEE 754IEEE 754标准,包括标准,包括IntelIntel公司的公司的PentiumPentium、中国的中国的“龙芯龙芯”。 IEEE 754 IEEE 754的标准文件是的标准文件是ANSI/IEEE Std 754-1985AN

61、SI/IEEE Std 754-1985IEEE Standard for IEEE Standard for Binary Floating-Point ArithmeticBinary Floating-Point Arithmetic,通过通过GoogleGoogle可搜到可搜到pdfpdf文件下载。文件下载。 Kahan Kahan教授的主页:教授的主页:。2014.2.1742计算机系统结构电子教案(课2) 在在IEEE 754IEEE 754浮点数国际标准中,浮点数国际标准中,3232位单精度浮点数和位单精度浮点数和6464位双精度浮点数位双精度浮点数的格式分别如下:的格式分别如下

62、: 对于单精度浮点数,阶码用移对于单精度浮点数,阶码用移-127-127码表示,即阶码的码表示,即阶码的0 0255255分别表示阶分别表示阶码的真值为码的真值为-127-127128128。尾数(原码)用。尾数(原码)用1 1位符号位、位符号位、2323位小数和位小数和1 1位隐藏的位隐藏的整数共整数共2525位表示。尾数的基值和阶码的基值都是位表示。尾数的基值和阶码的基值都是2 2。 当当0e2550e255时,表示一个非零的规格化浮点数,数值为:时,表示一个非零的规格化浮点数,数值为:N N=(-1)=(-1)s s22e-127e-127(1.m)(1.m)IEEE 754浮点数标准(

63、续浮点数标准(续1)2014.2.1743计算机系统结构电子教案(课2)IEEE 754浮点数标准(续浮点数标准(续2) 当当e=255e=255,且且m m0 0时,表示一个非数时,表示一个非数NaN(Not-a-Number)NaN(Not-a-Number)。NaNNaN可能是在可能是在许多非确定的情况下,如零除以零、求负数的平方根等产生的结果。许多非确定的情况下,如零除以零、求负数的平方根等产生的结果。 当当e=255e=255,且且m=0m=0时,表示一个无穷数:时,表示一个无穷数:N=N=(-1)(-1)s s。注意。注意+和和-的表的表示是不同的。示是不同的。 当当e=0e=0,

64、且且m m0 0时,表示规格化浮点数:时,表示规格化浮点数:N=(-1)N=(-1)s s22-126-126(0.m)(0.m)。 当当e=0e=0,且且m=0m=0时,表示浮点数零:时,表示浮点数零:N=(-1)N=(-1)s s00。注意。注意+0+0与与-0-0的表示是不的表示是不同的。同的。 对于对于6464位双精度浮点数,阶码用移位双精度浮点数,阶码用移-1023-1023码表示,其他规定与单精度浮码表示,其他规定与单精度浮点数类似。点数类似。2014.2.1744计算机系统结构电子教案(课2)各次作业应交的内容各次作业应交的内容作业作业2 2(第(第2 2次课)次课)2.14(2.14(补充补充) ),实验,实验1 12014.2.1745计算机系统结构电子教案(课2)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号