欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    【大学课件】计算机体系结构.ppt

    • 资源ID:6095982       资源大小:839.51KB        全文页数:99页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【大学课件】计算机体系结构.ppt

    计算机体系结构,http:/,第2章 指令集结构设计,2.1 指令集结构分类2.2 寻址方式2.3指令格式2.4 操作数的类型、表示和大小2.5指令集功能设计2.6 编译技术与计算机体系结构2.7 DLX指令集结构,http:/,指令集设计,指令集结构:我们必须说明那些东西?,指令格式或编码方式。即如何编码?操作数和操作结果的存放位置存放位置?多少个显式操作数?存储器操作数如何定位?哪些操作数可以或不可以放到存储器中?数据类型和大小支持哪些操作下一条指令地址jumps,conditions,branchesfetch-decode-execute is implicit!,2.1 ISA 的基本分类,累加器型(Accumulator)(1 register):1 address add Aacc acc+memA1+x addressaddx Aacc acc+memA+x堆栈型(Stack):0 address addtos tos+next通用寄存器型(General Purpose Register):2 address add A BEAA EAA+EAB3 address add A B CEAA EAB+EACLoad/Store:3 addressadd Ra Rb RcRa Rb+Rcload Ra Rb Ra memRbstore Ra RbmemRb Ra,比较指令条数,Code sequence for(C=A+B)for four classes of instruction sets:,Stack,Accumulator,Push A,Load A,Load R1,A,Push B,Add B,Load R2,B,Add,Store C,Add R3,R1,R2,Pop C,Store C,R3,1975以后至今 几乎所有的机器都用通用寄存器结构,原因,寄存器比存储器快,对编译器而言寄存器更容易使用,-,例如(A*B)(C*D)(E*F)其中的乘法操作可以以任意序计算,但堆栈型 结构不行,寄存器可以存放变量,-,减少访存量,提高程序效率,-,代码紧凑,通用寄存器型占主导地位,通用寄存器的分类,分类原则:ALU指令到底是两地址指令还是三地址指令ALU指令中有多少个操作数可以用存储器寻址,即有多少个存储器操作数,常见的三种通用寄存器型指令集结构的优缺点,2.2 寻址技术,1980年以来几乎所有机器的存储器都是按字节编址的ISA设计要关注两个问题:8bits字节,16bits-半字,32bits 字,64bits 双字如何读32位字,两种方案每次一个字节,四次完成每次一个字,一次完成问题:(1)如何将字节地址映射到字地址(2)一个字是否可以存放在任何字节边界上即尾端(Endian)和对齐问题,尾端问题,little endian,big endian,在一个字内部的字节顺序问题,如地址xxx00指定了一个字(int),存储器中从xxx00处连续存放ffff0000,则有两种方式:Little endian 方式下xxx00位置是字的最低字节,整数值为0000ffff,Intel 80 x86,DEC Vax,DEC Alpha(Windows NT)Big endian 方式下xxx00位置是字的最高字节,整数值为ffff0000,IBM 360/370,Motorola 68k,MIPS,Sparc,HP PA,对齐问题,对一个s字节的对象访问,地址为A,如果A mod s=0 那么它就是边界对齐的。边界对齐的原因是存储器本身读写的要求,存储器本身读写通常就是边界对齐的,对于不是边界对齐的访问可能要导致存储器的两次访问,然后再拼接出所需要的数。,Addressing mode,Example,Meaning,Register,Add R4,R3,R4,R4+R3,Immediate,Add R4,#3,R4,R4+3,Displacement,Add R4,100(R1),R4,R4+Mem100+R1,Register indirect,Add R4,(R1),R4,R4+MemR1,Indexed/Base,Add R3,(R1+R2),R3,R3+MemR1+R2,Direct or absolute,Add R1,(1001),R1,R1+Mem1001,Memory indirect,Add R1,(R3),R1,R1+MemMemR3,Post-increment,Add R1,(R2)+,R1,R1+MemR2;R2,R2+d,Pre-decrement,Add R1,(R2),R2,R2d;R1,R1+MemR2,Scaled,Add R1,100(R2)R3,R1,R1+Mem100+R2+R3*d,寻址方式,各种寻址方式的使用情况?(忽略寄存器直接寻址),3 programs measured on machine with all address modes(VAX)-Displacement:42%avg,32%to 55%75%-Immediate:33%avg,17%to 43%85%-Register deferred(indirect):13%avg,3%to 24%-Scaled:7%avg,0%to 16%-Memory indirect:3%avg,1%to 6%-Misc:2%avg,0%to 3%75%displacement&immediate85%displacement,immediate&register indirect,偏移量字段大小的使用情况,Address Bits,立即数大小?,用8位可满足50%to 60%需求 用16位可满足75%to 80%需求,寻址方式小结,重要的寻址方式:偏移寻址方式,立即数寻址方式,寄存器寻址方式 偏移字段的大小应该在 12 to 16 bits 立即数字段的大小应该在 8 to 16 bits,2.3 指令格式,指令格式选择策略,如果代码长度最重要,那么使用变长指令格式 如果性能至关重要,使用固定长度指令 有些嵌入式机器附加可选模式,由每一应用自己选择性能还是代码量 有些机器使用边执行边解压的方式,指令格式,如果每条指令存在多个存储器操作数,或有多种寻址方式=每一操作数都要说明其寻址方式 对于Load-store型机器,每条指令有一个存储器地址,并且只有1到2种寻址方式=可以将寻址方式反映在操作码中,MIPS 寻址方式/指令格式,op,rs,rt,rd,immed,Register(direct),op,rs,rt,Base+index,+,Memory,immed,op,rs,rt,Immediate,immed,op,rs,rt,PC,PC-relative,+,Memory,所有指令都是32位宽,Register Indirect?,2.4 操作数的类型、表示和大小,操作数类型和操作数表示也是软硬件的主要界面之一。操作数类型:是面向应用、面向软件系统所处理的各种数据结构。整型、浮点型、字符、字符串、向量类型等、十进制类型由操作码确定或数据附加硬件解释的标记,一般采用由操作码确定操作数的表示:硬件结构能够识别,指令系统可以直接调用的结构整型:原码、反码、补码浮点:IEEE 754标准十进制:BCD码,二进制十进制表示,操作数的大小,基准测试的结论:(1)对单字、双字的数据访问具有较高的频率(2)定义操作数字段长度为64位,更具有一般性,2.5 指令集结构的功能设计,CISC计算机指令集结构的功能设计RISC计算机指令结构的功能设计控制类指令,典型操作类型(ISA到底应该支持哪些操作),数据传送类,Load(from memory)Store(to memory)memory-to-memory moveregister-to-register moveinput(from I/O device)output(to I/O device)push,pop(to/from stack),算术运算类,integer(binary+decimal)or FPAdd,Subtract,Multiply,Divide,逻辑运算,not,and,or,set,clear,移位,shift left/right,rotate left/right,控制类(Jump/Branch),unconditional,conditional,子程序调用类,call,return,异常处理类,trap,return,同步操作类,test&set,字符串类,search,translate,图形处理(MMX),parallel subword ops(4 16bit add),ISA对操作类型的选择,需考虑的因素:速度、价格和灵活性基本要求:指令系统的完整性、规整性、高效率和兼容性完整性设计:具备基本指令种类兼容性:系列机高效率:指令执行速度快、使用频度高规整性让所有运算部件都能对称、均匀的在所有数据存储单元之间进行操作。对所有数据存储单元都能同等对待,无论是操作数或运算结果都可以无约束地存放到任意数据存储单元中当前对这一问题的处理有两种截然不同的方向CISC和RISC,CISC计算机ISA的功能设计,目标:强化指令功能,减少指令的指令条数,以提高系统性能基本优化方法1.面向目标程序的优化 面向目标程序的优化是提高计算机系统性能的最直接方法,其指标主要缩短程序的长度缩短程序的执行时间优化方法对大量的目标程序机器执行情况进行统计分析,找出使用频度高,执行时间长的指令或指令串对于那些使用频度高的指令,用硬件加快其执行,对于那些使用频度高的指令串,用一条新的指令来代替它,优化目标程序的主要途径,1)增强运算型指令的功能如sin(x),Cos(x),SQRT(X),甚至多项式计算如用一条三地址指令完成P(X)=C(0)+C(1)X+C(2)X2+C(3)X3+.2)增强数据传送类指令的功能主要是指数据块传送指令R-R,R-M,M-M之间的数据块传送可有效的支持向量和矩阵运算,如IBM370R-Stack之间设置数据块传送指令,能够在程序调用和程序中断时,快速保存和恢复程序现场,如 VAX-11,3)增强程序控制指令的功能在CISC中,一般均设置了多种程序控制指令,正常仅需要转移指令和子程序控制指令2.面向高级语言和编译程序改进指令系统 主要时缩小HL-ML之间的差距1)增强面向HL和Compiler支持的指令功能 在用高级语言编写的源程序中,对各种语句的使用频度和执行时间进行统计分析,对使用频度高、执行时间长的语句,增强有关指令的功能,或增加相关的专门指令,从而达到缩短目标程序长度,减少目标程序执行时间的目的,同时也缩短了编译时间,例如FORTRAN语言和COBOL语言中各种主要语句的使用频度,观察结果:(1)一元赋值在其中比例最大,增强数据传送类指令功能,缩短这类指令的执行时间是对高级语言非常有力的支持,(2)其他赋值语句中,增1操作比例较大,许多机器都有专门的增1指令(3)条件转移和无条件转移占22,38.2%,因此增强转移指令的功能,增加转移指令的种类是必要的,2)高级语言计算机系统 缩小HL和ML的差别时,走到极端,就是把HL和ML合二为一,即所谓的高级语言计算机。在这种机器中,高级语言不需要经过编译,直接由机器硬件来执行。如LISP机,PROLOG机3)支持操作系统的优化实现特权指令任何一种计算机系统必须有操作系统的支撑才能工作,而OS又必须用指令系统来实现,指令系统对OS的支持主要有处理器工作状态和访问方式的转换进程的管理和切换存储管理和信息保护进程同步和互斥,信号灯的管理等,RISC计算机指令集结构的功能设计,采用RISC体系结构的微处理器SUN Microsystem:SPARC,SuperSPARC,Ulta SPARCSGI:R4000,R5000,R10000,IBM:Power PC Intel:80860,80960DEC:AlphaMotorola 88100HP HP300/930系列,950系列,从CISC到RISC,1975 IBM公司率先组织力量,研究指令系统的合理性问题,John Coche(1987年图灵奖获得者)1979年 IBM 801,1986年推出IBM RT PC1979 David Pattern 研究了CISC指令系统主要存在以下几方面的问题:见p47 1981:Patterson等人研制成功了32位RISC I 微处理器。31种指令,三种数据类型,只有变址和相对寻址两种寻址方式,字长 32位1983:RISC II,RISC的定义和特点,RISC是一种计算机体系结构的设计思想,它不是一种产品。RISC是近代计算机体系结构发展史中的一个里程碑,直到现在,RISC还没有一个确切的定义CMU的一篇论文选择论述RISC的特点大多数指令在单周期内完成采用Load/Store结构硬布线控制逻辑减少指令和寻址方式的种类固定的指令格式注重代码的优化从目前的发展看,RISC体系结构还应具有如下特点:面向寄存器结构十分重视流水线的执行效率尽量减少断流重视优化编译技术,90年代,IEEE的Michael Slater对RISC的定义做了如下描述:RISC为使流水线高效执行,应具有如下特征:简单而统一格式的指令译码大部分指令可以单周期执行完成只有Load/Store指令访存简单寻址方式采用Load延迟技术RISC为使优化编译便于产生优化代码,应具有如下特征:三地址指令格式较多的寄存器对称的指令格式减少指令平均执行周期数是RISC思想的精华,问题,RISC的指令系统精简了,CISC中的一条指令可能由一串指令才能完成,那么为什么RISC执行程序的速度比CISC还要快?ExecuteTime=CPI X IC X T IC CPI TCISC 1 215 33ns5nsRISC 1.31.4 1.11.4 10ns2nsIC:实际统计结果,RISC的IC只比CISC 长3040%CPI:CISC CPI一般在46之间,RISC 一般CPI=1,Load/Store 为2T:RISC采用硬布线逻辑,指令要完成的功能比较简单,,RISC为什么会减少CPI,硬件方面:硬布线控制逻辑,减少指令和寻址方式的种类,使用固定格式,采用Load/Store,指令执行过程中设置多级流水线。软件方面:十分强调优化编译的作用,RISC的关键技术,延时转移技术指令取消技术重叠寄存器窗口技术指令流调整技术硬件为主固件为辅,Top 10 80 x86 Instructions,操作类型小结,以下指令类型使用频度最高,指令系统应该支持这些类型的指令load,store,add,subtract,move register-register,and,shift,compare equal,compare not equal,branch,jump,call,return;,控制指令,Jump无条件转移,branch条件转移四种控制流的改变条件分支Conditional branches 使用频率最高,目标地址的指定,条件码的实现跳转Jumps过程调用Procedure calls过程返回Procedure returns如p49图2.5所示 四种控制指令的使用频度P49 表2.9 表示分支条件的主要技术及其优缺点,转移目标地址与当前指令的距离,分支比较类型比较,比较相等和不相等最多,分支转移的方向统计,2.6 编译技术与计算机体系结构设计,使用汇编程序编程已不是主流现在使用汇编的人很少因此编译器更需要ISA编译器的主要目标是正确性其次是目标代码的速度其他目标编译的速度编译调试语言间的互操作性易于实现,现代编译器的典型结构,优化类型(1/2),高级优化在源代码级例如:仅一次调用的过程,采用in-line方式,避免CALL局部优化消去公共子表达式:用临时变量保存第一次计算的公共子表达式的值常数传递,将所有被赋值为常数的变量,用该常数值代替降低堆栈的深度,对表达式重新组织,尽量减少表达式求值所用的资源全局优化对循环和分支进行优化转换代码移动将在每次循环中计算相同值的代码移到循环外面简化或消去数组下标的计算,优化类型(2/2),与机器相关的优化降低计算负载如乘法用移位和加法来完成指令调度:重新组织指令序列,尽可能减少断流现象分支偏移的优化重新安排代码,使分支偏移尽可能小,Stanford Ucode Compiler 优化的效果,ISA设计针对Compiler需了解的问题,如何分配变量如何寻址变量需要多少寄存器优化技术对指令使用频度有何影响使用哪些控制结构这些控制结构使用频度,高级语言分配数据的区域,堆栈当前活动记录的局部变量全局数据区常量和全局静态赛结构,其中数组和其他联合类型的数据结构占很大比例堆用于动态数据,通常用指针访问,一般都不是标量,寄存器分配问题,堆栈对象的分配相对简单全局变量的分配由于存在别名问题比较困难堆对象和指针对象就更困难原因:一般用指针来访问,由于指针计算问题,使得几乎无法分配寄存器分配是优化的主要手段,因此在这方面的努力是非常重要的,一些研究的结论,减少分支语句非常困难大量的优化使得存储器访问操作减少可以减少一些ALU操作,但通常也比较少。结果是控制类指令在统计上占较大比例 控制类指令很难加速,编译技术与计算机体系结构设计小结,有利于编译器的ISA 规整性:没有特殊的寄存器,例外情况尽可能少,所有操作数模式可用于任何数据类型和指令类型,要求操作、数据类型和寻址方式必须正交,有利于简化代码生成过程。完整性:支持基本的操作和满足目标应用系统的需求 帮助编译器设计者了解各种代码序列的执行效率和代价,有助于编译器的优化对于在编译时就已经知道的量,提供能够将其变为常数的指令寄存器分配是关键问题 寄存器数目多有利于编译器的设计与实现,提供至少16个通用寄存器,和独立的浮点寄存器 保证所有的寻址方式可用于各种数据传送指令 最小指令集,一些统计比较结果,一些结论Load-Store 型ISA,move类指令比例大于M-M型ISALoad-Store型ISA,Branch类指令比例小于M-M型ISALoad-Store型ISA,平均CPI和T较小,ISA的评价-ISA小结,执行的指令条数CPI 和时钟周期涉及控制和数据通路指令译码的难易程度有效地址计算的复杂程度存储模式控制结构的实现方式编码和对齐问题是否有冗余,是否完备,ISA的度量,动态度量性能分析的主要依据静态度量一般只要代码可以装入存储器,我们不太关心要关心的只是在虚拟存储系统中,页式管理的性能一些统计特性操作类型寻址模式有效地址定位指令和数据存取分支成功和失败指令格式是否有利于预取操作,2.7 DLX,目标:支持大概率事件不常用的操作由软件来完成提供基本原语,而不是解决方案简单的Load-Store型流水线可高效实现ISA容易编码支持编译器的优化实现显式地说明一些事情,便于优化有较多的寄存器,便于编译器使用,DLX的结构,32个GPR,R0 总是0Load R0是没有用的32 个FPR 用于单精度或双精度数运算对于单精度数运算:F0,F1,.,F31对于双精度数运算:F0,F2,.,F30附加一些状态寄存器存储器模型 big endian byte addressable-halfword,word,and double所有的访问必须对齐装载字节或半字时,放在寄存器的低位部分,高位部分或者扩展为符号位或者添0指令都是32位的,并且对齐存放,DLX结构(续),浮点格式为IEEE754 单双精度数的转换是显式的ALU操作总是R-R型的立即数16位寻址方式寄存器寻址,立即值寻址,偏移寻址和寄存器寻址控制类指令jumps 和branches跳转并链接时,返回地址在R31中目标地址是相对与PC的偏移(最大225)或寄存器四种类型的指令move,alu,control,fl.pt.,LB,LBU,SB-load byte,load byte unsigned,store byteLH,LHU,SH-same as above but with halfwordsLW,SW-load or store wordLF,SF-load/store single precision float from/to FPRsLD,SD-load/store double precision float from/to FPR pairMOVI2S-move from GPR to a special register MOVS2I-move from special register to a GPRMOVFP2I-move 32-bits from an FPR to a GPRMOVI2FP-move 32-bits from a GPR to an FPR,DLX move 类指令举例,LH R1,40(R3)-load halfword(signed)R1-32(M40+R30)16#M40+R3#M41+R3 LBU R1,40(R3)-load byte unsigned R1-32 024#M40+R3SF 40(R3),F0-store float M40+R3-32 F0LD F0,40(R3)-load doubleF0#F1-64 M40+R3-(can think of it as 2 words but they represent a 64 bit formatted value)SD 40(R3),F0-store doubleM40+R3-32F0;M44+R3-32F1-(the other representation)(big-endian),DLX ALU指令,Integer Arithmetic(add,sub)X(signed,unsigned)X(register,immediate)e.g.ADD,ADDI,ADDU,ADDUI MULT,MUTU,DIV,DIVU-operands in FPRs,result=32bits Logical(and,or,xor)X(register,immediate)e.g.AND,ANDI,OR,ORI,XOR,XORI LHIloads upper half of register with immediate valuenote a full 32-bit immediate constant will take 2 instructions,DLX ALU 指令(续),Shifts(left,right)X(logical,arithmetic)X(immediate,variable=reg)e.g.SLL,SLLI,SRAI etc.Set conditional well a register anyway(LT,GT,LE,GE,EQ,NE)X(register,immediate)e.g.SLT,SGEI puts 1 or 0 in the destination register branches then test for Z or nonZThings to noticecheck whether logical left shifts cause CC to change lack of CC and FP status bits specifiedlack of rotates in the shift optionslack of a NOT or a NEG instruction,DLX的控制类指令,InstructionsBEQZ,BNEZ-GPR=0 or not,16 bit offset from PC+4 BFPT,BFPF-branch on FP compare bit T or F to 16 bit offsetfrom PC+4J-jump to PC+26 bit offsetJR-jump indirect to location specified in the registerJAL-save PC+4 in R31 and do a JJALR-save PC+4 in R31 and do a JRTRAP-go to OS via a vectored address(details later)RFE-return to user code(details later)ExamplesBEQZ R4,name:=if R4=0 then jump to name where name is PC+4+/-something less than 2*15,DLX的浮点操作,OPS(ADD,SUB,MULT,DIV)x(Double,Float)e.g.ADDD,ADDF,MULTF,DIVD Convert always CVTx2y-convert x format to y format x or y may be Integer,Double,Float e.g.CVTF2D,CVTI2D Compares formats must match(LT,GT,LE,GE,EQ,NE)X(D,F)e.g.LTD,GEF,DLX的指令格式 I-type,Loads and StoresALU ops on immediates rd-rs1 op immediate Conditional branches rs1 is the register checked rd unused immediate specifies the offset JR and JALR:rs1 is target register rd and immediate are unused but=0,DLX 指令格式,all non-immediate ALU operations rd-rs1 func rs2 read/write special registers moves,其他,统计情况Page 70 Page 73 图 2.14 2.16,本章小结,附件,MIPS I Operation Overview,MIPS I Operation Overview,Arithmetic Logical:Add,AddU,Sub,SubU,And,Or,Xor,Nor,SLT,SLTUAddI,AddIU,SLTI,SLTIU,AndI,OrI,XorI,LUISLL,SRL,SRA,SLLV,SRLV,SRAVMemory Access:LB,LBU,LH,LHU,LW,LWL,LWRSB,SH,SW,SWL,SWR,Multiply/Divide,Start multiply,divideMULT rs,rtMULTU rs,rtDIV rs,rtDIVU rs,rtMove result from multiply,divideMFHI rdMFLO rdMove to HI or LOMTHI rdMTLO rdWhy not Third field for destination?(Hint:how many clock cycles for multiply or divide vs.add?),Registers,HI,LO,Data Types,Bit:0,1Bit String:sequence of bits of a particular length 4 bits is a nibble 8 bits is a byte 16 bits is a half-word 32 bits is a word 64 bits is a double-wordCharacter:ASCII 7 bit code UNICODE 16 bit codeDecimal:digits 0-9 encoded as 0000b thru 1001b two decimal digits packed per 8 bit byteIntegers:2s ComplementFloating Point:Single Precision Double Precision Extended Precision,M x R,E,How many+/-#s?Where is decimal pt?How are+/-exponents represented?,exponent,base,mantissa,Operand Size Usage,Support for these data sizes and types:8-bit,16-bit,32-bit integers and 32-bit and 64-bit IEEE 754 floating point numbers,MIPS arithmetic instructions,InstructionExampleMeaningCommentsadd add$1,$2,$3$1=$2+$33 operands;exception possiblesubtractsub$1,$2,$3$1=$2$33 operands;exception possibleadd immediateaddi$1,$2,100$1=$2+100+constant;exception possibleadd unsignedaddu$1,$2,$3$1=$2+$33 operands;no exceptionssubtract unsignedsubu$1,$2,$3$1=$2$33 operands;no exceptionsadd imm.unsign.addiu$1,$2,100$1=$2+100+constant;no exceptionsmultiply mult$2,$3Hi,Lo=$2 x$364-bit signed productmultiply unsignedmultu$2,$3Hi,Lo=$2 x$364-bit unsigned productdivide div$2,$3Lo=$2$3,Lo=quotient,Hi=remainder Hi=$2 mod$3 divide unsigned divu$2,$3Lo=$2$3,Unsigned quotient&remainder Hi=$2 mod$3Move from Himfhi$1$1=HiUsed to get copy of HiMove from Lomflo$1$1=LoUsed to get copy of Lo,Which add for address arithmetic?Which add for integers?,MIPS logical instructions,InstructionExampleMeaningCommentand and$1,$2,$3$1=$2 Logical NORand immediateandi$1,$2,10$1=$2&10Logical AND reg,constantor immediateori$1,$2,10$1=$2|10Logical OR reg,constantxor immediate xori$1,$2,10$1=$2&10Logical XOR reg,constantshift left logicalsll$1,$2,10$1=$2 10Shift right by constantshift right arithm.sra$1,$2,10$1=$2 10Shift right(sign extend)shift left logicalsllv$1,$2,$3$1=$2$3 Shift right by variableshift right arithm.srav$1,$2,$3$1=$2$3 Shift right arith.by variable,MIPS data transfer instructions,InstructionCommentSW 500(R4),R3Store wordSH 502(R2),R3Store halfSB 41(R3),R2Store byteLW R1,30(R2)Load wordLH R1,40(R3)Load halfwordLHU R1,40(R3)Load halfword unsignedLB R1,40(R3)Load byteLBU R1,40(R3)Load byte unsignedLUI R1,40Load Upper Immediate(16 bits shifted left by 16)Why need LUI?,0000 0000,LUI R5,R5,When does MIPS sign extend?,When value is sign extended,copy upper bit to full value:Examples of sign extending 8 bits to 16 bits:00001010 00000000 0000101010001100 11111111 10001100When is an immediate value sign extended?Arithmetic instructions(add,sub,etc.)sign extend immediates even for the unsigned versions of the instructions!Logical instructions do not sign extendLoad/Store half or byte do sign extend,but unsigned versions do not.,Methods of Testing Condition,Condition CodesProcessor status bits are set as a side-effect of arithmetic instructions(possibly on Moves)or explicitly by compare or test instructions.ex:add r1,r2,r3 bz labelCondition RegisterEx:cmp r1,r2,r3bgt r1,labelCompare and BranchEx:bgt r1,r2,label,Conditional Branch Distance,25%of integer branches are 2 to 4 instructions,Conditional Branch Addressing,PC-relative since most branches are relatively close to the current PCAt least 8 bits suggested(128 instructions)Compare Equal/Not Equal most important for integer programs(86%),MIPS Compare and Branch,Compare and BranchBEQ rs,rt,offset if Rrs=Rrt then PC-relative branchBNE rs,rt,offset Compare to zero and BranchBLEZ rs,offset if Rrs BLT=BLTZAL rs,offset if Rrs=!Remaining set of compare and branch ops take two instructionsAlmost all comparisons are against zero!,

    注意事项

    本文(【大学课件】计算机体系结构.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开