计算机组成原理MIPS02技术材料

上传人:re****.1 文档编号:578418606 上传时间:2024-08-24 格式:PPT 页数:63 大小:1MB
返回 下载 相关 举报
计算机组成原理MIPS02技术材料_第1页
第1页 / 共63页
计算机组成原理MIPS02技术材料_第2页
第2页 / 共63页
计算机组成原理MIPS02技术材料_第3页
第3页 / 共63页
计算机组成原理MIPS02技术材料_第4页
第4页 / 共63页
计算机组成原理MIPS02技术材料_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《计算机组成原理MIPS02技术材料》由会员分享,可在线阅读,更多相关《计算机组成原理MIPS02技术材料(63页珍藏版)》请在金锄头文库上搜索。

1、第二章 指令系统1学习研究指令与指令系统指令的格式指令的格式指令格式:操作码,地址码一、操作码一、操作码opcode固定长度操作码:便于译码,扩展性差可变长度操作码:能缩短指令平均长度二、地址码二、地址码addressing code零地址指令,如NOP, CLR一地址指令,如INC R1二地址指令,如ADD R1, R2三地址指令,如ADD R1, R2, R3寻址方式立即数2学习研究例例1 设某台计算机有100条指令,(1) 采用固定长度操作码编码,试设计其操作码的编码。(2) 假如这100条指令中有10条指令的使用概率达到90%,其余90条指令的使用概率为10%。试采用不等长编码设计操作

2、码。n解:解:n(1) 采用固定长度操作码编码时,需要7位操作码。取其中的100个代码作为指令操作码,可以用0000000到1100011之间的代码代表100条指令,即n0000000指令0的操作码n0000001指令1的操作码nn1100011指令99的操作码n剩下从1100100到1111111共28个代码可用于增加新指令,每条指令的操作码的长度都是7。3学习研究n(2) 用4位代码对10条常用指令进行编码,用8位代码对90条不常用代码进行编码,即n0000指令0的操作码n0001指令1的操作码nn1000指令8的操作码n1001指令9的操作码n10100000指令10的操作码n10100

3、001指令11的操作码nn11111001指令99的操作码n指令操作码的平均长度为n490% + 810% = 4.4位n比等长编码的7位小。例例1 设某台计算机有100条指令,(1) 采用固定长度操作码编码,试设计其操作码的编码。(2) 假如这100条指令中有10条指令的使用概率达到90%,其余90条指令的使用概率为10%。试采用不等长编码设计操作码。4学习研究例例2 若某计算机要求有如下形式的指令:三地址指令12条,二地址指令60条,零地址指令16条(不要求有单地址指令)。设指令字长为16位,每个地址码长为4位,试用扩展操作码为其编码。解解:三个地址码12条指令的操作码分别为0000、00

4、01、0010、1011n在双地址指令1100 00001111 1011n零地址指令1111 1100 0000 00001111 1100 0000 11115学习研究指令的格式指令的格式三、指令长度三、指令长度n固定长度取指快、译码简单。单字长、双字长、多字长n可变长度可提高编码效率四、指令助记符四、指令助记符伪指令、累加器,通用寄存器Add $1, $2, $3ADDR1load6学习研究数据的类型及其存储方式数据的类型及其存储方式 n 操作数的类型 整型数、单精度和双精度浮点数、字符型数据长度:单字节、双字节、字、双字、四倍字n操作数的存储方式 大数端(big Endian)和小数端

5、(little Endian)7学习研究 数据的类型及其存储方式数据的类型及其存储方式数据对齐方式 如何判断字对齐?8学习研究字不对齐方式下的数据存储字不对齐方式下的数据存储n访存次数问题Char c;Short int i,j;int k;n跨页问题Char cShort int iInt kShort jShort jInt k9学习研究字对齐方式下的数据存储字对齐方式下的数据存储n空间浪费问题Char c;Short int i,j;int k;cikj10学习研究字对齐方式下的存储器访问字对齐方式下的存储器访问n速度较高n接口较简单CPUByte3Byte2Byte1Byte0寄存器存

6、储器Byte3Byte2Byte1Byte011学习研究CPUByte3Byte2Byte1Byte0寄存器存储器Byte2Byte1Byte0Byte3字不对齐方式下的存储器访问字不对齐方式下的存储器访问l节省空间l访存速度慢l接口复杂12学习研究数据存储方式的例子数据存储方式的例子13学习研究数据对齐的例子数据对齐的例子试改变以下数据结构定义以减少对齐的开销struct Loose short s;/ 16 bitint I;/ 32bitchar c;/ 8 bitFoo* p;/ 64 bit;struct Tight Foo* P;int i;short s;char c;14学习研

7、究寻址方式寻址方式 n按地址寻找与按内容寻找n寻址方式地址码形成操作数存储位置的方式15学习研究寻址方式寻址方式1. 隐含方式如ADD A中的累加器2. 立即数方式如INT #33. 寄存器方式如INC R1操作数16学习研究n4. 直接寻址n如INC 1000操作数寻址方式寻址方式17学习研究寻址方式寻址方式5. 寄存器间接如INC (R1)A操作数18学习研究寻址方式寻址方式6. 存储器间接如INC (1000)A操作数19学习研究寻址方式寻址方式7. 相对寻址如INC 8(PC)操作数20学习研究寻址方式寻址方式8. 变址和基址寻址如INC 8(R1)变址寻址:便于数组访问基址寻址:可扩

8、大寻址范围,可实现程序浮动I操作数21学习研究寻址方式寻址方式9. 复合寻址复合寻址如如INC 8(PC+R1)、INC (R1)(1000)22学习研究例例3n设一条32位指令的存储地址是0x00001000,操作数采用相对寻址,偏移量为8位补码11110000,问数据地址是多少?23学习研究例例4一条双字长的load指令存储在地址为200和201的存储位置,该指令将地址码指定的存储器内容装入累加器AC。指令的第一个字指定操作码和寻址方式,第二个字是地址部分。PC寄存器的值是200。通用寄存器R1的值是400,变址寄存器XR的内容是100。指出在各种寻址方式访问的数据。24学习研究直接寻址方

9、式,装入AC的操作数是800。在立即数寻址方式下,将500装入AC。在间接寻址方式下,操作数是300。在相对寻址方式下,操作数是325。在变址寻址方式下,操作数是900。在寄存器R1寻址方式下,400装入AC。在寄存器R1间接寻址方式下,装入AC的700。解25学习研究一条双字长的指令存储在地址为W的存储器中。指令的地址字段位于地址为W+1处,用Y表示。在指令执行中使用的操作数存储在地址为Z的位置。在一个变址寄存器中包含X的值。试叙述Z是怎样根据其他地址计算得到的,假定寻址方式为(1) 直接寻址(2) 间接寻址(3) 相对寻址(4) 变址寻址例例5 26学习研究(1) 在直接寻址方式下,Z=Y

10、。(2) 在存储器间接寻址方式下,Z = (Y)。(3) 在相对寻址方式下,Z=W+Y+2。(4) 在变址寻址方式下,Z=X+Y。解解27学习研究一条相对转移指令长4个字节,存储在存储器中地址为75010的地方,转移目标地址为50010。问(1) 指令执行之后PC的值为多少?(2) 指令的相对地址字段的值为多少?(3)如果采用补码表示相对地址字段,该指令的相对地址字段需要多少二进制位?例例6 28学习研究解(1) 指令执行之后PC的值为50010。(2) 相对转移指令中的地址偏移量应为500 - 754 = -254(3) 相对地址字段需要9个二进制位。29学习研究寻址方式汇编表示操作内容直接

11、寻址load adracmemadr间接寻址load (adr)acmemmemadr相对寻址load adr(pc)acmempc+adr立即寻址load #nacn变址寻址load adr(rn)acmemadr+rn寄存器寻址load rnacrn寄存器间接寻址load (rn)acmemrn寻址方式的汇编指令表示 30学习研究 指令的访存类型n堆栈型n累加器型n通用寄存器型寄存器-寄存器型寄存器存储器型存储器-存储器型31学习研究指令的访存类型的比较32学习研究 指令集指令集 n数据传送:move, load, storen算术运算:add, sub, mult, div, compn

12、逻辑运算:and, or, neg, shiftn程序控制:jump, branch, jsr, ret, intn输入输出:in, outn堆栈操作:push, popn字符串:MOVS, CMPS, SCAS, LODS, STOSn系统指令:HALT33学习研究转移指令转移指令如: jump $1000 bgt R1n条件转移vs无条件转移n相对转移vs绝对转移n状态寄存器SRNZ V C P 34学习研究常见的条件转移指令常见的条件转移指令 bz为零时转移bnz非零时转移bc进位时转移bnc无进位时转移bp为正数时转移bm为负数时转移bv溢出时转移bnv无溢出时转移bgt大于时转移bg

13、e大于或等于时转移blt小于时转移ble小于或等于时转移beq等于时转移助记符转移条件bne不等于时转移35学习研究转子指令转子指令 n功能实现子程序调用n步骤 将下一条指令的地址(PC的值)存放在一个临时存储位置 将子程序的起始地址装入PC中n子程序返回指令 将存放在临时存储位置的指令地址取出放回PC 36学习研究 指令系统与汇编程序设计实例 MIPS处理器的主要特征指令系统简单所有的指令都是32位宽度指令格式共三种立即数型、转移型和寄存器型。操作数寻址方式有三种基址加16位位移量的访存寻址立即数寻址寄存器寻址37学习研究MIPSMIPS处理器的主要特征处理器的主要特征n指令系统简单指令系统

14、简单n采用流水技术采用流水技术依靠优化编译器进行指令序列的重新安排以防止流水线中出现的相互冲突n使用较多寄存器使用较多寄存器32个通用寄存器表示为$0到$31$0固定为0一对存储64位数据的寄存器Hi,Lo用于存放定点乘法的结果异常PC寄存器epcn采用采用“比较与转移比较与转移”指令指令比较和转移这两个动作在一条指令内便可完成beq $1, $2, 1000没有状态寄存器38学习研究MIPSMIPS算术指令算术指令39学习研究MIPSMIPS逻辑指令逻辑指令40学习研究MIPSMIPS数据传递指令数据传递指令41学习研究MIPSMIPS条件转移指令条件转移指令42学习研究MIPSMIPS无条

15、件转移指令无条件转移指令43学习研究MIPS指令操作码定义44学习研究MIPS R格式指令扩展操作码定义45学习研究例10 根据MIPS指令操作码定义以及指令格式,给出以下指令的各个字段的十进制值:add $8, $17,$18n答:答:指令是R格式指令。n第一个字段和最后一个字段的值分别为0和32。n第二个字段为17n第三个字段为18n第四个字段为8n第五个字段未使用被设置为001718803246学习研究汇编程序设计的简单例子例例11 假定以下一段C语言程序中包含的变量a, b, c, d, e分别存放在寄存器$1到$5中,na=b+c;nd=a-e;n写出编译后的MIPS汇编语言指令序列

16、。答:答:MIPS指令对两个源操作数进行计算,并产生一个结果,上述两个语言可以直接转换成两条指令:nadd $1, $2, $3nsub $4, $1, $547学习研究汇编程序设计的简单例子例例12 将以下C语言的语句f=(g+h)-(i+j);用MIPS汇编语言表示,假定变量f,g,h,i,j分别分配到寄存器$16, $17, $18, $19,$20中,寄存器$8和$9存放临时计算结果,解解: add $8, $17, $18add $9, $19, $20sub $16, $8, $948学习研究汇编程序设计的简单例子例例13 将以下C语言的语句写成MIPS汇编指令表示g=h+Ai;这

17、里A是具有100个元素的数组,在内存中的起始地址用Astart表示,假定编译程序将变量g, h和i分别分配给寄存器$17, $18和$19。解解:add $20, $19, $19add $19, $20, $20lw $8, Astart($19)add $17, $18, $849学习研究汇编程序设计的简单例子例例14 如果将上例C语句改为Ai=h+Ai;写出相应的MIPS汇编指令序列。假定编译程序将变量g, h和4i分别分配给寄存器$17, $18和$19。解解:lw $8, Astart($19)add $8, $18, $8sw $8, Astart($19)50学习研究汇编程序设计

18、的简单例子例例15 将以下C语言程序写成MIPS汇编指令序列,并画出其流程图。if(i=j) goto L1;f=g+h;L1:f=f-i;假定5个变量f,g,h,i,j分别存放在$16到$20中。解:解:beq $19, $20, L1add $16, $17, $18L1:sub $16, $16, $1951学习研究汇编程序设计的简单例子例例16 将上述C程序改为if(i=j) f=g+h;else f=g-h;写出相应的MIPS汇编指令。答:答:bne $19, $20, Elseadd $16, $17, $18j ExitElse:sub $16, $17, $18Exit:52学

19、习研究汇编程序设计的简单例子例例17 下面是一个C语言表示的循环语句:while(savei=k) i=i+j;假定变量i,j,k存储在寄存器$19, $20, $21中,数组save 的起始存放在地址存放在$6中,写出相应的MIPS汇编语言指令序列。答:答:loop:add $7, $19, $19add $7, $7, $7add $7, $7, $6lw $8, 0($7)/计算数组savei的地址bne $8, $21, Exitadd $19, $19, $20j loopExit:53学习研究汇编程序设计的简单例子例例18 对于以下C语言语句:if(ab) goto less;它判

20、断变量a是否小于b,条件满足时转移到标号less,假如a和b分别存放在寄存器$1和$2中,写出相应的MIPS汇编语言指令序列。答:答:用小于时置1的指令设置一个临时寄存器($3):slt $3, $1, $2判断a是否小于b,并根据判断的结果进行转移:bne $3, $0, less54学习研究汇编程序设计的简单例子例例 对于以下C程序段:switch(k) case 0: f=i+j; break;case 1: f=g+h; break;case 2: f=g-h; break;case 3: f=i-j; break;假定f到k这6个变量分别存储在寄存器$16到$21,寄存器$10的内容

21、为4,写出相应的MIPS汇编语言指令。答:答:程序可以中用变量k作为转移目标地址表的索引,首先要检测k的值是否在指定的范围内,即是否满足0k3,如果不满足的话就退出程序。slt $9, $21, $0bne $9, $0, Exitslt $9, $21, $10beq $9, $0, Exit55学习研究将k乘以4以形成转移地址。add $9, $21, $21add $9, $9, $9假定转移目标地址表连续,起始地址在$4中,计算对应的入口地址。add $9, $9, $4lw $8, 0($9)$8中包含了转移地址,根据$8进行转移jr $8L0: add $16, $19, $20/

22、 k=0时,f=i+jj ExitL1: add $16, $17, $18/ k=1时,f=g+hj ExitL2: sub $16, $17, $18/ k=2时,f=g-hj ExitL3: sub $16, $19, $20/ k=3时,f=i-jExit:汇编程序设计的简单例子56学习研究57学习研究例例20假定子程序A调用子程序B,子程序B调用子程序C。写出实现这个过程的MIPS指令序列,假定$29包含指向栈顶的指针,$24中包含调整到栈顶的值。画出子程序调用过程示意图。58学习研究解解 A: /* 程序A */jal BB: /* 子程序B */add $29,$29,$24sw

23、 $31,0($29)jal Clw $31,0($29)sub $29,$29,$24jr $31C: /* 子程序C */jr $3159学习研究 指令系统的历史与发展指令系统的历史与发展 RISC与与CISC早期CISC设计风格的主要特点n指令系统复杂指令数多寻址方式多指令格式多n绝大多数指令需要多个时钟周期才能执行完成n各种指令都可访问存储器n采用微程序控制n有专用寄存器n难以用优化编译生成高效的目标代码程序60学习研究CISC和RISCRISC的发展IBM 801斯坦福MIPS伯克利SPARCDEC AlphaHP PAIBM PowerPC61学习研究CISC和RISCRISC技术

24、的主要特征技术的主要特征n 简化的指令系统指令数较少基本寻址方式少指令格式少n 以寄存器寄存器方式工作n 以流水方式工作可在一个时钟周期内执行完毕n 使用较多的通用寄存器以减少访存不设置或少设置专用寄存器n 采用由阵列逻辑实现的组合电路控制器不用或少用微程序n 采用优化编译技术保证流水线畅通对寄存器分配进行优化62学习研究RISC的设计思想的设计思想n将不是最频繁使用的功能由软件实现简化硬件可使其执行得更快n指令应简单若增加一条使机器周期时间延长10%的指令,则该指令必须至少能减少10%的执行周期数n固定格式的指令和流水线操作存储器日趋价廉、高速,时空关系的权衡应少计较空间容量,而应突出指令执行速度的因素。63学习研究

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号