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

下载本文档

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

文档简介

计算机体系结构周学海xhzhou@.c国科学技术大学计算机系2022/11/91中国科学技术大学Review设计发展趋势

Capacity Speed Logic 2xin3years 2xin3years DRAM 4xin3years 2xin10years Disk 4xin3years 2xin10years运行任务的时间Executiontime,responsetime,latency单位时间内完成的任务数Throughput,bandwidth“X性能是Y的n倍”:

ExTime(Y) Performance(X) =

ExTime(X) Performance(Y)

2022/11/92中国科学技术大学Amdahl’s定律:CPILaw:执行时间是计算机系统度量的最实际,最可靠的方式CPUtime =Seconds=InstructionsxCyclesxSeconds Program ProgramInstructionCycleSpeedupoverall

=ExTimeoldExTimenew=1(1-Fractionenhanced)+FractionenhancedSpeedupenhanced2022/11/93中国科学技术大学第2章指令集结构设计

2.1指令集结构分类

2.2寻址方式

2.3操作数的类型、表示和大小

2.4指令集功能设计

2.5指令格式2.6编译技术与计算机体系结构

2.7DLX指令集结构2022/11/94中国科学技术大学指令集设计instructionsetsoftwarehardware2022/11/95中国科学技术大学指令集结构:我们必须说明哪些东西?InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstruction指令格式或编码方式。即如何编码?操作数和操作结果的存放位置存放位置?多少个显式操作数?存储器操作数如何定位?哪些操作数可以或不可以放到存储器中?数据类型和大小寻址方式支持哪些操作下一条指令地址jumps,conditions,branchesfetch-decode-executeisimplicit!2022/11/96中国科学技术大学有关ISA的7个方面ClassofISAMemoryaddressingAddressingmodesTypesandsizesofoperandsOperationsControlflowinstructionsEncodinganISA2022/11/97中国科学技术大学2.1ISA的基本分类2022/11/98中国科学技术大学ISA的基本分类累加器型(Accumulator)(1register): 1address addA

acc¬acc+mem[A] 1+xaddress addxA acc¬acc+mem[A+x]堆栈型(Stack): 0address add

tos

¬tos+next通用寄存器型(GeneralPurposeRegister):Register-memory

2address addAB

EA[A]¬EA[A]+EA[B] 3address addABC

EA[A]¬EA[B]+EA[C]Load/Store: 3address addRaRb

Rc

Ra¬Rb+Rc

loadRaRb

Ra¬mem[Rb]

storeRaRb

mem[Rb]¬Ra存储器-存储器型(目前已经没有)2022/11/99中国科学技术大学比较指令条数计算C=A+B2022/11/910中国科学技术大学通用寄存器型占主导地位1980以后至今几乎所有的机器都用通用寄存器结构原因寄存器比存储器快对编译器而言寄存器更容易使用

(A*B)-(B*C)-(A*D)寄存器可以存放变量代码紧凑2022/11/911中国科学技术大学通用寄存器的分类分类原则:ALU指令到底是两地址指令还是三地址指令ALU指令中有多少个操作数可以用存储器寻址,即有多少个存储器操作数2022/11/912中国科学技术大学常见的通用寄存器型指令集结构的优缺点TypeAdvantagesDisadvantagesRegister–register(0,3)Simple,fixed-lengthinstructionen­coding.Simplecodegenerationmodel.Instructionstakesimilarnumbersofclockstoexecute.Higherinstructioncountthanarchitectureswithmemoryreferencesininstructions.Moreinstructionsandlowerinstructiondensityleadstolargerprograms.Register–memory(1,2)Datacanbeaccessedwithoutloadingfirst.Instructionformattendstobeeasytoencodeandyieldsgooddensity.Operandsarenotequivalentsinceasourceoperandinabinaryoperationisdestroyed.Encodingaregisternumberandamemoryaddress

ineachinstructionmayrestrictthenumber

ofregisters.CPIvariesbyoperandlocation.Memory–memory(3,3)Mostcompact.Doesn’twasteregistersfortemporaries.Largevariationininstructionsize,especiallyforthree-operandinstructions.Inaddition,largevariationinworkperinstruction.Memoryaccessescreatememorybottleneck.(Notusedtoday.)2022/11/913中国科学技术大学2.2寻址技术如何解释存储器地址?如何说明寻址方式?1980年以来几乎所有机器的存储器都是按字节编址的ISA设计要关注两个问题:8bits-字节,16bits-半字,32bits-字,64bits-双字如何读32位字,两种方案每次一个字节,四次完成每次一个字,一次完成问题:(1)如何将字节地址映射到字地址(尾端问题)(2)一个字是否可以存放在任何字节边界上(对齐问题)即尾端(Endian)和对齐问题2022/11/914中国科学技术大学尾端问题littleendian,bigendian,在一个字内部的字节顺序问题,如地址xxx00指定了一个字(int),存储器中从xxx00处连续存放ffff0000,则有两种方式:Littleendian

方式下xxx00位置是字的最低字节,整数值为0000ffff,Intel80x86,DECVax,DECAlpha(WindowsNT)Bigendian

方式下xxx00位置是字的最高字节,整数值为ffff0000,IBM360/370,Motorola68k,MIPS,Sparc,HPPA2022/11/915中国科学技术大学对齐问题对一个s字节的对象访问,地址为A,如果Amods=0那么它就是边界对齐的。边界对齐的原因是存储器本身读写的要求,存储器本身读写通常就是边界对齐的,对于不是边界对齐的对象的访问可能要导致存储器的两次访问,然后再拼接出所需要的数。(或发生异常)2022/11/916中国科学技术大学寻址方式寻址方式:如何说明要访问的对象地址有效地址:由寻址方式说明的某一存储单元的实际存储器地址。有效地址vs.物理地址2022/11/917中国科学技术大学AddressingmodeExampleMeaningRegisterAddR4,R3R4¬R4+R3ImmediateAddR4,#3R4¬R4+3DisplacementAddR4,100(R1)R4¬R4+Mem[100+R1]RegisterindirectAddR4,(R1)R4¬R4+Mem[R1]Indexed/BaseAddR3,(R1+R2)R3¬R3+Mem[R1+R2]DirectorabsoluteAddR1,(1001)R1¬R1+Mem[1001]MemoryindirectAddR1,@(R3)R1¬R1+Mem[Mem[R3]]Post-incrementAddR1,(R2)+R1¬R1+Mem[R2];R2¬R2+dPre-decrementAddR1,–(R2)R2¬R2–d;R1¬R1+Mem[R2]Scaled

AddR1,100(R2)[R3]R1¬

R1+Mem[100+R2+R3*d]寻址方式2022/11/918中国科学技术大学各种寻址方式的使用情况?(忽略寄存器直接寻址)三个SPEC89程序在VAX结构上的测试结果:

立即寻址,偏移寻址使用较多2022/11/919中国科学技术大学偏移寻址主要问题:偏移的范围(偏移量的大小)AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)2022/11/920中国科学技术大学立即数寻址AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)2022/11/921中国科学技术大学立即数的大小Thedistributionofimmediatevalues.About20%werenegativeforCINT2000andabout30%werenegativeforCFP2000.ThesemeasurementsweretakenonaAlpha,wherethemaximumimmediateis16bits,forthespeccpu2000programs.AsimilarmeasurementontheVAX,whichsupported32-bitimmediates,showedthatabout20%to25%ofimmediateswerelongerthan16bits.2022/11/922中国科学技术大学寻址方式小结重要的寻址方式:偏移寻址方式,立即数寻址方式,寄存器间址方式SPEC测试表明,使用频度达到75%--99%

偏移字段的大小应该在12-16bits可满足75%-99%的需求

立即数字段的大小应该在8-16bits可满足50%-80%的需求2022/11/923中国科学技术大学Reviewlecture3ISA需考虑的7个方面ClassofISAMemoryaddressingAddressingmodesTypesandsizesofoperandsOperationsControlflowinstructionsEncodinganISAISA的类型通用寄存器型占主导地位寻址方式重要的寻址方式:偏移寻址方式,立即数寻址方式,寄存器间址方式SPEC测试表明,使用频度达到75%--99%偏移字段的大小应该在12-16bits,可满足75%-99%的需求立即数字段的大小应该在8-16bits,可满足50%-80%的需求2022/11/924中国科学技术大学2.3操作数的类型、表示和大小操作数类型和操作数表示也是软硬件的主要界面之一。操作数类型:是面向应用、面向软件系统所处理的各种数据结构。整型、浮点型、字符、字符串、向量类型等类型由操作码确定或数据附加硬件解释的标记,一般采用由操作码确定数据附加硬件解释的标记,现在已经不采用操作数的表示:硬件结构能够识别,指令系统可以直接调用的结构整型:原码、反码、补码浮点:IEEE754标准十进制:BCD码,二进制十进制表示2022/11/925中国科学技术大学操作数的大小基准测试的结论:(1)对单字、双字的数据访问具有较高的频率(2)定义操作数字段长度为64位,更具有一般性2022/11/926中国科学技术大学2.4指令集结构的功能设计CISC计算机指令集结构的功能设计RISC计算机指令结构的功能设计2022/11/927中国科学技术大学典型操作类型一般计算机都支持前三类所有的操作;不同计算机系统对系统支持程度不同,但都支持基本的系统功能。对最后四类操作的支持程度差别也很大,有些机器不支持,有些机器还在此基础上做一些扩展,这些指令有时作为可选的指令。2022/11/928中国科学技术大学Top1080x86Instructions2022/11/929中国科学技术大学控制类指令四种类型的控制流改变:条件分支(Conditionalbranch)、跳转(Jump)、过程调用(Procedurecalls)、过程返回(Procedurereturns)AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)2022/11/930中国科学技术大学控制流类指令中的寻址方式PC-relative方式(相对寻址)说明动态的转移地址方式:

编译时不知道转移地址,程序执行时动态确定转移地址放到某一寄存器中其他方式2022/11/931中国科学技术大学转移目标地址与当前指令的距离AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)建议:PC-relative寻址,偏移地址至少8位2022/11/932中国科学技术大学分支比较类型比较AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)2022/11/933中国科学技术大学ISA对操作类型的选择需考虑的因素:速度、价格和灵活性基本要求:指令系统的完整性、规整性、高效率和兼容性完整性设计:具备基本指令种类兼容性:系列机高效率:指令执行速度快、使用频度高规整性让所有运算部件都能对称、均匀的在所有数据存储单元之间进行操作。对所有数据存储单元都能同等对待,无论是操作数或运算结果都可以无约束地存放到任意数据存储单元中正交性数据类型独立于寻址方式寻址方式独立于所要完成的操作当前对这一问题的处理有两种截然不同的方向CISC和RISC2022/11/934中国科学技术大学CISC计算机ISA的功能设计目标:强化指令功能,减少指令的指令条数,以提高系统性能基本优化方法 1.面向目标程序的优化 面向目标程序的优化是提高计算机系统性能最直接的方法其指标主要缩短程序的长度缩短程序的执行时间优化方法对大量的目标程序机器执行情况进行统计分析,找出使用频度高,执行时间长的指令或指令串对于那些使用频度高的指令,用硬件加快其执行,对于那些使用频度高的指令串,用一条新的指令来代替它2022/11/935中国科学技术大学优化目标程序的主要途径(1/2)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-112022/11/936中国科学技术大学优化目标程序的主要途径(2/2)3)增强程序控制指令的功能在CISC中,一般均设置了多种程序控制指令,正常仅需要转移指令和子程序控制指令2.面向高级语言和编译程序改进指令系统

主要是缩小HL-ML之间的差距1)增强面向HL和Compiler支持的指令功能在用高级语言编写的源程序中,对各种语句的使用频度和执行时间进行统计分析,对使用频度高、执行时间长的语句,增强有关指令的功能,或增加相关的专门指令,从而达到缩短目标程序长度,减少目标程序执行时间的目的,同时也缩短了编译时间2022/11/937中国科学技术大学例如FORTRAN语言和COBOL语言中各种主要语句的使用频度语言一元赋值其他赋值IFGOTOI/ODOCALL其他FORTRAN31.015.011.510.56.54,56.015.0COBOL42.17.5观察结果:(1)一元赋值在其中比例最大,增强数据传送类指令功能,缩短这类指令的执行时间是对高级语言非常有力的支持,(2)其他赋值语句中,增1操作比例较大,许多机器都有专门的增1指令(3)条件转移和无条件转移占22%,38.2%,因此增强转移指令的功能,增加转移指令的种类是必要的2022/11/938中国科学技术大学2)高级语言计算机系统

缩小HL和ML的差别时,走到极端,就是把HL和ML合二为一,即所谓的高级语言计算机。在这种机器中,高级语言不需要经过编译,直接由机器硬件来执行。如LISP机,PROLOG机3)支持操作系统的优化实现-特权指令任何一种计算机系统必须有操作系统的支撑才能工作,而OS又必须用指令系统来实现,指令系统对OS的支持主要有处理器工作状态和访问方式的转换进程的管理和切换存储管理和信息保护进程同步和互斥,信号量的管理等2022/11/939中国科学技术大学ReviewISA研究的问题ISA的分类操作数部分理解存储器地址(尾端和对齐问题)寻址方式操作数的类型、表示和大小问题操作码部分支持哪些类型的操作指令格式研究方法:基于统计的方法研究的一些结论常用寻址方式:立即数、偏移寻址、寄存器间址偏移字段的大小应该在12-16bits,可满足75%-99%的需求

立即数字段的大小应该在8-16bits,可满足50%-80%的需求操作数大小:单字、双字的数据访问具有较高的频率,定义操作数字段长度为64位,更具有一般性2022/11/940中国科学技术大学ISA的功能设计任务:确定硬件支持哪些操作方法:统计的方法两种类型:CISC和RISC控制类指令条件分支最常用寻址方式:PC-relative和偏移地址至少8位,说明动态的转移地址方式CISC强化指令功能,减少程序中指令条数,以提高系统性能2022/11/941中国科学技术大学RISC计算机指令集结构的功能设计采用RISC体系结构的微处理器SUNMicrosystem:SPARC,SuperSPARC,UltaSPARCSGI:MIPSR4000,R5000,R10000,IBM:PowerPCIntel:80860,80960DEC:AlphaMotorola88100HPHP300/930系列,950系列2022/11/942中国科学技术大学从CISC到RISC1975IBM公司率先组织力量,研究指令系统的合理性问题,JohnCoche(1987年图灵奖获得者)1979年IBM801,1986年推出IBMRTPC1979DavidPatterson研究了CISC指令系统主要存在以下几方面的问题:指令使用频度;CISC指令系统复杂-〉增加研制时间和成本,容易出错;VLSI设计困难,不利于单片集成;许多复杂指令操作复杂,运行速度慢;各条指令不规整,不利于先进计算机体系结构技术来提高系统的性能。1981:Patterson等人研制成功了32位RISCI微处理器。31种指令,三种数据类型,只有变址和相对寻址两种寻址方式,字长32位1983:RISCII2022/11/943中国科学技术大学RISC的定义和特点RISC是一种计算机体系结构的设计思想,它不是一种产品。RISC是近代计算机体系结构发展史中的一个里程碑,直到现在,RISC还没有一个确切的定义CMU的一篇论文选择论述RISC的特点大多数指令在单周期内完成采用Load/Store结构硬布线控制逻辑减少指令和寻址方式的种类固定的指令格式注重代码的优化从目前的发展看,RISC体系结构还应具有如下特点:面向寄存器结构十分重视流水线的执行效率-尽量减少断流重视优化编译技术2022/11/944中国科学技术大学90年代,IEEE的MichaelSlater对RISC的定义做了如下描述:RISC为使流水线高效执行,应具有如下特征:简单而统一格式的指令译码大部分指令可以单周期执行完成只有Load/Store指令访存简单寻址方式采用Load延迟技术RISC为使优化编译便于产生优化代码,应具有如下特征:三地址指令格式较多的寄存器对称的指令格式减少指令平均执行周期数是RISC思想的精华2022/11/945中国科学技术大学问题RISC的指令系统精简了,CISC中的一条指令可能由一串指令才能完成,那么为什么RISC执行程序的速度比CISC还要快?

ExecuteTime=CPIXICXTICCPITCISC12~1533ns~5nsRISC1.3~1.41.1~1.410ns~2nsIC:实际统计结果,RISC的IC只比CISC长30%~40%CPI:CISCCPI一般在4~6之间,RISC一般CPI=1,Load/Store为2T:RISC采用硬布线逻辑,指令要完成的功能比较简单,2022/11/946中国科学技术大学RISC为什么会减少CPI硬件方面:硬布线控制逻辑,减少指令和寻址方式的种类,使用固定格式,采用Load/Store,指令执行过程中设置多级流水线。软件方面:十分强调优化编译的作用2022/11/947中国科学技术大学RISC的关键技术延时转移技术指令取消技术重叠寄存器窗口技术指令流调整技术硬件为主固件为辅2022/11/948中国科学技术大学操作类型小结以下指令类型使用频度最高,指令系统应该支持这些类型的指令load,store,add,subtract,moveregister-register,and,shift,compareequal,comparenotequal,branch,

jump,call,return;2022/11/949中国科学技术大学reviewISA功能设计-确定提供哪些操作类型。CISC目标:强化指令功能,减少指令的指令条数,以提高系统性能基本方法:面向目标程序的优化,面向高级语言和编译器的优化RISC目标:通过简化指令系统,用最高效的方法实现最常用的指令主要手段:充分发挥流水线的效率,提高CPI2022/11/950中国科学技术大学2.5指令格式Variable:Fixed:Hybrid:……2022/11/951中国科学技术大学指令格式选择策略•如果代码长度最重要,那么使用变长指令格式

如果性能至关重要,使用固定长度指令

有些嵌入式CPU附加可选模式,由每一应用自己选择性能还是代码量

有些机器使用边执行边解压的方式2022/11/952中国科学技术大学指令格式如果每条指令存在多个存储器操作数,或有多种寻址方式

=>每一操作数都要说明其寻址方式

对于Load-store型机器,每条指令有一个存储器地址,并且只有较少的寻址方式

=>可以将寻址方式反映在操作码中2022/11/953中国科学技术大学reviewISA的分类累加器型、堆栈型和寄存器型寻址方式立即寻址、偏移寻址和寄存器寻址偏移量字段:12~16bits

立即数字段:8to16bits指令格式变长指令格式、定长指令格式、以上两种格式的折中2022/11/954中国科学技术大学MIPS寻址方式/指令格式oprsrtrdimmedregisterRegister(direct)oprsrtregisterBase+index+MemoryimmedoprsrtImmediateimmedoprsrtPCPC-relative+Memory所有指令都是32位宽

RegisterIndirect?2022/11/955中国科学技术大学2.6编译技术与计算机体系结构设计使用汇编语言编程已不是主流现在使用汇编的人很少因此编译器更需要ISA编译器的设计目标正确性编译后代码的速度其他目标编译的速度调试的支持语言间的互操作性等2022/11/956中国科学技术大学现代编译器的典型结构2022/11/957中国科学技术大学优化类型(1/2)高级优化-在源代码级例如:仅一次调用的过程,采用in-line方式,避免CALL局部优化消去公共子表达式:用临时变量保存第一次计算的公共子表达式的值常数传递,将所有被赋值为常数的变量,用该常数值代替降低堆栈的深度,对表达式重新组织,尽量减少表达式求值所用的资源全局优化-对循环和分支进行优化转换代码移动-将在每次循环中计算相同值的代码移到循环外面简化或消去数组下标的计算2022/11/958中国科学技术大学优化类型(2/2)寄存器分配与机器相关的优化降低计算负载如乘法用移位和加法来完成指令调度:重新组织指令序列,尽可能减少断流现象分支偏移的优化重新安排代码,使分支偏移尽可能小2022/11/959中国科学技术大学Level0isthesameasunoptimizedcode.Level1includeslocaloptimizations,codescheduling,andlocalregisterallocation.Level2includesglobaloptimizations,looptransformations(softwarepipelining),andglobalregisterallocation.Level3addsprocedureintegration.TheseexperimentswereperformedontheAlphacompilers.

ChangeininstructioncountfortheprogramslucasandmcffromtheSPEC2000ascompileroptimizationlevelsvary.2022/11/960中国科学技术大学2022/11/961中国科学技术大学StanfordUcodeCompiler优化的效果2022/11/962中国科学技术大学Review功能设计RISCvs.CISC指令格式变长指令格式、定长指令格式、以上两种格式的折中编译技术与计算机系统结构现代编译器的基本结构编译优化-4个层次高层优化:一般在源码上进行,同时把输出传递给以后的优化扫描步骤局部优化:仅在一系列代码片断之内(基本块)将代码优化全局优化:将局部优化扩展为跨越分支,并且引入一组针对优化循环的转换与机器相关的优化:充分利用特定的系统结构2022/11/963中国科学技术大学ISA设计需了解的有关Compiler的问题如何分配变量如何寻址变量需要多少寄存器优化技术对指令使用频度有何影响使用哪些控制结构这些控制结构使用频度2022/11/964中国科学技术大学高级语言分配数据的区域栈(Stack)用来分配局部变量用于存储活动记录(过程调用和返回),通过堆栈指针访问其中的内容。全局数据区(globaldataarea)用来分配被静态说明的对象,如常量和全局变量。其中数组和其他聚集类型的数据结构占很大比例堆(heap)用于分配动态对象,用指针访问,通常不是标量。全局变量和堆变量因为存在别名问题而无法分配到寄存器2022/11/965中国科学技术大学寄存器分配问题栈中对象的寄存器分配相对简单全局变量的寄存器分配相对比较困难堆对象的寄存器分配几乎是不可能的原因:一般用指针来访问,使得几乎无法分配有些全局变量和栈对象由于存在别名问题也无法分配原因:存在多条路径来访问变量的地址。寄存器分配是优化的主要手段,因此在这方面的努力是非常重要的2022/11/966中国科学技术大学关于编译优化的一些研究的结论减少分支语句非常困难大量的优化使得存储器访问操作减少可以减少一些ALU操作结果是控制类指令在统计上占较大比例

控制类指令很难加速2022/11/967中国科学技术大学编译技术与计算机体系结构设计小结有利于编译器的ISA规整性和正交性:没有特殊的寄存器,例外情况尽可能少,所有操作数模式可用于任何数据类型和指令类型,要求操作、数据类型和寻址方式必须正交,有利于简化代码生成过程。完整性:支持基本的操作和满足目标的应用系统需求帮助编译器设计者了解各种代码序列的执行效率和代价,有助于编译器的优化对于在编译时就已经可确定的量,提供能够将其变为常数的指令寄存器分配是关键问题寄存器数目多有利于编译器的设计与实现2022/11/968中国科学技术大学提供至少16个通用寄存器和独立的浮点寄存器

保证所有的寻址方式可用于各种数据传送指令

最小指令集2022/11/969中国科学技术大学一些统计比较结果2022/11/970中国科学技术大学一些结论Load-Store型ISA,move类指令比例大于M-M型ISALoad-Store型ISA,Branch类指令比例小于M-M型ISALoad-Store型ISA,平均CPI和T较小2022/11/971中国科学技术大学ISA的评价-ISA小结执行的指令条数CPI和时钟周期涉及控制和数据通路指令译码的难易程度有效地址计算的复杂程度存储模式控制结构的实现方式编码和对齐问题是否有冗余,是否完备2022/11/972中国科学技术大学ISA的度量动态度量性能分析的主要依据静态度量一般只要代码可以装入存储器,我们不太关心要关心的只是在虚拟存储系统中,页式管理的性能一些统计特性操作类型寻址模式有效地址定位指令和数据存取分支成功和失败指令格式是否有利于预取操作2022/11/973中国科学技术大学2.7DLX指令集结构目标:支持大概率事件不常用的操作由软件来完成简单的Load-Store型流水线可高效实现ISA容易编码支持编译器的优化实现显式地说明一些事情,便于优化有较多的寄存器,便于编译器使用2022/11/974中国科学技术大学DLX的结构32个GPR,R0总是0LoadR0是没有用的32个FPR–用于单精度或双精度数运算对于单精度数运算:F0,F1,...,F31对于双精度数运算:F0,F2,...,F30附加一些状态寄存器存储器模型bigendianbyteaddressable-halfword,word,anddouble所有的访问必须对齐装载字节或半字时,放在寄存器的低位部分,高位部分或者扩展为符号位或者添0指令都是32位的,并且对齐存放2022/11/975中国科学技术大学DLX结构(续)浮点格式为IEEE754

单双精度数的转换是显式的ALU操作总是R-R型的立即数16位寻址方式寄存器寻址,立即值寻址,偏移寻址控制类指令-jumps和branches跳转并链接时,返回地址在R31中目标地址是相对与PC的偏移(最大225)或寄存器四种类型的指令-move,alu,control,fl.pt.2022/11/976中国科学技术大学LB,LBU,SB-loadbyte,loadbyteunsigned,storebyteLH,LHU,SH-sameasabovebutwithhalfwordsLW,SW-loadorstorewordLF,SF-load/storesingleprecisionfloatfrom/toFPR’sLD,SD-load/storedoubleprecisionfloatfrom/toFPRpairMOVI2S-movefromGPRtoaspecialregisterMOVS2I-movefromspecialregistertoaGPRMOVFP2I-move32-bitsfromanFPRtoaGPRMOVI2FP-move32-bitsfromaGPRtoanFPR2022/11/977中国科学技术大学DLXmove类指令举例

LHR1,40(R3)-loadhalfword(signed)R1<-32(M[40+R3]0)16##M[40+R3]##M[41+R3]

LBUR1,40(R3)-loadbyteunsignedR1<-32024##M[40+R3]SF40(R3),F0-storefloatM[40+R3]<-32F0LDF0,40(R3)-loaddoubleF0##F1<-64M[40+R3]-(canthinkofitas2wordsbuttheyrepresenta64bitformattedvalue)SD40(R3),F0-storedoubleM[40+R3]<-32F0;M[44+R3]<-32F1-(theotherrepresentation)(big-endian)2022/11/978中国科学技术大学DLXALU指令IntegerArithmetic(add,sub)X(signed,unsigned)X(register,immediate)e.g.ADD,ADDI,ADDU,ADDUIMULT,MUTU,DIV,DIVU-operandsinFPR’s,result=32bits

Logical(and,or,xor)X(register,immediate)e.g.AND,ANDI,OR,ORI,XOR,XORI

LHIloadsupperhalfofregisterwithimmediatevaluenoteafull32-bitimmediateconstantwilltake2instructions2022/11/979中国科学技术大学DLXALU指令(续)Shifts(left,right)X(logical,arithmetic)X(immediate,variable=reg)e.g.SLL,SLLI,SRAIetc.Setconditionalwellaregisteranyway(LT,GT,LE,GE,EQ,NE)X(register,immediate)e.g.SLT,SGEIputs1or0inthedestinationregisterbranchesthentestforZornonZThingstonoticecheckwhetherlogicalleftshiftscauseCCtochangelackofCCandFPstatusbitsspecifiedlackofrotatesintheshiftoptionslackofaNOToraNEGinstruction2022/11/980中国科学技术大学DLX的控制类指令

InstructionsBEQZ,BNEZ-GPR=0ornot,16bitoffsetfromPC+4BFPT,BFPF-branchonFPcomparebitTorFto16bitoffsetfromPC+4J-jumptoPC+26bitoffset

(Notice:MIPS:-227~227)JR-jumpindirecttolocationspecifiedintheregisterJAL-savePC+4inR31anddoaJJALR-savePC+4inR31anddoaJRTRAP-gotoOSviaavectoredaddress(detailslater)RFE-returntousercode(detailslater)

ExamplesBEQZR4,name::=ifR4=0thenjumptonamewherenameisPC+4+/-somethinglessthan2**152022/11/981中国科学技术大学DLX的浮点操作OPS(ADD,SUB,MULT,DIV)x(Double,Float)e.g.ADDD,ADDF,MULTF,DIVD

ConvertalwaysCVTx2y-convertxformattoyformatxorymaybeInteger,Double,Floate.g.CVTF2D,CVTI2D

Comparesformatsmustmatch(LT,GT,LE,GE,EQ,NE)X(D,F)e.g.LTD,GEF2022/11/982中国科学技术大学DLX的指令格式-I-typeLoadsandStoresALUopsonimmediatesrd<--rs1opimmediateConditionalbranchesrs1istheregistercheckedrdunusedimmediatespecifiestheoffset•JRandJALR:rs1istargetregisterrdandimmediateareunusedbut=0JALR:R31<-PC+42022/11/983中国科学技术大学DLX指令格式•allnon-immediateALUoperations•rd<--rs1funcrs2•read/writespecialregisters•moves(Notice:MIPS:-227~227

)2022/11/984中国科学技术大学其他统计情况Page70–Page73图2.14–2.162022/11/985中国科学技术大学本章小结90年代ISA的主要变化:AddresssizedoublesOptimizationofconditionalbranchesviaconditionalexecutionOptimizationofcacheperformanceviaprefetchSupportformultimediaFasterfloating-pointoperationsISA设计的发展趋势LonginstructionwordsIncreasedconditionalexecutionBlendingofgeneral-purposeandDSParchitectures80x86emulation2022/11/986中国科学技术大学附件MIPSIOperationOverview2022/11/987中国科学技术大学MIPSIOperationOverviewArithmeticLogical:Add,AddU,Sub,SubU,And,Or,Xor,Nor,SLT,SLTUAddI,AddIU,SLTI,SLTIU,AndI,OrI,XorI,LUISLL,SRL,SRA,SLLV,SRLV,SRAVMemoryAccess:LB,LBU,LH,LHU,LW,LWL,LWRSB,SH,SW,SWL,SWR2022/11/988中国科学技术大学Multiply/DivideStartmultiply,divideMULTrs,rtMULTUrs,rtDIVrs,rtDIVUrs,rtMoveresultfrommultiply,divideMFHIrdMFLOrdMovetoHIorLOMTHIrdMTLOrdWhynotThirdfieldfordestination?

(Hint:howmanyclockcyclesformultiplyordividevs.add?)RegistersHILO2022/11/989中国科学技术大学DataTypesBit:0,1BitString:sequenceofbitsofaparticularlength4bitsisanibble8bitsisabyte16bitsisahalf-word32bitsisaword64bitsisadouble-wordCharacter:ASCII7bitcodeUNICODE16bitcodeDecimal:digits0-9encodedas0000bthru1001btwodecimaldigitspackedper8bitbyteIntegers:2'sComplementFloatingPoint:SinglePrecisionDoublePrecisionExtendedPrecisionMxREHowmany+/-#'s?Whereisdecimalpt?Howare+/-exponentsrepresented?exponentbasemantissa2022/11/990中国科学技术大学OperandSizeUsage

Supportforthesedatasizesandtypes:

8-bit,16-bit,32-bitintegersand

32-bitand64-bitIEEE754floatingpointnumbers2022/11/991中国科学技术大学MIPSarithmeticinstructionsInstruction Example Meaning Commentsadd add$1,$2,$3 $1=$2+$3 3operands;exceptionpossiblesubtract sub$1,$2,$3 $1=$2–$3 3operands;exceptionpossibleaddimmediate addi$1,$2,100 $1=$2+100 +constant;exceptionpossibleaddunsigned addu$1,$2,$3 $1=$2+$3 3operands;noexceptionssubtractunsigned subu$1,$2,$3 $1=$2–$3 3operands;noexceptionsaddimm.unsign. addiu$1,$2,100 $1=$2+100 +constant;noexceptionsmultiply mult$2,$3 Hi,Lo=$2x$3 64-bitsignedproductmultiplyunsigned multu$2,$3 Hi,Lo=$2x$3 64-bitunsignedproductdivide div$2,$3 Lo=$2÷$3, Lo=quotient,Hi=remainder Hi=$2mod$3divideunsigned divu$2,$3 Lo=$2÷$3, Unsignedquotient&remainder Hi=$2mod$3MovefromHi mfhi$1 $1=Hi UsedtogetcopyofHiMovefromLo mflo$1 $1=Lo UsedtogetcopyofLoWhichaddforaddressarithmetic?Whichaddforintegers?2022/11/992中国科学技术大学MIPSlogicalinstructionsInstruction Example Meaning Comment

and and$1,$2,$3 $1=$2&$3 3reg.operands;LogicalANDor or$1,$2,$3 $1=$2|$3 3reg.operands;LogicalORxor

xor$1,$2,$3 $1=$2Å$3 3reg.operands;LogicalXORnor nor$1,$2,$3 $1=~($2|$3) 3reg.operands;LogicalNORandimmediate andi$1,$2,10 $1=$2&10 LogicalANDreg,constantorimmediate ori$1,$2,10 $1=$2|10 LogicalORreg,constantxorimmediate xori$1,$2,10 $1=~$2&~10 LogicalXORreg,constantshiftleftlogical sll$1,$2,10 $1=$2<<10 Shiftleftbyconstantshiftrightlogical srl$1,$2,10 $1=$2>>10 Shiftrightbyconstantshiftrightarithm. sra$1,$2,10 $1=$2>>10 Shiftright(signextend)shiftleftlogical sllv$1,$2,$3 $1=$2<<$3 Shiftleftbyvariableshiftrightlogical srlv$1,$2,$3 $1=$2>>$3 Shiftrightbyvariableshiftrightarithm. srav$1,$2,$3 $1=$2>>$3 Shiftrightarith.byvariable

2022/11/993中国科学技术大学MIPSdatatransferinstructionsInstruction Comment

SW500(R4),R3 StorewordSH502(R2),R3 StorehalfSB41(R3),R2 StorebyteLWR1,30(R2) LoadwordLHR1,40(R3) LoadhalfwordLHUR1,40(R3) LoadhalfwordunsignedLBR1,40(R3) LoadbyteLBUR1,40(R3) LoadbyteunsignedLUIR1,40 LoadUpperImmediate(16bitsshiftedleftby16)WhyneedLUI?0000…0000LUIR5R52022/11/994中国科学技术大学WhendoesMIPSsignextend?Whenvalueissignextended,copyupperbittofullvalue:

Examplesofsignextending8bitsto16bits:

000010100000000000001010

100011001111111110001100Whenisanimmediatevaluesignextended?Arithmeticinstructions(add,sub,etc.)signextendimmediates

evenfortheunsignedversionsoftheinstructions!LogicalinstructionsdonotsignextendLoad/Storehalforbytedosignextend,butunsignedversionsdonot.2022/11/995中国科学技术大学MethodsofTestingConditionConditionCodes Processorstatusbitsaresetasaside-effectofarithmeticinstructions(possiblyonMoves)orexplicitlybycompareortestinstructions. ex: addr1,r2,r3

bzlabelConditionRegister Ex: cmpr1,r2,r3

bgtr1,labelCompareandBranch Ex: bgtr1,r2,label2022/11/996中国科学技术大学ConditionalBranchDistance•25%ofintegerbranchesare2to4instructions

2022/11/997中国科学技术大学ConditionalBranchAddressingPC-relativesincemostbranchesarerelativelyclosetothecurrentPCAtleast8bitssuggested(128instructions)CompareEqual/NotEqualmostimportantforintegerprograms(86%)2022/11/998中国科学技术大学MIPSCompareandBranchCompareandBranch

BEQrs,rt,offsetifR[rs]==R[rt]thenPC-relativebranch BNErs,rt,offset <> ComparetozeroandBranchBLEZrs,offset ifR[rs]<=0thenPC-relativebranch BGTZrs,offset > BLT < BGEZ >= BLTZALrs,offsetifR[rs]<0thenbranchandlink(intoR31)BGEZAL >=!RemainingsetofcompareandbranchopstaketwoinstructionsAlmostallcomparisonsareagainstzero!

2022/11/999中国科学技术大学MIPSjump,branch,compareinstructionsInstruction Example Meaning

branchonequal beq$1,$2,100 if($1==$2)gotoPC+4+100

Equaltest;PCrelativebranchbranchonnoteq. bne$1,$2,100 if($1!=$2)gotoPC+4+100

Notequaltest;PCrelativesetonlessthan slt$1,$2,$3 if($2<$3)$1=1;else$1=0 Comparelessthan;2’scomp.setlessthanimm. slti$1,$2,100 if($2<100)$1=1;else$1=0 Compare<constant;2’scomp.setlessthanuns. sltu$1,$2,$3 if($2<$3)$1=1;else$1=0 Comparelessthan;naturalnumberssetl.t.imm.uns. sltiu$1,$2,100 if($2<100)$1=1;else$1=0 Compare<constant;naturalnumbersjump j10000 goto10000

Jumptotargetaddressjumpregister jr$31 goto$31

Forswitch,procedurereturnjumpandlink jal10000 $31=PC+4;goto10000

Forprocedurecall2022/11/9100中国科学技术大学Signedvs.UnsignedComparisonR1=0…000000000000000001R2=0…000000000000000010R3=1…111111111111111111Afterexecutingtheseinstructions:

sltr4,r2,r1;if(r2<r1)r4=1;elser4=0

sltr5,r3,r1;if(r3<r1)r5=1;elser5=0

sltur6,r2,r1;if(r2<r1)r6=1;elser6=0

sltur7,r3,r1;if(r3<r1)r7=1;elser7=0Whatarevaluesofregistersr4-r7?Why?r4=;r5=;r6=;r7=;twotwotwo2022/11/9101中国科学技术大学Calls:WhyAreStacksSoGreat?StackingofSubroutineCalls&ReturnsandEnvironments:A:CALLBCALLCC:RETRETB:AABABCABASomemachinesprovideamemorystackaspartofthearchitecture(e.g.,VAX)Sometimesstacksareimplementedviasoftwareconvention

(e.g.,MIPS)2022/11/9102中国科学技术大学MemoryStacksUsefulforstackedenvironments/subroutinecall&returnevenifoperandstacknotpartofarchitectureStacksthatGrowUpvs.StacksthatGrowDown:abc0Littleinf.Big0Littleinf.BigMemoryAddressesSPNextEmpty?LastFull?Howisemptystac

温馨提示

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

评论

0/150

提交评论