计算机具有指令集结构,计算机指令集结构设计.ppt

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

(90页)

8f95bed6b329889ecdeb71d6459db909.gif

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

19.90 积分

第二章 计算机指令集结构设计国防科技大学计算机学院指令集结构概述指令集:一些指令的集合;每条指令都是直接由CPU硬件执行。指令的表示方法:二进制格式;物理存储空间组织方式是位、字节、字和多字等;当前的指令字长有:16、32、64位;可变长格式和固定长度格式。操作码寻址方式操作数寻址方式操作数指令的特点指令的操作十分简单,其操作由操作码编码表示。每个操作需要的操作数个数为0-3个不等。操作数是一些存储单元的地址;典型的存储单元通常有:主存、寄存器、堆栈和累加器。操作数地址隐含表示或显式表示。指令集与计算机的性能指令集源程序指令译码指令编码CPI和数据通路复杂度目标代码优化编译器内容提要指令集结构的分类 寻址技术设计 指令集结构的功能设计 操作数的类型、表示和大小指令集格式的设计DLX指令集结构 DLX指令集结构效能分析 操作码寻址方式操作数寻址方式操作数指令集结构的分类一般来说,可以从如下五个因素考虑对计算机指令集结构进行分类,即:在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,R3指令集结构的分类如果指令集结构根据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 (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 36016个32位寄存器,可做基址或变址4个64位浮点寄存器PSW…………INCi k,IX IX (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指令显式表示的操作数个数运算结果的目的地访问显式操作数的过程堆栈0堆栈Push/Pop累加器1累加器Load/Store累加器一组寄存器2/3寄存器或存储器Load/Store寄存器/存储器三种类型指令集结构的优缺点指令集结构类型优点缺点堆栈型是一种表示计算的简单模型;指令短小不能随机访问堆栈,从而很难生成有效代码。同时,由于堆栈是瓶颈,所以很难被高效地实现累加器型减小了机器的内部状态;指令短小由于累加器是唯一的暂存器,这种机器的存储器通信开销最大寄存器型易于生成高效的目标代码所有操作数均需命名,且要显式表示,因而指令比较长指令集结构的分类早期的大多数机器都是采用堆栈型或累加器型指令集结构,但是自1980年以来的大多数机器均采用的是寄存器型指令集结构。主要有两个方面的原因:集成电路技术飞速发展寄存器和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表示选择寄存器R3中内容的最低一个字节。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 (R3)载入无符号字节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) , F0储存单精度浮点Mem[40+Regs[R3]] ←32 Regs[F0]SD 40 (R3) , F0储存双精度浮点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) , R2储存整型字节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指令集结构:操作类型指令实例指令名称含义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的效能分析 关 键 词: 指令 结构设计 计算机

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值