锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

计算机指令集结构设计.ppt

时间:2023-06-10 21:07:00 cd4040bf3a集成电路

a7f4a3f590493a1e451dd952a488fd7c.gif 计算机指令集结构设计.ppt

(90页)

本资源提供全文预览,点击全文预览即可进行全文预览,如果您喜欢下载文档,查找使用更方便哦!

19.90 积分

第二章 计算机指令集结构设计国防科技大学计算机学院指令集结构概述指令集:部分指令集;每个指令直接由CPU硬件执行。指令的表示方法:二进制格式;物理存储空间组织方式是位、字节、字和多字等;当前的指令字长有:16、32、64位;可变长格式和固定长度格式。操作代码搜索模式操作数搜索模式操作数指令特征指令操作非常简单,操作由操作码编码表示。每个操作所需的操作数为0-3个。操作数是一些存储单元的地址;典型的存储单元通常包括:主存储、寄存器、堆栈和累加器。隐含表示或显式表示操作数地址。编码指令集和计算机性能指令集CPI指令集结构的分类 寻址技术设计 指令集结构的功能设计 操作数的类型、表示和大小指令集格式的设计DLX指令集结构 DLX指令集结构效率分析 一般来说,操作码搜址方式操作数搜址方式操作数指令集结构的分类,计算机指令集结构可从以下五个因素进行分类,即:CPU操作数的存储方法;指令中显式表示的操作数;操作数的寻址方式;指令集提供的操作类型;操作数的类型和大小。指令集结构的分类CPU用于存储操作数量的存储单元主要有:堆栈;累加器;一组寄存器。指令集结构的分类CPU用于存储操作数量的存储单元主要包括:堆栈;累加器;一组寄存器。指令中的操作数可以明确或按照约定给出。指令集结构的分类C=A B堆栈累加器寄存器表达式在这三种类型指令集结构上的实现 寄存器(寄存器-寄存器)PUSH APUSH BADDPOP CLOAD AADD BStore CLOAD R1,AADD R1,BStore C,R1LOAD R1,ALOAD R2,BADD R3,R1,R2Store C,R如果指令集结构按照指令集结构的分类进行分类CPU内内存单元类型进行分类,一般可分为:堆栈式指令集结构;累加式指令集结构;通用寄存式指令集结构。还有一些混合结构。还有一些混合结构。Intel 8086指令集结构。From IBM 650: 最早的指令集LOAD x AC?M[x]STORE x M[x]?(AC)ADD x AC? (AC)+ M[x]JUMP x PC ? xJGE x if (AC) ≥0 then PC ? xLOAD ADR x AC?Extract addr field(M[x])STORE ADR x……累加器型指令集结构计算数组Ci ? Ai Bi, 1≤i≤nLOOP LOAD N JGE DONE ADD ONE STORE NF1 LOAD AF2 ADD BF3 STORE C LOAD ADR F1 ADD ONE STORE ADR F1 LOAD ADR F2 ADD ONE STORE ADR F2 LOAD ADR F3 ADD ONE STORE ADR F2 JUMP LOOPDONE HLTABCN-nONE1code index Register(IX)……LOAD x,IX AC ? M[x (IX)]ADD x,IX AC? M[x (IX)]ADD x,IX AC? (AC)+ M[x (IX)]JZi x,IX if (IX)=0 then PC ? x else IX ? (IX) 1LOADi x,IX IX ? M[x] LOADi N,IXLOOP JZi DONE,IX LOAD LASTA,IX ADD LASTB,IX STORE LASTC,IX JUMP LOOPDONE HLTA0...LASTAn-1To IBM 360:GPRIBM 3601632位寄存器,4个浮点寄存器可以作为基址或变址PSW…………INCi k,IX IX? (IX) kSTORE x,IX M[x]? (IX) kSTORE x,IX M[x]?(IX)LOAD Ri,Rj,(Rk) Ri ? M[Rj (Rk)]堆栈指令集PUSH x stack[sp]?M[x];sp=sp-1POP x M[x]?stack[sp];sp=sp 1 ADD stack[sp 1]?stack[sp] stack[sp 1];sp=sp 1 ……计算表达式(a b*c) / (d*c-e)abc* dc*e-/abcab*ca b*ca b*cdca b*cd*ca b*cd*cea b*cd*c-e(a b*c)/ (d*c-e)ExpressionReverse Polish指令集结构的分类CPU每个临时存储器ALU指令显式表示操作数个数运算结果的目的地访问显式操作数的过程Push/Pop累加器1累加器Load/Store累加器一组寄存器2/3寄存器或存储器Load/Store存储器/存储器三种类型指令集结构的优缺点指令集结构类型的优缺点堆栈型是表示计算的简单模型;指令不能随机访问堆栈,有效代码很难生成。同时,由于堆栈是瓶颈,很难有效地实现累加器型,减少机器的内部状态;由于累加器是唯一的临时存储器,最大的存储器通信费用容易生成高效的目标代码,所有操作数量都需要命名和显示,因此早期大多数机器使用堆栈或累加器型指令集结构,但自1980年以来,大多数机器都使用寄存器型指令集结构。寄存器和集成电路技术快速发展有两个主要原因CPU内部。寄存器和集成电路技术快速发展有两个主要原因CPU内部。省略部分。表示单精度浮点数和双精度浮点数。F0F1F2F3F4F5F6F7F8F9F10F11F12F13F14F15F16F17F18F19F20F21F22F23F24F25F26F27F28F29F30F31DLX指令集结构:数据类型整形数据:8位、16位、32位。浮点数据:32位单精度浮点;64位双精度浮点;IEEE 754标准。0000000000000000000000000110010011111111111111111001100001100100DLX指令集结构:寻址方式寄存器寻址;立即寻址;偏移寻址;间接寻址寄存器。存储器地址宽度为32位。DLX指令集结构:指令格式DLX指令集结构:指令格式DLX指令集结构:指令格式DLX指令集结构:操作类型Load和Store操作;ALU操作;分支和跳转操作;浮点操作。DLX指令集结构:操作类型符号表示数据传输操作,然后下标n,也即“?n” 表示传输n位数据。符号##用于表示两个域的串联操作,它可以出现在数据传输操作的任何一侧。DLX指令集结构:操作类型域的下标用于表示从该域中选择一个。域中位的标记从最高位开始,开始标记为0。下标可以是一个单独的数字,比如Regs[R4]0表示选择寄存器R4内容的符号位;下标也可以是一个范围,比如Regs[R3]24..31表示选择寄存器R最低字节3。DLX指令集结构:操作类型上标表示复制一个域,如024可获得24位全为0的一个域。变量Mem用来表示存储器中的数组,存储器可以根据字节传输任何数字节。DLX指令集结构:操作类型Regs[R10]16..31 ?16 (Mem[Regs[R8]]0)8 ## Mem[Regs[R8]]0000000000000000000000000000000010000101R8100001011111111111111111100001010000000000000000 1111111110000101R10DLX指令集结构:操作类型Load和Store操作:是的DLX所有通用寄存器和浮点寄存器Load(载入)和Store(存储)操作,但对于通用寄存器R0的Load操作无效果。DLX指令集结构:操作类型指令实例指令名称 义LW R1 , 30 (R2)加入整形字Regs[R1] ←32 Mem[30 Regs[R2]]LW R1 , 1000 (R0)加入整形字Regs[R1] ←32 Mem[1000 0]LB R1 , 40 (R3)载入字节Regs[R1] ←32 (Mem[40 Regs[R3]]0)24 ## Mem[40 Regs[R3]]LBU R1 , 40 (R三、载入无符号字节Regs[R1] ←32 024 ## Mem[40 Regs[R3]]LH R1 , 40 (R3)加入整形半字Regs[R1] ←32 (Mem[40 Regs[R3]]0)16 ## Mem[40 Regs[R3]]## Mem[41 Regs[R3]]LF F0 , 50 (R3)载入单精度浮点Regs[F0] ←32 Mem[50 Regs[R3]]LD F0 , 50 (R2)载入双精度浮点Regs[F0] ## Regs[F1] ←64 Mem[50 Regs[R2]]SW 500 (R4) , R3储存整型字Mem[500 Regs[R4]] ←32 Regs[R3]SF 40 (R3) , F存单精度浮点0Mem[40 Regs[R3]] ←32 Regs[F0]SD 40 (R3) , F存储双精度浮点Mem[40 Regs[R3]] ←32 Regs[F0]Mem[44 Regs[R3]] ←32 Regs[F1]SH 502 (R2), R31储存整形半字Mem[502 Regs[R2]] ←16 Regs[R31]16..31SB 41 (R3) , R储存整形字节Mem[41 Regs[R3]] ←8 Regs[R2]24..31DLX指令集结构:操作类型ALU操作:在DLX中,所有的ALU指令是寄存器-寄存器指令,其操作包括简单的算术和逻辑操作,如加减AND、OR、XOR和移位。设置相等、设置不等、设置小于寄存器比较指令设置相等、设置不等、设置小于,?,?,?,?),如果比较结果是真的,这些指令将在目标寄存器中填写1(表示真),否则将填写0(表示假)。DLX指令集结构:操作类型指令实例指令名称 义Add R1,R2,R3加Regs[R1] ← Regs[R2] Regs[R3]ADDI R1,R2.#3和立即值相加Regs[R1] ← Regs[R2] 3LHI R1,#42载入高位立即值Regs[R1] ← 42 ## 016SLLI R1,R2.#5逻辑左移立即值形式Regs[R1] ← Regs[R2] <<5SLT R1,R2,R3设置小于if (Regs[R2] < Regs[R3]) Regs[R1] ← 1 else Regs[R1] ← 0DLX指令集结构:操作类型描述目标地址的方法:两种跳转指令用符号位的26位偏移和程序计数器的值确定跳转目标地址;另外两种跳转指令指定寄存器,跳转的目标地址由寄存器中的内容决定。DLX指令集结构:操作类型有两种跳转类型:一种是简单跳转;另一种是跳转和链接(用于过程调用),它将下一个顺序指令地址(返回地址)保存在寄存器中R31中。DLX指令集结构:操作类型有两种跳转类型:一种是简单跳转;另一种是跳转和链接(用于过程调用),它将下一个顺序指令地址(返回地址)保存在寄存器中R31中。DLX指令集结构:操作类型指令实例令名称含义J name跳转PC ←name+PC+4; -225≤name ≤225JAL name跳转并链接Regs[R31] ← PC+4; PC ←name +PC+4;-225≤name ≤225JR R3寄存器型跳转PC ← Regs[R3];JALR R2寄存器型跳转并链接Regs[R31]←PC+4; PC← Regs[R2];BEQZ R4 , name“等于0”分支if (Regs[R4]==0) PC ← name+ PC+4;-215≤name ≤215BNEZ R4 , name“不等于0”分支if (Regs[R4]!=0) PC ← name+ PC+4;-215≤name ≤215DLX指令集结构:操作类型浮点操作:浮点指令的操作数来源于浮点寄存器,同时它还指明了相应的操作是单精度浮点操作还是双精度浮点操作。后缀D代表双精度浮点操作;而后缀F代表单精度浮点操作(如:ADDD、ADDF、SUBD、SUBF、MULTD、MULTF、DIVD、DIVF)。DLX的浮点操作有:加、减、乘、除。DLX中的常用指令DLX中的常用指令DLX的效能分析问题的提出:DLX指令集结构的指令格式、寻址方式和操作都非常简单。也许有人会担心,这些特性会使得目标代码中指令条数增多,导致程序运行时间加长,从而使这种指令集结构的机器性能并不会太高。DLX的效能分析 关 键 词: 指令 结构设计 计算机

 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章