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

上传人:仙*** 文档编号:149873712 上传时间:2022-09-08 格式:PPT 页数:44 大小:306.50KB
返回 下载 相关 举报
计算机系统结构电子教案课_第1页
第1页 / 共44页
计算机系统结构电子教案课_第2页
第2页 / 共44页
计算机系统结构电子教案课_第3页
第3页 / 共44页
点击查看更多>>
资源描述
2014.2.17计算机系统结构电子教案课1第第2 2章章 指令系统的设计指令系统的设计本章主要内容本章主要内容(1)(1)指令操作码的优化(不讲)指令操作码的优化(不讲)(2)(2)RISCRISC技术简介技术简介(3)(3)MIPSMIPS指令集指令集(4)(4)MIPSMIPS模拟器(补充)模拟器(补充)2014.2.17计算机系统结构电子教案课22.4.2 2.4.2 RISCRISC技术简介(技术简介(P44P44)名词:名词:RISCRISCReduced Instruction Set ComputingReduced Instruction Set Computing,精简指令集计算机精简指令集计算机(1)(1)RISCRISC产生的背景:产生的背景:20%20%与与80%80%规律规律(2)(2)RISCRISC设计的基本原则:设计的基本原则:只设置最常用的简单指令,凡遇复杂操作均用多条简单指令实现;只设置最常用的简单指令,凡遇复杂操作均用多条简单指令实现;指令长度固定,操作码与操作数长度都尽量统一;指令长度固定,操作码与操作数长度都尽量统一;基本指令的启动时间间隔降低到基本指令的启动时间间隔降低到1 1个时钟周期;个时钟周期;访问主存只有访问主存只有loadload和和storestore指令,用变址寻址;指令,用变址寻址;尽量采用硬连逻辑对指令译码;尽量采用硬连逻辑对指令译码;为了加快执行速度,在编译过程中对目标代码结构进行优化;为了加快执行速度,在编译过程中对目标代码结构进行优化;(3)(3)RISCRISC性能优势的原因性能优势的原因采用采用RISCRISC技术的主要动机是使各条指令的执行时序尽可能一致,技术的主要动机是使各条指令的执行时序尽可能一致,CPUCPU在在执行时间上可以把它们安排得更紧凑,就像许多大小相近的箱子容易被堆执行时间上可以把它们安排得更紧凑,就像许多大小相近的箱子容易被堆放得更密集一样。这样机器内的各种资源可以充分利用,单位时间内能执放得更密集一样。这样机器内的各种资源可以充分利用,单位时间内能执行更多的指令,速度更快。行更多的指令,速度更快。这方面的具体内容,在第这方面的具体内容,在第3 3章讲流水线时会详细介绍。章讲流水线时会详细介绍。2014.2.17计算机系统结构电子教案课32.4.2 2.4.2 RISCRISC技术的发展技术的发展2020世纪世纪7070年代初,年代初,IBMIBM研究中心的研究中心的John CockeJohn Cocke证明,计算机中约证明,计算机中约20%20%的的指令承担了指令承担了80%80%的工作,的工作,19741974年,他提出年,他提出RISCRISC的概念。的概念。在在RISCRISC的早期研究中,加州大学伯克利分校(的早期研究中,加州大学伯克利分校(UC BerkeleyUC Berkeley)和斯坦福)和斯坦福大学(大学(StanfordStanford)提出了许多有创见的新思想。伯克利率先在提出了许多有创见的新思想。伯克利率先在19821982年完成年完成了了RISC IRISC I型型3232位芯片的设计,斯坦福大学则在位芯片的设计,斯坦福大学则在John HennessyJohn Hennessy(现任校长)现任校长)带领下于带领下于19831983年完成了第一个采用年完成了第一个采用RISCRISC理念的商用理念的商用MIPSMIPS微处理器微处理器。19841984年年HennessyHennessy等人创建了等人创建了MIPSMIPS计算机公司,计算机公司,19981998年改名为年改名为MIPSMIPS技术技术公司(美普思科技公司,公司(美普思科技公司,MIPS Technologies IncMIPS Technologies Inc),),目前是美国最著名的目前是美国最著名的芯片设计公司之一。芯片设计公司之一。MIPSMIPS技术公司本身不生产微处理器,它只设计高性能技术公司本身不生产微处理器,它只设计高性能工业级的工业级的3232位和位和6464位位CPUCPU的结构体系,并且向其它半导体公司提供使用其内的结构体系,并且向其它半导体公司提供使用其内核(核(IPIP)的授权,用于生产基于的授权,用于生产基于MIPSMIPS而又各具特色的微处理器。而又各具特色的微处理器。19991999年年MIPSMIPS技术公司发布了技术公司发布了MIPS32MIPS32和和MIPS64MIPS64架构标准。架构标准。MIPSMIPS的通用微处理器主要用于构建高性能工作站、服务器和超级计算的通用微处理器主要用于构建高性能工作站、服务器和超级计算机系统,其嵌入式产品在机系统,其嵌入式产品在19991999年以前全球销量第一,目前也仅次于年以前全球销量第一,目前也仅次于ARMARM。2014.2.17计算机系统结构电子教案课4 MIPS处理器处理器MIPSMIPS的意思是的意思是“无内部互锁流水级的微处理器无内部互锁流水级的微处理器”(Microprocessor Microprocessor without interlocked piped stageswithout interlocked piped stages),),其机制是尽量利用软件办法避免流其机制是尽量利用软件办法避免流水线中的数据相关问题。水线中的数据相关问题。MIPSMIPS具有强大的应用基础,能在具有强大的应用基础,能在MIPSMIPS上运行的操作系统,包括上运行的操作系统,包括LinuxLinux、WindRiverWindRiver、WinCEWinCE、GNUGNU、和和Monta VistaMonta Vista等;支持等;支持1414种编译器,包括种编译器,包括MIPSMIPS、SDESDE、Green HillsGreen Hills、GNUGNU和和WindRiverWindRiver等;支持等;支持1515种调试器,包括种调试器,包括GNUGNU、Green Green HillsHills、WindRiverWindRiver、ASHLINGASHLING和和FS2FS2等;支持等;支持1818种仿真工具,包括种仿真工具,包括Mentor Mentor GraphicsGraphics、SynopsysSynopsys、CoWareCoWare和和CandenceCandence等。等。中国科学院计算所的龙芯中国科学院计算所的龙芯1 1和和2 2都采用都采用6464位位MIPSMIPS指令架构。中国龙芯已与指令架构。中国龙芯已与MIPSMIPS公司合作,购买其指令系统授权,以便批量生产与出口。公司合作,购买其指令系统授权,以便批量生产与出口。2014.2.17计算机系统结构电子教案课52.6.1 MIPS的寄存器(的寄存器(P47)32 32个个6464位通用寄存器(位通用寄存器(GPRsGPRs),),也称为整数寄存器也称为整数寄存器名称是名称是R0R0,R1R1,R31R31(也可写为也可写为$0$0,$1 1,$3131)R0R0的值永远是的值永远是0 0,可用作源寄存器,也可作为无用结果的目的寄存器;,可用作源寄存器,也可作为无用结果的目的寄存器;R31R31用于存放跳转并链接类指令的返回地址。用于存放跳转并链接类指令的返回地址。32 32个个6464位浮点数寄存器(位浮点数寄存器(FPRsFPRs)F0F0,F1F1,F31F31用来存放用来存放3232个单精度浮点数(个单精度浮点数(3232位),也可以用来存放位),也可以用来存放3232个双精度浮个双精度浮点数(点数(6464位)。位)。存储单精度浮点数(存储单精度浮点数(3232位)时,只用到位)时,只用到FPRFPR的一半,其另一半没用。的一半,其另一半没用。特殊功能寄存器特殊功能寄存器PCPC(program counterprogram counter,程序计数寄存器)程序计数寄存器)HIHI(整数乘除结果高位寄存器,除法余数)整数乘除结果高位寄存器,除法余数)LOLO(整数乘除结果低位寄存器,除法的商整数乘除结果低位寄存器,除法的商)它们可以与通用寄存器交换数据。它们可以与通用寄存器交换数据。浮点状态寄存器:用来保存有关浮点操作结果的信息。浮点状态寄存器:用来保存有关浮点操作结果的信息。2014.2.17计算机系统结构电子教案课6MIPS的寄存器别名(程序员习惯用法)的寄存器别名(程序员习惯用法)MIPSMIPS编译器支持一些专业程序员对编译器支持一些专业程序员对3232个个通用寄存器通用寄存器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 evaluation)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$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 acutally,and can be simply used as$t8)$31$ra$31$ra返回地址返回地址(return address)return address)2014.2.17计算机系统结构电子教案课72.6.2 MIPS的数据表示的数据表示整数整数字节(字节(8 8位)位)半字(半字(1616位)位)字(字(3232位)位)双字(双字(6464位)位)浮点数浮点数单精度浮点数(单精度浮点数(3232位)位)双精度浮点数(双精度浮点数(6464位)位)字节、半字或者字在装入字节、半字或者字在装入6464位寄存器时,用零扩展或者用符号位扩展来填位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照充该寄存器的剩余部分。装入以后,对它们将按照6464位整数的方式进行运算。位整数的方式进行运算。2014.2.17计算机系统结构电子教案课82.6.3 MIPS的数据寻址方式(的数据寻址方式(P47)立即数寻址与偏移量寻址;立即数寻址与偏移量寻址;立即数字段和偏移量字段都是立即数字段和偏移量字段都是1616位的。位的。寄存器间接寻址是通过把寄存器间接寻址是通过把0 0作为偏移量来实现的;作为偏移量来实现的;16 16位绝对寻址是通过把位绝对寻址是通过把R0R0(其值永远为其值永远为0 0)作为基址寄存器来完成的;)作为基址寄存器来完成的;MIPS MIPS的存储器按字节寻址,地址为的存储器按字节寻址,地址为6464位;位;所有存储器访问必须是边界对齐的,即访问地址必须是该数据长度(字节所有存储器访问必须是边界对齐的,即访问地址必须是该数据长度(字节数)的整倍数,又叫整数边界原则;数)的整倍数,又叫整数边界原则;MIPS MIPS的存储器按字节编制;的存储器按字节编制;所有数据字、指令字从最高有效位开始依次标记为所有数据字、指令字从最高有效位开始依次标记为bit 0bit 0、1 1、2 2 ;MIPSMIPS处理器的存储顺序,可以设置为处理器的存储顺序,可以设置为“小端字节表示顺序小端字节表示顺序”(Littile-Littile-EndianEndian,低位字节放在低地址低位字节放在低地址)或者或者“大端字节表示顺序大端字节表示顺序”(Big-EndianBig-Endian,高位字节放在低地址,以便适合网络数据包内顺序高位字节放在低地址,以便适合网络数据包内顺序)。)。在下文使用的在下文使用的MIPS64MIPS64模拟器中采用模拟器中采用“小端字节表示顺序小端字节表示顺序”。2014.2.17计算机系统结构电子教案课92.6.4 MIPS指令格式(指令格式(P48)MIPS32 MIPS32和和MIPS64MIPS64体系结构定义了兼容的体系结构定义了兼容的3232位和位和6464位处理机指令位处理机指令 使用条件编译或宏汇编指令能写出可同时在使用条件编译或宏汇编指令能写出可同时在MIPS32MIPS32和和MIPS64MIPS64上运行的程序上运行的程序 寻址方式编码到操作码中寻址方式编码到操作码中 所有的指令都是所有的指令都是3232位的位的 操作码占操作码占6 6位位 3 3种指令格式(种指令格式(3种格式中,同名字段的位置固定不变)种格式中,同名字段的位置固定不变)6 5 5 16 oc 操操作作码码 rs 源源操操作作数数寄寄存存器器 rt 源源/目目的的操操作作数数寄寄存存器器 immediate 立立即即数数 0 5 6 10 11 15 16 31 6 5 5 5 5 6 oc 操操作作码码 rs 源源操操作作数数寄寄存存器器 rt 源源/目目的的操操作作数数寄寄存存器器 rd 目目的的操操作作数数寄寄存存器器 shamt 移移位位位位数数 funct 功功能能码码 0 5 6 10 11 15 16 20 21 25 26 31 6 26 oc 操操作作码码 offset 跳跳转转的的目目的的地地址址 0 5 6 31 2014.2.17计算机系统结构电子教案课102.6.4 MIPS指令格式指令格式I I类指令类指令 包括所有的包括所有的loadload和和storestore指令,立即数指令,分支指令,寄存器跳转指令,指令,立即数指令,分支指令,寄存器跳转指令,寄存器链接跳转指令。寄存器链接跳转指令。立即数字段为立即数字段为1616位,用于提供立即数或偏移量。位,用于提供立即数或偏移量。load load指令指令 访存有效地址:访存有效地址:RegsrsRegsrsimmediateimmediate 从存储器取来的数据放入寄存器从存储器取来的数据放入寄存器rtrt store store指令指令 访存有效地址:访存有效地址:RegsrsRegsrsimmediateimmediate 要存入存储器的数据放在寄存器要存入存储器的数据放在寄存器rtrt中中 立即数指令立即数指令 Regsrt Regsrs op immediateRegsrt Regsrs op immediate 分支指令分支指令 转移目标地址:转移目标地址:RegsrsRegsrsimmediateimmediate,rtrt无用无用 寄存器跳转、寄存器跳转并链接寄存器跳转、寄存器跳转并链接 转移目标地址为转移目标地址为RegsrsRegsrs 6 5 5 16 oc 操操作作码码 rs 源源操操作作数数寄寄存存器器 rt 源源/目目的的操操作作数数寄寄存存器器 immediate 立立即即数数 0 5 6 10 11 15 16 31 2014.2.17计算机系统结构电子教案课112.6.4 MIPS指令格式指令格式R R类指令类指令 包括包括ALUALU指令,专用寄存器读指令,专用寄存器读/写指令,写指令,movemove指令等。指令等。ALU ALU指令指令 Regsrd Regsrs funct RegsrtRegsrd Regsrs funct Regsrt funct funct为具体的运算操作编码为具体的运算操作编码 6 5 5 5 5 6 oc 操操作作码码 rs 源源操操作作数数寄寄存存器器 rt 源源/目目的的操操作作数数寄寄存存器器 rd 目目的的操操作作数数寄寄存存器器 shamt 移移位位位位数数 funct 功功能能码码 0 5 6 10 11 15 16 20 21 25 26 31 2014.2.17计算机系统结构电子教案课122.6.4 MIPS指令格式指令格式J J类指令类指令 包括跳转指令,跳转并链接指令,自陷指令,异常返回指令。包括跳转指令,跳转并链接指令,自陷指令,异常返回指令。在这类指令中,指令字的低在这类指令中,指令字的低2626位是偏移量,它与位是偏移量,它与PCPC值相加形成跳转的地址。值相加形成跳转的地址。6 26 oc 操操作作码码 offset 跳跳转转的的目目的的地地址址 0 5 6 31 2014.2.17计算机系统结构电子教案课132.6.5 MIPS的操作(的操作(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位,依此类推。位,依此类推。下标可以是一个数字,也可以是一个范围。下标可以是一个数字,也可以是一个范围。例如:例如:RegsR4RegsR40 0:寄存器寄存器R4R4的符号位的符号位 RegsR4RegsR456-6356-63:R4R4的最低字节的最低字节 2014.2.17计算机系统结构电子教案课142.6.5 MIPS的操作(续的操作(续)MemMem:表示主存;表示主存;按字节寻址,可以传输任意个字节。按字节寻址,可以传输任意个字节。上标:用于表示对字段进行复制的次数。上标:用于表示对字段进行复制的次数。例如:例如:0 03232表示一个表示一个3232位长的全位长的全0 0字段字段符号符号#:用于两个字段的拼接,并且可以出现在数据传送的任何一边。:用于两个字段的拼接,并且可以出现在数据传送的任何一边。举例:举例:R8R8、R6R6是是6464位的寄存器,下式位的寄存器,下式RegsR8RegsR832-6332-63 3232(Mem RegsR6Mem RegsR60 0)2424#Mem RegsR6#Mem RegsR6表示的意义是:以表示的意义是:以R6R6的内容作为地址访问内存,得到的字节按符号位扩展为的内容作为地址访问内存,得到的字节按符号位扩展为3232位后存入位后存入R8R8的低的低3232位,位,R8R8的高的高3232位(即位(即RegsR80-31RegsR80-31)不变。不变。2014.2.17计算机系统结构电子教案课15 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)装入字节装入字节 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+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 RegsR4 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 0 03131 SH R5SH R5,502(R4)502(R4)保存半字保存半字Mem502+RegsR4Mem502+RegsR41616 RegsR5 RegsR5 4848.63.63 2014.2.17计算机系统结构电子教案课16 ALU指令指令 寄存器寄存器型(寄存器寄存器型(RRRR型)指令或立即数型型)指令或立即数型 算术和逻辑操作:加、减、与、或、异或和移位等算术和逻辑操作:加、减、与、或、异或和移位等 R0 R0的值永远是的值永远是0 0,它可以用来合成一些常用的操作。,它可以用来合成一些常用的操作。例如:例如:DADDIU R1DADDIU R1,R0R0,#100#100 给寄存器给寄存器R1R1装入常数装入常数100100 DADD R1 DADD R1,R0R0,R2 R2 把寄存器把寄存器R2R2中的数据传送到寄存器中的数据传送到寄存器R1R1指令举例指令举例 指令名称指令名称 含义含义 DADDUDADDUR1R1,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 R1DSLT R1,R2R2,R3 R3 置小于置小于 If(RegsR2 RegsR3)If(RegsR2 RegsR3)RegsR1 1 else RegsR10 RegsR1 1 else RegsR10 2014.2.17计算机系统结构电子教案课172.6.6 MIPS的控制指令(的控制指令(P50)由一组跳转和一组分支指令来实现控制流的改变由一组跳转和一组分支指令来实现控制流的改变 典型的典型的MIPSMIPS控制指令控制指令指令举例指令举例 指令名称指令名称 含义含义 J name J name 跳转跳转 PC PC 36366363 name2 name2JAL name JAL name 跳转并链接跳转并链接 RegsR31PC+4RegsR31PC+4;PC PC 36366363namename22;(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 if(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 RegsR2 RegsR2 2014.2.17计算机系统结构电子教案课18 跳转指令跳转指令根据跳转指令确定目标地址的方式不同以及跳转时是否链接,可以把跳根据跳转指令确定目标地址的方式不同以及跳转时是否链接,可以把跳转指令分成转指令分成4 4种。种。确定目标地址的方式确定目标地址的方式 把指令中的把指令中的2626位偏移量左移位偏移量左移2 2位(因为指令字长都是位(因为指令字长都是4 4个字节)后,个字节)后,替换程序计数器的低替换程序计数器的低2828位;位;间接跳转:由指令中指定的一个寄存器来给出转移目标地址。间接跳转:由指令中指定的一个寄存器来给出转移目标地址。跳转的两种类型跳转的两种类型 简单跳转:把目标地址送入程序计数器。简单跳转:把目标地址送入程序计数器。跳转并链接:把目标地址送入程序计数器,把返回地址(即顺序下跳转并链接:把目标地址送入程序计数器,把返回地址(即顺序下一条指令的地址)放入寄存器一条指令的地址)放入寄存器R31R31。2014.2.17计算机系统结构电子教案课19 分支指令(条件转移)分支指令(条件转移)分支条件由指令确定分支条件由指令确定例如:测试某个寄存器的值是否为零例如:测试某个寄存器的值是否为零提供一组比较指令,用于比较两个寄存器的值。提供一组比较指令,用于比较两个寄存器的值。例如:例如:“置小于置小于”指令指令有的分支指令可以直接判断寄存器内容是否为负,或者比较两个寄存器有的分支指令可以直接判断寄存器内容是否为负,或者比较两个寄存器是否相等。是否相等。分支的目标地址分支的目标地址由由1616位带符号偏移量左移两位后和位带符号偏移量左移两位后和PCPC相加的结果来决定相加的结果来决定一条浮点条件分支指令:通过测试浮点状态寄存器来决定是否进行分支。一条浮点条件分支指令:通过测试浮点状态寄存器来决定是否进行分支。2014.2.17计算机系统结构电子教案课202.6.7 MIPS的浮点操作(的浮点操作(P51)由操作码指出操作数是单精度(由操作码指出操作数是单精度(SPSP)或双精度(或双精度(DPDP)后缀后缀S S:表示操作数是单精度浮点数表示操作数是单精度浮点数后缀后缀D D:表示是双精度浮点数表示是双精度浮点数 浮点操作浮点操作包括加、减、乘、除,分别有单精度和双精度指令。包括加、减、乘、除,分别有单精度和双精度指令。浮点数比较指令浮点数比较指令根据比较结果设置浮点状态寄存器中的某一位,以便于后面的分支指根据比较结果设置浮点状态寄存器中的某一位,以便于后面的分支指令令BC1TBC1T(若真则分支)或若真则分支)或BC1FBC1F(若假则分支)测试该位,以决定是否进若假则分支)测试该位,以决定是否进行分支。行分支。2014.2.17计算机系统结构电子教案课21注意浮点数的存储格式只有注意浮点数的存储格式只有64位双精度这一种,没有位双精度这一种,没有32位单精度数。位单精度数。MIPS64伪指令伪指令序序号号 伪伪指指令令 功功能能 1.data start of data segment 2.text start of code segment 3.code start of code segment(same as.text)4.org start address 5.space leave n empty bytes 6.asciiz enters zero terminated ascii string 7.ascii enter ascii string 8.align align to n-byte boundary 9.byte ,.enter bytes 10.word16,.enters 16 bit number(s)11.word32,.enters 32 bit number(s)12.word ,.enters word(s)of data(64-bits)13.double,.enters floating-point number(s)2014.2.17计算机系统结构电子教案课22MIPS64指令集指令集1序号序号 指令指令 功能功能 访存访存 1 lb reg,imm(reg)load byte 2 lbu reg,imm(reg)load byte unsigned 3 lh reg,imm(reg)load 16-bit half-word 4 lhu reg,imm(reg)load 16-bit half word unsigned 5 lw reg,imm(reg)load 32-bit word 6 lwu reg,imm(reg)load 32-bit word unsigned 7 ld reg,imm(reg)load 64-bit double-word 8 l.s freg,imm(reg)load 32-bit floating-point(single FP)9 l.d freg,imm(reg)load 64-bit floating-point(double FP)10 sb reg,imm(reg)store byte 11 sh reg,imm(reg)store 16-bit half-word 12 sw reg,imm(reg)store 32-bit word 13 sd reg,imm(reg)store 64-bit double-word 14 s.s freg,imm(reg)store 32-bit floating-point 15 s.d freg,imm(reg)store 64-bit floating-point 2014.2.17计算机系统结构电子教案课23MIPS64指令集指令集2序号序号 指令指令 功能功能 传送传送 16 movz reg,reg,reg move if register equals zero 17 movn reg,reg,reg move if register not equal to zero 18 mov.s freg,freg move floating-point(single FP)19 mov.d freg,freg move floating-point(double FP)20 mtc1 reg,freg move data from integer register to FP register 21 mfc1 reg,freg move data from FP register to integer register 22 lui reg,imm load upper half of register immediate 算术算术 23 dadd reg,reg,reg add integers 24 daddu reg,reg,reg add integers unsigned 25 daddi reg,reg,imm add immediate 2014.2.17计算机系统结构电子教案课24MIPS64指令集指令集3序序号号 指指令令 功功能能 26 daddui reg,reg,imm add immediate unsigned(WinMIPS64 格格式式)27 daddiu reg,reg,imm add immediate unsigned(MIPSsim 格格式式)28 add.s freg,freg,freg add floating-point(single FP)29 add.d freg,freg,freg add floating-point(double FP)30 dsub reg,reg,reg subtract integers 31 dsubu reg,reg,reg subtract integers unsigned 32 sub.s freg,freg,freg subtract floating-point(single FP)33 sub.d freg,freg,freg subtract floating-point(double FP)34 dmul reg,reg,reg signed integer multiplication 35 dmulu reg,reg,reg unsigned integer multiplication 36 mul.d freg,freg,freg multiply floating-point 37 ddiv reg,reg,reg signed integer division 38 ddivu reg,reg,reg unsigned integer division 39 div.d freg,freg,freg divide floating-point 2014.2.17计算机系统结构电子教案课25MIPS64指令集指令集4序序号号 指指令令 功功能能 逻逻辑辑 40 and reg,reg,reg logical and 41 andi reg,reg,imm logical and immediate 42 or reg,reg,reg logical or 43 ori reg,reg,imm logical or immediate 44 xor reg,reg,reg logical xor 45 xori reg,reg,imm exclusive or immediate 46 dsll reg,reg,imm shift left logical 47 dsllv reg,reg,reg shift left logical by variable amount 48 dsrl reg,reg,imm shift right logical 49 dsra reg,reg,imm shift right arithmetic 50 dsrlv reg,reg,reg shift right logical by variable amount 51 dsrav reg,reg,reg shift right arithmetic by variable amount 2014.2.17计算机系统结构电子教案课26MIPS64指令集指令集5序号序号 指令指令 功能功能 转换转换 52 cvt.d.l freg,freg convert 64-bit integer to a double FP format 53 cvt.l.d freg,freg convert double FP to a 64-bit integer format 标志标志 54 slt reg,reg,reg set if less than 55 dslt reg,reg,reg set if less than(教材写错,上条为正确格式教材写错,上条为正确格式)56 sltu reg,reg,reg set if less than unsigned 57 slti reg,reg,imm set if less than immediate 58 sltiu reg,reg,imm set if less than immediate unsigned 59 c.lt.d freg,freg set FP flag if less than 60 c.eq.d freg,freg set FP flag if equal to 61 c.le.d freg,freg set FP flag if less than or equal to 2014.2.17计算机系统结构电子教案课27MIPS64指令集指令集6序号序号 指令指令 功能功能 跳转跳转 62 j imm jump to address 63 jr reg jump to address in register 64 jal imm jump and link to address(call subroutine)65 jalr reg jump and link to address in register 66 beqz reg,imm branch if register is equal to zero 67 bnez reg,imm branch if register is not equal to zero 68 beq reg,reg,imm branch if pair of registers are equal 69 bne reg,reg,imm branch if pair of registers are not equal 70 bc1t imm branch to address if FP flag is TRUE 71 bc1f imm branch to address if FP flag is FALSE 控制控制 72 nop no operation 73 halt stops the program 2014.2.17计算机系统结构电子教案课28MIPS64模拟器介绍模拟器介绍12014.2.17计算机系统结构电子教案课29MIPS64模拟器介绍模拟器介绍2Pipeline window This window shows a schematic representation of the five pipeline stages of the MIPS64 processor and the units for floating point operations(addition/subtraction,multiplication and division).It shows which instruction is in each stage of the pipeline.Code window This window shows a three column representation of the code memory,showing from left to right 1)a byte address,2)a hex number giving the 32-bit machine code representation of the instruction,and 3)the assembly language statement.Double-left-clicking on an instruction sets or clears break-points.Data window This window shows the contents of data memory,byte addressable,but displayed in 64-bit chunks,as appropriate for a 64-bit processor.To edit an integer value double-left-click.To display and edit as a floating-point number,double-right-click.Register window This window shows the values stored in the registers.If the register is displayed in grey,then it is in the process of being written to by an instruction.If displayed using a colour,the colour indicates the stage in the pipeline from which this value is available for forwarding.This window allows you to interactively change the contents of those 64-bit integer and floating-point registers that are not in the process of being written to,or being forwarded.To do this,double-left-click on the register you want to change and a pop-up window will ask you for new content.Press OK to confirm the change.2014.2.17计算机系统结构电子教案课30MIPS64模拟器介绍模拟器介绍3Clock Cycle diagram This window gives a representation of the timing behaviour of the pipeline.It records the history of instructions as they enter and emerge from the pipeline.An instruction that causes a stall is highlighted in blue:instructions held up as a result of a stall are grayed.Statistics This window provides statistics on the number of simulation cycles,instructions,the average Cycles Per Instruction(CPI),the types of stalls,and numbers of conditional branches and Load/Store-instructions.Terminal This window mimics a dumb terminal I/O device with some limited graphics capability.Status Line The status line at the bottom normally displays Ready,but will during program simulation provide useful information on the current status of the simulation.2014.2.17计算机系统结构电子教案课31MIPS64模拟器的存储器映射模拟器的存储器映射I/O地址与命令地址与命令CONTROL:.word32 0 x10000CONTROL:.word32 0 x10000;控制寄存器(映射地址)控制寄存器(映射地址)DATA:.word32 0 x10008DATA:.word32 0 x10008;数据寄存器(映射地址)数据寄存器(映射地址)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=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字节,无字符回显字节,无字符回显数据地址数据地址0 0 x00000 x00000程序存储器程序存储器程序起点程序起点lwu r24,DATA(r0)lwu r24,DATA(r0)lwu r25,CONTROL(r0)lwu r25,CONTROL(r0)指令地址指令地址0 0 x00000 x00000数据存储器数据存储器常规数据区常规数据区0 0 x10000 x100000 0 x10008x10008sd r9,0(r24)sd r9,0(r24)sd r2,0(r25)sd r2,0(r25)控制寄存器控制寄存器数据寄存器数据寄存器仿真非智能终端仿真非智能终端2014.2.17计算机系统结构电子教案课32MIPS64模拟器演示实验模拟器演示实验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.17计算机系统结构电子教案课33MIPS64模拟器演示实验模拟器演示实验2 阶乘阶乘1 1文件名:文件名:factorial.s;阶乘示例阶乘示例;返回值放返回值放r10;.datanumber:.word 10;此数未用,可能想作为输入值的上限此数未用,可能想作为输入值的上限title:.asciiz“factorial program n=“;提示
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!