计算机体系结构第二章_第1页
计算机体系结构第二章_第2页
计算机体系结构第二章_第3页
计算机体系结构第二章_第4页
计算机体系结构第二章_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 计算机指令集结构设计1、指令集结构分类2、寻址技术3、指令集结构的功能设计4、操作数的类型、表示和大小5、指令集格式的设计6、编译技术与计算机体系结构设计7、MIPS指令集结构8、DLX指令集结构指令集在计算机体系结构中的地位 instruction setsoftwarehardwareInterface DesignA good interface:Lasts through many implementations (portability, compatability)Is used in many differeny ways (generality)Provides con

2、venient functionality to higher levelsPermits an efficient implementation at lower levelsInterfaceimp 1imp 2imp 3useuseusetimeEvolution of Instruction SetsSingle Accumulator (EDSAC 1950)Accumulator + Index Registers(Manchester Mark I, IBM 700 series 1953)Separation of Programming Model from Implemen

3、tationHigh-level Language BasedConcept of a Family(B5000 1963)(IBM 360 1964)General Purpose Register MachinesComplex Instruction SetsLoad/Store ArchitectureRISC(Vax, Intel 432 1977-80)(CDC 6600, Cray 1 1963-76)(Mips,Sparc,HP-PA,IBM RS6000,PowerPC 1987)Mixed CISC & RISC?(IA-64. . .1999)CISC(Intel x86

4、 1980-199x)指令集结构的分类一般按以下5个因素考虑分类 在CPU中操作数的存储方法 指令中显示表示的操作数个数 操作数的寻址方式 指令集所提供的操作类型 操作数的类型和大小 其中CPU中操作数的存取方法,是各种指令集结构之间最主要的区别所在指令集结构的分类CPU中用来存储操作数的存储单元主要有:堆栈累加器一组寄存器2. 指令中的操作数可以显式给出,也可以隐式地给出。3. CPU对操作数的不同存取方式 分类概述 在CPU中操作数的存储方法是各种指令集之间的重要区别所在。CPU中用来存储操作数的存储单元主要有:堆栈、累加器或一组寄存器。因此如果根据CPU内部存储单元类型对指令集结构进行分

5、类,可分为:堆栈型指令集结构、累加器型指令集结构和通用寄存器型指令集结构CPU提供的暂存器堆栈累加器一组寄存器CPU对操作数的不同存取方式每条ALU指令显式表示的操作数个数012/3运算结果的目的地堆栈累加器寄存器或存储器访问显式操作数的方法PUSH/POPLOAD/STORE累加器LOAD/STORE寄存器或存储器累加器型堆栈型通用寄存器型 通用寄存器型指令集结构的一个主要优点就是能够使编译器有效地使用寄存器。这不仅体现在表达式求值方面,更重要的是体现在利用寄存器存放变量所带来的优越性。(A*B)-(C*D)-(E*F) 将变量分配给寄存器,不但能够减少存储器的通信量,加快程序的执行速度,而

6、且和存储器相比,还可以用更少的地址位来寻址寄存器,从而能够有效改进程序的目标代码大小。通用寄存器型通用寄存器型指令集结构的主要优点 使编译器有效地使用寄存器。 (1) 在表达式求值方面,比其它类型指令集结构 具有更大的灵活性; (2) 寄存器可以用来存放变量。 减少存储器的通信量,加快程序的执行速度。 (因为寄存器比存储器快) 可以用更少的地址位来寻址寄存器,从而可 以有效改进程序的目标代码大小。 CPU需要设置多少个寄存器呢? 主要由编译器使用寄存器的情况来决定。 为表达式求值保留一些寄存器 为传递参数保留一些寄存器 用剩下的寄存器来保存变量指令集结构类型优 点缺 点寄存器寄存器型(0,3)

7、 简单,指令字长固定,是一种简单的代码生成模型,各种指令的执行时钟周期数相近。 和指令中含有对存储器操作数访问的结构相比,指令条数多,因而其目标代码较大。寄存器存储器型(1,2) 可以直接对存储器操作数进行访问,容易对指令进行编码,且其目标代码较小。 指令中的操作数类型不同。在一条指令中同时对一个寄存器操作数和存储器操作数进行编码,将限制指令所能够表示的寄存器个数。由于指令的操作数可以存储在不同类型的存储器单元,所以每条指令的执行时钟周期数也不尽相同。存储器存储器型(3,3) 是一种最紧密的编码方式,无需“浪费”寄存器保存变量。 指令字长多种多样。每条指令的执行时钟周期数也大不一样,对存储器的

8、频繁访问将导致存储器访问瓶颈问题。Comparison of ISA ClassesCode Sequence for C = A+BMemory efficiency? Instruction access? Data access?三种类型指令集结构的优缺点指令集结构类型堆栈型累加器型寄存器型优点是一种表示计算的简单模型;指令短小减少了机器的内部状态;指令短小是代码生成的最一般的模型缺点不能随机访问堆栈,从而很难生成有效代码。同时,由于堆栈是瓶颈,所以很难被高效地实现由于累加器是唯一的暂存器,这种机器的存储器通信开销最大所有操作数均需命名,且要显式表示,因而指令较长Examples of

9、Register UsageTypical ALU InstructionsMIPS : add Rd, Rs, Rt (0,3)80 x86 : ADD AL, SI (1,2)VAX: CMPB (R0), (R0) (2,2)Pros and Cons Register-Register: (0,3)+Simple, fixed length instruction encoding.+Simple code-generation model.+Similar number of clocks to execute.-Higher instruction count.-Bit encod

10、ing may be wasteful.Memory-memory: (3,3)+Most compact.-Different Instruction size.-Memory access bottleneck.Register-Memory: (1,2)+Data access without loading first.+Easy to encode and yield good density.-One operand is destroyed.-Limited number of registers.Byte OrderingIdeaBytes in long word numbe

11、red 0 to 3Which is most (least) significant?Can cause problems when exchanging binary data between machinesBig Endian: Byte 0 is most, 3 is leastIBM 360/370, Motorola 68K, Sparc.Little Endian: Byte 0 is least, 3 is mostIntel x86, VAXAlphaChip can be configured to operate either wayDEC workstation ar

12、e little endianCray T3E Alphas are big endian寻址方式Addressing Modes在通用寄存器指令集结构中,一般是利用寻址方式指明指令中的操作数是一个常数、一个寄存器操作数,抑或是一个存储器操作数。 当前指令集结构中使用的一些操作数寻址方式。寻址方式Addressing ModesImmediate立即寻址Add R4, #3RegsR4 RegsR4+3Operand:3Register寄存器寻址Add R4, R3RegsR4 RegsR4+RegsR3R3OperandRegistersRegister Indirect寄存器间接寻址Add

13、 R4, (R1)RegsR4 RegsR4+MemRegsR1R1OperandRegistersMemoryDirect直接寻址Add R4, (1001)RegsR4 RegsR4+Mem10011001OperandMemoryMemory Indirect存储器间接寻址Add R4, (R3)RegsR4 RegsR4+MemMemRegsR3R3OperandRegistersMemoryDisplacement偏移寻址Add R4, 100(R1)RegsR4 RegsR4+Mem100+R1RegistersR1100MemoryOperandScaled缩放寻址Add R1,

14、 100(R2) R3RegsR1 RegsR1+Mem100+ RegsR2+RegsR3*dRegistersR2100MemoryOperandR3*d寻址方式指令实例含 义寄存器寻址Add R4 , R3RegsR4RegsR4RegsR3立即值寻址Add R4 , #3RegsR4RegsR43偏移寻址Add R4 , 100(R1)RegsR4RegsR4Mem100+RegsR1寄存器间接寻址Add R4 , (R1)RegsR4RegsR4MemRegsR1索引寻址Add R3 , (R1 + R2)RegsR3RegsR3MemRegsR1+RegsR2直接寻址或绝对寻址Ad

15、d R1 , (1001)RegsR1RegsR1Mem1001存储器间接寻址Add R1 , (R3)RegsR1RegsR1MemMemRegsR3自增寻址Add R1 , (R2)+RegsR1RegsR1MemRegsR2RegsR2RegsR2d自减寻址Add R1, -(R2)RegsR2RegsR2dRegsR1RegsR1+MemRegsR2缩放寻址AddR1 , 100(R2)R3RegsR1RegsR1Mem100RegsR2RegsR3*dAddressing Mode Usage3 Programs from SPEC89 on VAXOthers : 0.1%10%2

16、4%43%32%6%16%3%17%55%1%6%11%39%40%0%20%40%60%Memory IndirectRegister IndirectDisplacementFrequency of addressing modegccspiceTex0%30%50%ImmediateScaled立即值寻址方式和偏移寻址方式的使用频率十分高。偏移寻址的大小寄存器寄存器型指令集结构的机器上(MIPS)运行SPECint92基准程序集 (compress、espresso、eqntott、gcc、li) 运行SPECfp92基准程序集 (dudoc、ear、hydro2d、mdljdp2、su

17、2cor)Average of 5 programs from SPECint92 and SPECfp92.X-axis is log2 of displacement.1% of addresses 16 bits.Integer AverageFP AverageDisplacement Address Size程序所使用的偏移量大小分布十分广泛; 较小的偏移量和较大的偏移量均占有相当大的比例;将偏移量字段的大小设置为1216位。这种长度可 以支持上述7599基于偏移寻址方式的数据访 问中偏移量大小的表示。 偏移大小的总结Load/Store:10 Programs from SPECI

18、nt92 and SPECfp9210%87%58%35%45%77%78%10%0%50%100%LoadsComparesALUALlInst.Percentage of operations using immediateFpIntegerImmediate Addressing ModeImmediate Addressing Mode50% to 60% fit within 8 bits75% to 80% fit within 16 bitsgccspiceTex 将立即值的大小设置为816位,可以覆盖所有使用立即值寻址方式指令的5080。 Addressing Mode Sum

19、maryImportant data addressing modesDisplacementImmediateRegister IndirectDisplacement size should be 12 to 16 bits.Immediate size should be 8 to 16 bits.指令集结构的功能设计确定软、硬件功能分配,即确定哪些基本功能应该由硬件实现,哪些功能由软件实现比较合适。在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度、成本、灵活性硬件实现的特点 速度快、成本高、灵活性差软件实现的特点 速度慢、价格便宜、灵活性好对指令集的基本要求 完整性、规整性、高

20、效率、兼容性 完整性:在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令集所提供的指令足够用。要求指令集功能齐全、使用方便基本指令扩展指令Instruction OperationsArithmetic and Logical:add, subtract, and , or, etc.Data transfer:Load, Store, etc.Control:Jump, branch, call, return, trap, etc.Synchronization:Test & Set.String:string move, compare, search.操作类型实 例算

21、术和逻辑运算整数的算术和逻辑操作:加、减、与、或等。数据传输Load/Store控制分支、跳转、过程调用和返回、自陷等。系统操作系统调用、虚拟存储器管理等。浮点浮点操作:加、乘等。十进制十进制加、十进制乘、十进制到字符的转换。字符串字符串移动、字符串比较、字符串搜索等。图形象素操作、压缩/解压操作等。一般的指令集中操作的分类基本扩展规整性:主要包括对称性和均匀性。对称性:所有与指令集有关的存储单元的使用、操作码的设置等都是对称的。例如:在存储单元的使用上,所有通用寄存器都要同等对待。在操作码的设置上,如果设置了A-B的指令,就应该也设置B-A的指令。 均匀性:指对于各种不同的操作数类型、字长、

22、操作种类和数据存储单元,指令的设置都要同等对待。例如:如果某机器有5种数据表示,4种字长,两种存储单元,则要设置542=40种同一操作的指令。高效率:指指令的执行速度快、使用频度高。计算机指令系统优化设计的两种方向指令系统优化设计有两个截然相反的方向:CISC:增强指令功能,设置一些复杂指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统来实现。 强化指令功能,实现软件功能向硬件功能转移。 (减少IC)RISC:尽量简化指令功能,只保留那些功能简单,能在一个节拍内执行完成指令,复杂的功能用一段子程序来实现。 尽可能地降低指令集结构的复杂性,以达到简化 实现,提高性能的目的。(减少CPI)

23、CISC计算机指令集结构的功能设计CISC设计风格的主要特点是:(1)指令系统复杂;复杂(2)绝大多数指令需要多个机器周期方可执行完毕;费时(3)各种指令都可访问存储器;自由主义(4)采用微程序控制;地方主义(5)有专用寄存器;小金库(6)难以用优化编译器生成高效的目标代码程序。低效率CISC计算机指令集结构的功能设计面向目标程序增强指令功能目标程序是由机器指令直接组成的,是要在处理机上直接执行的,因此,面向目标程序优化指令系统性能是提高计算机系统性能的最直接的办法。优化目标程序的指标主要有两个:缩短程序长度;缩短程序执行时间。优化目标程序的方法:对大量的目标程序及其执行情况进行统计分析,找出

24、那些使用频度高、执行时间长的指令或指令串,用硬件实现。CISC结构追求的目标: 强化指令功能,减少程序的指令条数,以达到提高性能的目的。增强指令功能主要是从如下几个方面着手:CISC计算机指令集结构的功能设计优化目标程序的途径:提高运算型指令功能sin(x)、cos(x)、tg(x)、ln(x)、lg(x)多项式、快速傅立叶变换等提高传送指令功能Intel 8088处理机主要数据传送指令的使用情况指令种类使用频度%执行时间%MOV 24.85 17.44PUSH 10.36 11.11POP 4.14 2.61合计 39.35 31.16增加程序控制指令功能在一般高级语言中,循环体中只有一条语

25、句的40%;一至三条语句的70%。三条指令:加法、比较、条件转移。合成一条指令CISC计算机指令集结构的功能设计面向高级语言和编译程序改进指令系统(1)增加对高级语言和编译系统支持的指令功能对源程序中各种高级语言语句进行使用频度的统计与分析,对于使用频度高的语句,可以设置专门的指令或采取措施增加相应令的功能,以提高其编译速度和执行速度。 从面向编译程序,尤其是从优化代码生成的角度进行考虑,增加指令集结构的规整性来改进指令系统。 规整性:没有或尽可能减少例外的情况和特殊的应用,以及所有运算都能对称、均匀地在存储器单元或寄存器单元之间进行。CISC计算机指令集结构的功能设计(2)高级语言计算机指令

26、系统面向高级语言(HL)的机器缩小机器语言和高级语言的语义差距。间接执行型高级语言机器高级语言和机器语言是一一对应的,用汇编的方法(可以用软件实现,也可以用硬件实现)把高级语言源程序翻译成机器语言程序。直接执行型高级语言机器高级语言就作为机器语言,直接由硬件或固件对高级语言源程序的语句逐条进行解释以执行它。高级语言不需要编译,直接由机器的硬件来执行,如LISP计算机、PROLOG计算机等。CISC计算机指令集结构的功能设计面向操作系统的优化实现改进指令系统操作系统的实现在很大程度上取决于体系结构的支持。 (1) 主要表现在对以下方面的支持 中断处理 进程管理 存储管理和保护 系统工作状态的建立

27、与切换CISC计算机指令集结构的功能设计 (2) 设置指令 支持系统工作状态和访问方式转移的指令 支持进程转移的指令 支持进程同步和互斥的指令CISC结构的缺点各种指令使用频率相差悬殊设计复杂,增加了成本,测试困难复杂性不利于VLSI设计指令执行慢不利于流水线技术的使用Top-9 x86 Instructions94%20%与80%定律RISC计算机指令集结构的功能设计RISC的定义与特点:大多数指令在单周期内完成;采用LOAD/STORE结构;硬布线控制逻辑;减少指令和寻址方式的种类;固定的指令格式;注重译码的优化。RISC计算机指令集结构的功能设计遵循如下原则:选取使用频率最高的指令,并补

28、充一些最有用的指令;每条指令的功能尽可能简单,并在一个中期内完成;所有指令长度均相同;LOAD/STROE结构;以简单有效的方式支持高级语言。RISC思想的精华减少指令平均执行周期数P=I*CPI*TCISC与RISC的比较类型指令条数(I)指令平均周期数(CPI)周期时间(T)CISC 1215 33ns5nsRISC 1.31.4 1.11.4 10ns2nsRISC的关键技术延时转移技术;指令取消技术;重叠寄存器窗口技术;指令流调整技术;硬件为主固件为辅;CISC和RISC两种设计风格的比较,其实就是说RISC优点,简单地说就是快、省、可靠、易实现、好优化。CISC与RISC的比较快就是

29、提高处理器运算速度省就是降低设计成本可靠就是提高处理器的可靠性和可测试性易实现就是使控制器简单,从而使集电路的设计和验证更容易好优化就是能与编译技术较好匹配,有效支持高级语言实现, 易于实现优化编译。早期RISC微处理器1981年 ,Berkeley分校的Patterson 等人的32位微处理器RISC I:31条指令,指令字长都是32位,78个通用寄存器,时钟频率为8 MHz; 控制部分所占的芯片面积只有约6%。商品化微处理器MC68000和Z8000分别为50%和53%;性能比MC68000和Z8000快34倍1983年的RISC :指令条数为39,通用寄存器个数为138,时钟频率为12

30、MHz ; 后来发展成了Sun公司的SPARC系列微处理器1981年,Stanford大学Hennessy等人的MIPS :后来发展成了MIPS Rxxx系列微处理器;IBM的801 :共同特点:采用load-store结构指令字长为32位采用高效的流水技术控制指令的种类跳转(jump):当控制指令为无条件改变控制流时,称之为 “跳转”。分支(conditional branch):当控制指令是有条件改变控制流 时,称之为“分支”。调用(call)返回(return)控制指令控制指令的使用频度Load/Store型指令集结构的机器,SPECint92、Specfp92基准程序改变控制流的大部分

31、指令是条件分支指令。Methods of Testing ConditionCondition code: Status bits are set by ALU operations.Add r1, r2, r3 and bz labelExtra status bitsCondition register:cmp r1, r2, r3 and bgt r1, labelSimple, but use up a registerCompare and branchbgt r1, r2, labelOne instructionToo much work per instruction条件测试方

32、法表示分支条件的技术测试分支条件的方法优 点缺 点条件码(CC) 在程序的控制下,由ALU操作设置特殊的位。 可以自由设置分支条件。CC是额外状态,条件码限制了指令顺序,因为必须从一条指令将分支条件信息传送到分支指令。条件寄存器 根据比较结果测试条件寄存器。 简单 占用了一个寄存器。 比较且分支比较操作是分支指令的一部分,通常这种比较是受一定限制的。一条指令完成了两条指令的功能。 分支指令的操作增多。常用的三种表示分支条件的技术及其优缺点 Conditional Branch DistanceShort displacement fields often sufficient for bran

33、chInteger AverageFP AverageConditional Branch AddressingPC-relative, since most branches from current PC addressAt least 8 bits.Compare Equal/Not Equal most important for integer programs.分支目标地址的表示 PC相对寻址:在指令中提供一个和程序计数 器(PC)的值相加的偏移量。 (1) 有效地缩短指令中表示目标地址的字段的 长度; (2) 使得代码在执行时与它被载入的位置无关。 关键问题是: 转移目标离当前控

34、制指令的偏移量有多大? 过程调用和返回的状态保存 两种方法来保存寄存器的内容: (1) “调用者保存”方法 在一个调用者调用别的过程时,必须保存调用 者所要保存的寄存器,以备调用结束返回后,能够 再次访问调用者。 (2) “被调用者保存”方法 被调用的过程必须保存它要用的寄存器,保证 不会破坏过程调用者的程序执行环境,并在过程调 用结束返回时,恢复这些寄存器的内容。数据类型与数据表示数据的主要类型: 整数、浮点、字符、字符串、向量、堆栈等。数据类型的表示方法: 由操作码的编码指定 硬件标记操作数的类型、表示和大小确定操作数表示是软硬件取舍折衷的问题。Data Types and UsageBy

35、te, half word (16 bits), word (32 bits), double word (64 bits).Arithmetic: Decimal: 4bit per digit.Integers: 2s complementFloating-point: IEEE standard- single, double, extended precision. Data数据类型总结基准程序对单字和双字的数据访问具有较高的频率。 选择操作数字段的长度为32位,可以有效支持8、16、 32位整型操作数,以及32位浮点操作数的表示。 选择操作数字段长度为64位,则更具有一般性。浮点数的

36、数据格式和采用的码制sef313023220符号阶码尾数单精度实数sef636252510符号阶码尾数双精度实数e:偏码表示;f:原码表示单精度偏移量:127;双精度偏移量1023。(-1)S1.f2e-127 (-1)S1.f2e-1023 指令格式设计 指令由操作码和地址码组成。 指令集格式的设计 确定操作码字段和地址码字段的大小及其组合 形式,以及各种寻址方式的编码方法。 设计原则 尽可能地增加寄存器数目和寻址方式类型; 充分考虑寄存器字段和寻址方式字段对指令平均 字长的影响,以及它们对目标代码大小的影响; 设计出的指令集格式能够在具体实现中容易处理。寻址方式表示方法两种表示寻址方式的方

37、法 (1) 将寻址方式编码于操作码中,由操作码在描述指 令操作的同时,也描述了相应操作的寻址方式; (2) 为每个操作数设置一个地址描述符,由该地址描 述符表示相应操作数的寻址方式。 如何选择寻址方式表示方法 由两个因数决定: (1) 指令集结构所采用的寻址方式种类及其适用范围 (2) 操作码与寻址方式之间的独立程度 指令格式的选择 三种指令集编码格式 : 变长编码格式 固定长度编码格式 混合型编码格式 1. 变长编码格式 有效减少指令集结构的平均指令长度,降低目标代码 的长度。 使得各条指令的字长和执行时间大不一样。多数CISC计算机的指令集结构均是采用这种编码格式。2. 固定长度编码格式

38、将操作类型和寻址方式组合编码在操作码中,所有指 令的长度是固定唯一的。3. 混合型编码格式 通过提供一定类型的指令字长,期望能够兼 顾降低目标代码长度和降低译码复杂度两个目标。 Instruction FormatFixedOperation, address specifier 1, address specifier 2, address specifier 3.MIPS, SPARC, Power PC.VariableOperation & # of operands, address specifier1, , specifier n.VAXHybridIntel x86operat

39、ion, address specifier, address field.Operation, address specifier 1, address specifier 2, address field.Operation, address field, address specifier 1, address specifier 2. Summary:If code size is most important, use variable format.If performance is most important, use fixed format.Summary: ISAUse

40、general purpose registers with a load-store architecture. Support these addressing modes: displacement, immediate, register indirect.Support these simple instructions: load, store, add, subtract, move register, shift, compare equal, compare not equal, branch, jump, call, return.Support these data si

41、ze: 8-,16-,32-bit integer, IEEE FP standard.Provide at least 16 general purpose registers plus separate FP registers and aim for a minimal instruction set.现代编译技术对计算机体系结构设计的影响如何分配和寻址变量?用多少个寄存器分配变量比较合适?优化技术对指令使用频度有何影响?程序中有那些控制指令?其使用频度如何?分配数据的三种不同区域堆栈:用来分配局部变量(分配寄存器)全局数据区:分配静态说明的对象(分配寄存器)堆:动态分配一些不适合在堆栈

42、中的对象计算机体系结构对当前编译技术的影响“规整性”:要求指令集中的主要元素(操作、数据类型和寻址方式)必须正交。即:任何两个元素彼此独立。“提供基本指令,而非解决方案”“简化方案的折衷取舍标准”“对于编译时就已经知道的量,提供能够将其变为常数的指令”32个64位通用寄存器(GPRs)R0,R1,R31也被称为整数寄存器R0的值永远是032个64位浮点数寄存器(FPRs)F0,F1,F31用来存放32个单精度浮点数(32位),也可以用来存放32个双精度浮点数(64位)存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。一些特殊寄存器它们可以与通用寄存器交换数据。例如,浮点状态寄存器

43、用来保存有关浮点操作结果的信息。MIPS指令集结构介绍MIPS64的一个子集,简称为MIPS。1、MIPS的寄存器MIPS的数据表示整数字节(8位) 半字(16位)字(32位) 双字(64位)浮点数单精度浮点数(32位) 双精度浮点数(64位)字节、半字或者字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照64位整数的方式进行运算。2、MIPS的数据表示立即数寻址与偏移量寻址立即数字段和偏移量字段都是16位的。寄存器间接寻址是通过把0作为偏移量来实现的16位绝对寻址是通过把R0(其值永远为0)作为基址 寄存器来完成的MIPS的存储器是按字节寻址的,

44、地址为64位所有存储器访问都必须是边界对齐的3、MIPS的数据寻址方式寻址方式编码到操作码中所有的指令都是32位的操作码占6位3种指令格式4、MIPS的指令格式I类指令包括所有的load和store指令、立即数指令、,分支指令、寄存器跳转指令、寄存器链接跳转指令。立即数字段为16位,用于提供立即数或偏移量。load指令访存有效地址:Regsrsimmediate从存储器取来的数据放入寄存器rtstore指令访存有效地址:Regsrsimmediate要存入存储器的数据放在寄存器rt中立即数指令Regsrt Regsrs op immediate分支指令转移目标地址:Regsrsimmediat

45、e,rt无用寄存器跳转、寄存器跳转并链接转移目标地址为RegsrsR类指令包括ALU指令、专用寄存器读/写指令、move指令等。ALU指令 Regsrd Regsrs funct Regsrt func为具体的运算操作编码J类指令包括跳转指令、跳转并链接指令、自陷指令、异常返回指令。在这类指令中,指令字的低26位是偏移量,它与PC值相加形成跳转的地址。MIPS指令可以分为四大类load和storeALU操作分支与跳转浮点操作符号的意义xny:从y传送n位到xx,yz:把z传送到x和y 下标:表示字段中具体的位;对于指令和数据,按从最高位到最低位(即从左到右)的顺序依次进行编号,最高位为第0位,

46、次高位为第1位,依此类推。下标可以是一个数字,也可以是一个范围。例如:RegsR40:寄存器R4的符号位 RegsR456.63:R4的最低字节5、MIPS的操作Mem:表示主存;按字节寻址,可以传输任意个字节。上标:用于表示对字段进行复制的次数。例如:0 32:一个32位长的全0字段符号#:用于两个字段的拼接,并且可以出现在数据传送的任何一边。举例:R8、R10:64位的寄存器,则RegsR832.63 32 (Mem RegsR60)24# Mem RegsR6表示的意义是: 以R6的内容作为地址访问内存,得到的字节按符号位扩展为32位后存入R8的低32位,R8的高32位(即RegsR80

47、.31)不变。 load和store指令指令举例 指令名称 含 义 LD R2,20(R3) 装入双字 RegsR264 Mem20+RegsR3 LW R2,40(R3) 装入字 RegsR264 (Mem40+RegsR30)32 # Mem40+RegsR3 LB R2,30(R3) 装入字节 RegsR264 (Mem30+RegsR30)56 # Mem30+RegsR3 LBU R2,40(R3) 装入无符号字节 RegsR264 056 # Mem40+RegsR3 LH R2,30(R3) 装入半字 RegsR264 (Mem30+RegsR30)48 #Mem30+RegsR

48、3# Mem31+RegsR3 L.S F2,60(R4) 装入半字 RegsF264 Mem60+RegsR4 # 032 L.D F2,40(R3) 装入双精度浮点数 RegsF264 Mem40+RegsR3 SD R4,300(R5) 保存双字 Mem300+RegsR564 RegsR4 SW R4,300(R5) 保存字 Mem300+RegsR532 RegsR4 S.S F2,40(R2) 保存单精度浮点数Mem40+RegsR232 RegsF2 031 SH R5,502(R4)保存半字Mem502+RegsR416 RegsR5 48.63 ALU指令寄存器-寄存器型(R

49、R型)指令或立即数型算术和逻辑操作:加、减、与、或、异或和移位等指令举例 指令名称 含义 DADDUR1,R2,R3 无符号加 RegsR1 RegsR2+ RegsR3 DADDIU R4,R5,#6 加无符号立即数 RegsR4 RegsR5+6 LUIR1,#4 把立即数装入到一个字的高16位 RegsR1 032 # 4 # 016DSLLR1,R2,#5 逻辑左移 RegsR1 RegsR25 DSLT R1,R2,R3 置小于 If(RegsR2 RegsR3)RegsR1 1 else RegsR10 R0的值永远是0,它可以用来合成一些常用的操作。例如:DADDIU R1,R0

50、,#100 /给寄存器R1装入常数100DADD R1,R0,R2 /把寄存器R2中的数据传送到寄存器R1由一组跳转和一组分支指令来实现控制流的改变典型的MIPS控制指令6、MIPS的控制指令指令举例 指令名称 含义 J name 跳转 PC 3663 name2JAL name 跳转并链接 RegsR31PC+4;PC 3663name2;(PC+4)227)name(PC+4)+227) JALR R3 寄存器跳转并链接 RegsR31PC+4;PC RegsR3 JR R5 寄存器跳转 PC RegsR5 BEQZ R4,name 等于零时分支 if(RegsR4= 0) PCname

51、;(PC+4)217)name(PC+4)+217) BNE R3,R4,name 不相等时分支 if(RegsR3!= RegsR4) PCname(PC+4)217)name(PC+4)+217) MOVZ R1,R2,R3 等于零时移动 if(RegsR3=0) RegsR1 RegsR2 ?跳转指令根据跳转指令确定目标地址的方式不同以及跳转时是否链接,可以把跳转指令分成4种。确定目标地址的方式把指令中的26位偏移量左移2位(因为指令字长都是4个字节)后,替换程序计数器的低28位。间接跳转:由指令中指定的一个寄存器来给出转移目标地址。跳转的两种类型简单跳转:把目标地址送入程序计数器。跳转

52、并链接:把目标地址送入程序计数器,把返回地址(即顺序下一条指令的地址)放入寄存器R31。分支指令(条件转移)分支条件由指令确定。例如:测试某个寄存器的值是否为零提供一组比较指令,用于比较两个寄存器的值。例如:“置小于”指令有的分支指令可以直接判断寄存器内容是否为负,或者比较两个寄存器是否相等。分支的目标地址。由16位带符号偏移量左移两位后和PC相加的结果来决定一条浮点条件分支指令:通过测试浮点状态寄存器来决定是否进行分支。由操作码指出操作数是单精度(SP)或双精度(DP)后缀S:表示操作数是单精度浮点数后缀D:表示是双精度浮点数浮点操作包括加、减、乘、除,分别有单精度和双精度指令。浮点数比较指

53、令根据比较结果设置浮点状态寄存器中的某一位,以便于后面的分支指令BC1T(若真则分支)或BC1F(若假则分支)测试该位,以决定是否进行分支。7、MIPS的浮点操作DLX指令集结构DLX (pronounced DELUX) is an instruction set introduced by Hennessy and Patterson.DLX is very RISC oriented.DLX will be used for many examples throughout the course.DLX是一种多元未饱和型指令集结构。DLX指令集结构的设计思想: 具有一个简单的Load/S

54、tore指令集; 注重指令流水效率; 简化指令的译码; 高效支持编译器。 DLX指令集结构RISC strongly related to MIPS 32bit byte addresses aligned Load/storeStandard datatypes 3 fixed length formats 32 32bit GPRs (r0 = 0) 16 64bit (32 32bit) FPRs FP status register No Condition Codes DLX中的寄存器32个GPRs:R0、R1、R31。R0=032个FPRs:F0、F1、F31。单精度F0、F2、F

55、30。双精度采用奇偶对状态寄存器GPRsFPRsSTRsDLX的数据类型整数:8位、16位和32位,按照32位对齐。浮点:32位(单精度)、64位(双精度)GPRsDLX的寻址方式和数据传送 (1)寻址方式 寄存器寻址 立即值寻址 偏移寻址 寄存器间接寻址 (2) 寄存器寻址字段的大小为5位,用来表示32个 通用寄存器或浮点寄存器。 (3) 存储器地址采用的是高端字节表示顺序,存 储器按字节寻址,其地址宽度为32位。(4) 通过寄存器(通用寄存器和浮点寄存器)和存 储器之间的数据传送操作完成对存储器的访问。DLX的指令格式Op312601516202125Rs1RdimmediateOp312

56、6025Op312601516202125Rs1Rs2targetRdOpxRegister-Register561011Register-ImmediateOp312601516202125Rs1Rs2/OpximmediateBranchJump / CallI类指令R类指令J类指令 寻址方式编码在操作码中。 指令的字长32位,其中用6位表示操作码。DLX中的操作 (1) 四种类型的操作 Load和Store操作 ALU操作 分支和跳转操作 浮点操作 (2) 约定 (1) 符号“”: 数据传送操作 其后附带一个下标n,也即“n” 表示传送 一个n位数据。 (2) 符号“#”: 两个域的串联

57、操作(3) 域的下标:表明从该域中选择某一位。 域中位的标记是从最高位开始标记,并且 起始标记为0。 下标可以是一个单独的数字。 如 RegsR40 :选择寄存器R4中内容的符号位。 下标也可以是一个范围。 如 RegsR324.31 :选择寄存器R3中内容 的最低一个字节。(4) 上标:表示复制一个域。 如 024可以得到一个24位全为0的一个域。(5) 变量Mem:表示存储器中的一个数组, 存储器按照字节寻址。举例:R8和R10:32位寄存器RegsR1016.31 16(MemRegsR80)8 # MemRegsR8的含义。指令实例指令名称含 义LW R1, 30 (R2)载入整型字R

58、egsR1 32 Mem30+RegsR2LW R1, 1000 (R0)载入整型字RegsR1 32 Mem1000+0LB R1, 40 (R3)载入字节RegsR1 32 (Mem40+RegsR30)24 # Mem40+RegsR3LBU R1, 40 (R3)载入无符号字节RegsR1 32 024 # Mem40+RegsR3LH R1, 40 (R3)载入整型半字RegsR1 32 (Mem40+RegsR30)16 # Mem40+RegsR3 # Mem41+RegsR3LF F0, 50 (R3)载入单精度浮点RegsF0 32 Mem50+RegsR3LD F0, 50

59、 (R2)载入双精度浮点RegsF0 # RegsF1 64 Mem50+RegsR2SW 500 (R4), R3储存整型字Mem500+RegsR4 32 RegsR3SF 40 (R3), F0储存单精度浮点Mem40+RegsR3 32 RegsF0SD 40 (R3), F0储存双精度浮点Mem40+RegsR3 32 RegsF0Mem44+RegsR3 32 RegsF1SH 502 (R2), R31储存整型半字Mem502+RegsR2 16 RegsR3116.31SB 41 (R3), R2储存整型字节Mem41+RegsR3 8 RegsR224.31DLX中Load和

60、Store指令实例 ALU操作 简单的算术和逻辑运算 寄存器比较指令(,)指令实例指令名称 含 义Add R1, R2, R3加RegsR1 RegsR2 + RegsR3ADDI R1, R2, #3和立即值相加RegsR1 RegsR2 + 3LHI R1, #42载入高位立即值RegsR1 42 # 016SLLI R1, R2, #5逻辑左移的立即值形式RegsR1 RegsR2 5SLT R1, R2, R3设置小于if (RegsR2 RegsR3) RegsR1 1 else RegsR1 0ALU指令实例 (3) 分支和跳转操作 根据描述目标地址的方法和是否链接可以将 跳转操作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论