版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2011.2.20计算机系统结构1第2章 指令系统的设计本章主要内容(1) 指令操作码的优化(不讲)(2) RISC技术简介(3) MIPS指令集(4) MIPS模拟器(补充)2011.2.20计算机系统结构22.4.2 RISC技术简介(P44)名词:RISCReduced Instruction Set Computing,精简指令集计算机(1)RISC产生的背景:20%与80%规律(2)RISC设计的基本原则: 只设置最常用的简单指令,凡遇复杂操作均用多条简单指令实现; 指令长度固定,操作码与操作数长度都尽量统一; 基本指令的启动时间间隔降低到1个时钟周期; 访问主存只有load和sto
2、re指令,用变址寻址; 尽量采用硬连逻辑对指令译码; 为了加快执行速度,在编译过程中对目标代码结构进行优化;(3)RISC性能优势的原因采用RISC技术的主要动机是使各条指令的执行时序尽可能一致,CPU在执行时间上可以把它们安排得更紧凑,就像许多大小相近的箱子容易被堆放得更密集一样。这样机器内的各种资源可以充分利用,单位时间内能执行更多的指令,速度更快。这方面的具体内容,在第3章讲流水线时会详细介绍。2011.2.20计算机系统结构32.4.2 RISC技术的发展20世纪70年代初,IBM研究中心的John Cocke证明,计算机中约20%的指令承担了80%的工作,1974年,他提出RISC的
3、概念。在RISC的早期研究中,加州大学伯克利分校(UC Berkeley)和斯坦福大学(Stanford)提出了许多有创见的新思想。伯克利率先在1982年完成了RISC I型32位芯片的设计,斯坦福大学则在John Hennessy(现任校长)带领下于1983年完成了第一个采用RISC理念的商用MIPS微处理器。1984年Hennessy等人创建了MIPS计算机公司,1998年改名为MIPS技术公司(美普思科技公司,MIPS Technologies Inc),目前是美国最著名的芯片设计公司之一。MIPS技术公司本身不生产微处理器,它只设计高性能工业级的32位和64位CPU的结构体系,并且向其
4、它半导体公司提供使用其内核(IP)的授权,用于生产基于MIPS而又各具特色的微处理器。1999年MIPS技术公司发布了MIPS32和MIPS64架构标准。MIPS的通用微处理器主要用于构建高性能工作站、服务器和超级计算机系统,其嵌入式产品在1999年以前全球销量第一,目前也仅次于ARM。2011.2.20计算机系统结构4 MIPS处理器MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。MIPS具有强大的应用基础,能在MIPS上运行的操作系统,包括L
5、inux、WindRiver、WinCE、GNU、和Monta Vista等;支持14种编译器,包括MIPS、SDE、Green Hills、GNU和WindRiver等;支持15种调试器,包括GNU、Green Hills、WindRiver、ASHLING和FS2等;支持18种仿真工具,包括Mentor Graphics、Synopsys、CoWare和Candence等。中国科学院计算所的龙芯1和2都采用64位MIPS指令架构。中国龙芯已与MIPS公司合作,购买其指令系统授权,以便批量生产与出口。2011.2.20计算机系统结构52.6.1 MIPS的寄存器(P47) 32个64位通用寄
6、存器(GPRs),也称为整数寄存器名称是R0,R1,R31R0的值永远是0,可用作源寄存器,也可作为无用结果的目的寄存器;R31用于存放跳转并链接类指令的返回地址。 32个64位浮点数寄存器(FPRs)F0,F1,F31用来存放32个单精度浮点数(32位),也可以用来存放32个双精度浮点数(64位)。存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。 特殊功能寄存器PC(program counter,程序计数寄存器)HI(整数乘除结果高位寄存器,除法余数)LO(整数乘除结果低位寄存器,除法的商)它们可以与通用寄存器交换数据。浮点状态寄存器:用来保存有关浮点操作结果的信息。201
7、1.2.20计算机系统结构6MIPS的寄存器习惯用法在软件设计中,这32个通用寄存器GPR(GENERAL PURPOSE REGISTER)有一些习惯用法(非强制的),据此还给它们定义了别名:REGISTER NAMEUSAGE $0 $zero常量0(constant value 0) $2-$3 $v0-$v1函数调用返回值(values for results and expression evaluation) $4-$7 $a0-$a3函数调用参数(arguments) $8-$15 $t0-$t7暂时的(或随便用的) $16-$23 $s0-$s7保存的(或如果用,需要SAVE/
8、RESTORE的)(saved) $24-$25 $t8-$t9暂时的(或随便用的) $26-$27 $k0-$k1由操作系统的异常或中断处理程序使用 $28 $gp全局指针(Global Pointer) $29 $sp堆栈指针(Stack Pointer) $30 $fp帧指针(Frame Pointer) (BNN:fp is stale acutally, and can be simply used as $t8) $31 $ra返回地址(return address) 2011.2.20计算机系统结构72.6.2 MIPS的数据表示整数字节(8位) 半字(16位)字(32位) 双字
9、(64位)浮点数单精度浮点数(32位) 双精度浮点数(64位) 字节、半字或者字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照64位整数的方式进行运算。2011.2.20计算机系统结构82.6.3 MIPS的数据寻址方式(P47) 立即数寻址与偏移量寻址;立即数字段和偏移量字段都是16位的。 寄存器间接寻址是通过把0作为偏移量来实现的; 16位绝对寻址是通过把R0(其值永远为0)作为基址寄存器来完成的; MIPS的存储器按字节寻址,地址为64位; 所有存储器访问必须是边界对齐的,即访问地址必须是该数据长度(字节数)的整倍数,又叫整数边界原则; M
10、IPS的存储器按字节编制; 所有数据字、指令字从最高有效位开始依次标记为bit 0、1、2 ; MIPS处理器的存储顺序,可以设置为“小端字节表示顺序”( Littile-Endian,低位字节放在低地址)或者“大端字节表示顺序”(Big-Endian,高位字节放在低地址,以便适合网络数据包内顺序)。在下文使用的MIPS64模拟器中采用“小端字节表示顺序”。2011.2.20计算机系统结构92.6.4 MIPS指令格式(P48) MIPS32和MIPS64体系结构定义了兼容的32位和64位处理机指令 使用条件编译或宏汇编指令能写出可同时在MIPS32和MIPS64上运行的程序 寻址方式编码到操
11、作码中 所有的指令都是32位的 操作码占6位 3种指令格式(3种格式中,同名字段的位置固定不变)2011.2.20计算机系统结构102.6.4 MIPS指令格式I类指令 包括所有的load和store指令,立即数指令,分支指令,寄存器跳转指令,寄存器链接跳转指令。 立即数字段为16位,用于提供立即数或偏移量。 load指令 访存有效地址:Regsrsimmediate 从存储器取来的数据放入寄存器rt store指令 访存有效地址:Regsrsimmediate 要存入存储器的数据放在寄存器rt中 立即数指令 Regsrt Regsrs op immediate 分支指令 转移目标地址:Reg
12、srsimmediate,rt无用 寄存器跳转、寄存器跳转并链接 转移目标地址为Regsrs2011.2.20计算机系统结构112.6.4 MIPS指令格式R类指令 包括ALU指令,专用寄存器读/写指令,move指令等。 ALU指令 Regsrd Regsrs funct Regsrt funct为具体的运算操作编码2011.2.20计算机系统结构122.6.4 MIPS指令格式J类指令 包括跳转指令,跳转并链接指令,自陷指令,异常返回指令。 在这类指令中,指令字的低26位是偏移量,它与PC值相加形成跳转的地址。2011.2.20计算机系统结构132.6.5 MIPS的操作(P49) MIPS
13、指令可以分为四大类 load和store ALU操作 分支与跳转 浮点操作 符号的意义 xny:从y传送n位到xx,yz:把z传送到x和y下标:表示字段中具体的位; 对于指令和数据,按从最高位到最低位(即从左到右)的顺序依次进行编号,最高位为第0位,次高位为第1位,依此类推。 下标可以是一个数字,也可以是一个范围。例如:RegsR40:寄存器R4的符号位 RegsR456-63:R4的最低字节 2011.2.20计算机系统结构142.6.5 MIPS的操作(续)Mem:表示主存; 按字节寻址,可以传输任意个字节。上标:用于表示对字段进行复制的次数。例如:032表示一个32位长的全0字段符号#:
14、用于两个字段的拼接,并且可以出现在数据传送的任何一边。举例:R8、R6是64位的寄存器,下式RegsR832-63 32(Mem RegsR60)24 # Mem RegsR6表示的意义是:以R6的内容作为地址访问内存,得到的字节按符号位扩展为32位后存入R8的低32位,R8的高32位(即RegsR80-31)不变。2011.2.20计算机系统结构15 load和store指令指令举例 指令名称 含 义 LD R2,20(R3) 装入双字 RegsR264 Mem20+RegsR3 LW R2,40(R3) 装入字 RegsR264 (Mem40+RegsR30)32 # Mem40+Regs
15、R3 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+RegsR3# Mem31+RegsR3 L.S F2,60(R4) 装入单精度浮点数RegsF264 Mem60+RegsR4 # 032 L.D F2,40(R3) 装入双精度浮点数 RegsF264 Mem40+RegsR3 SD R4,300(R5) 保存双字
16、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 2011.2.20计算机系统结构16 ALU指令 寄存器寄存器型(RR型)指令或立即数型 算术和逻辑操作:加、减、与、或、异或和移位等 R0的值永远是0,它可以用来合成一些常用的操作。例如:DADDIU R1,R0,#100 给寄存器R1装入常数100 DADD R1,R0,R2 把
17、寄存器R2中的数据传送到寄存器R1指令举例 指令名称 含义 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 2011.2.20计算机系统结构172.6.6 MIPS的控制指令(P50) 由一组跳转和一组分支指令来实现
18、控制流的改变 典型的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 ;(PC+4)217)name(PC+4)+217) BNE R3,R4,name 不相等时分支 if(RegsR3!= RegsR4) PCname(PC
19、+4)217)name(PC+4)+217) MOVZ R1,R2,R3 等于零时移动 if(RegsR3=0) RegsR1 RegsR2 2011.2.20计算机系统结构18 跳转指令根据跳转指令确定目标地址的方式不同以及跳转时是否链接,可以把跳转指令分成4种。确定目标地址的方式 把指令中的26位偏移量左移2位(因为指令字长都是4个字节)后,替换程序计数器的低28位; 间接跳转:由指令中指定的一个寄存器来给出转移目标地址。跳转的两种类型 简单跳转:把目标地址送入程序计数器。 跳转并链接:把目标地址送入程序计数器,把返回地址(即顺序下一条指令的地址)放入寄存器R31。2011.2.20计算机
20、系统结构19 分支指令(条件转移)分支条件由指令确定例如:测试某个寄存器的值是否为零提供一组比较指令,用于比较两个寄存器的值。例如:“置小于”指令有的分支指令可以直接判断寄存器内容是否为负,或者比较两个寄存器是否相等。分支的目标地址由16位带符号偏移量左移两位后和PC相加的结果来决定一条浮点条件分支指令:通过测试浮点状态寄存器来决定是否进行分支。2011.2.20计算机系统结构202.6.7 MIPS的浮点操作(P51) 由操作码指出操作数是单精度(SP)或双精度(DP)后缀S:表示操作数是单精度浮点数后缀D:表示是双精度浮点数 浮点操作包括加、减、乘、除,分别有单精度和双精度指令。 浮点数比
21、较指令根据比较结果设置浮点状态寄存器中的某一位,以便于后面的分支指令BC1T(若真则分支)或BC1F(若假则分支)测试该位,以决定是否进行分支。2011.2.20计算机系统结构21注意浮点数的存储格式只有64位双精度这一种,没有32位单精度数。MIPS64伪指令2011.2.20计算机系统结构22MIPS64指令集12011.2.20计算机系统结构23MIPS64指令集22011.2.20计算机系统结构24MIPS64指令集32011.2.20计算机系统结构25MIPS64指令集42011.2.20计算机系统结构26MIPS64指令集52011.2.20计算机系统结构27MIPS64指令集62
22、011.2.20计算机系统结构28MIPS64存储器映射输入/输出1Memory Mapped I/O areaAddresses of CONTROL and DATA registersCONTROL: .word32 0 x10000DATA: .word32 0 x100082011.2.20计算机系统结构29MIPS64存储器映射输入/输出2Set CONTROL = 1, Set DATA to Unsigned Integer to be outputSet CONTROL = 2, Set DATA to Signed Integer to be outputSet CONTR
23、OL = 3, Set DATA to Floating Point to be outputSet CONTROL = 4, Set DATA to address of string to be outputSet CONTROL = 5, Set DATA+5 to x coordinate, DATA+4 to y coordinate, and DATA to RGB colour to be outputSet CONTROL = 6, Clears the terminal screenSet CONTROL = 7, Clears the graphics screenSet
24、CONTROL = 8, read the DATA (either an integer or a floating-point) from the keyboardSet CONTROL = 9, read one byte from DATA, no character echo.2011.2.20计算机系统结构30MIPS64模拟器介绍12011.2.20计算机系统结构31MIPS64模拟器介绍22011.2.20计算机系统结构32MIPS64模拟器介绍32011.2.20计算机系统结构33MIPS64模拟器演示实验1 整数加法文件名:sum.s .dataA: .word 10B:
25、.word 8C: .word 0 .textmain: ld r4,A(r0) ld r5,B(r0) dadd r3,r4,r5 sd r3,C(r0) halt2011.2.20计算机系统结构34MIPS64模拟器演示实验2 阶乘1文件名:factorial.s; Factorial example; returns number! in r10;.datanumber: .word 10title: .asciiz factorial program n= CONTROL: .word32 0 x10000DATA: .word32 0 x10008 .text lwu r21,CON
26、TROL(r0) lwu r22,DATA(r0)2011.2.20计算机系统结构35MIPS64模拟器演示实验2 阶乘2 daddi r24,r0,4 ; ascii output daddi r1,r0,title sd r1,(r22) sd r24,(r21) daddi r24,r0,8 ; read input sd r24,(r21) ld r1,(r22)start: daddi r29,r0,0 x80 ; position a stack in data memory, use r29 as stack pointer jal factorial daddi r24,r0,
27、1 ; integer output sd r10,(r22) sd r24,(r21) halt2011.2.20计算机系统结构36MIPS64模拟器演示实验2 阶乘3; parameter passed in r1, return value in r10;factorial: slti r10,r1,2 bnez r10,out ; set r10=1 and return if r1=1 sd r31,(r29) daddi r29,r29,8 ; push return address onto stack sd r1,(r29) daddi r29,r29,8 ; push r1
28、on stack daddi r1,r1,-1 ; r1 = r1-1 jal factorial ; recurse.2011.2.20计算机系统结构37MIPS64模拟器演示实验2 阶乘4 dadd r4,r0,r10 daddi r29,r29,-8 ld r3,(r29) ; pop n off the stack dmulu r3,r3,r4 ; multiply r1 x factorial(r1-1) dadd r10,r0,r3 ; move product r3 to r10 daddi r29,r29,-8 ; pop return address ld r31,0(r29
29、)out: jr r312011.2.20计算机系统结构38MIPS64模拟器演示实验3 存储器映射输出文件名:output.s .dataA:.word 10B:.word 8C:.word 0CR:.word32 0 x10000DR:.word32 0 x10008.textmain: ld r4,A(r0) ld r5,B(r0) dadd r3,r4,r5 sd r3,C(r0) lwu r1,CR(r0) ;Control Register lwu r2,DR(r0) ;Data Register daddi r10,r0,1 sd r3,(r2) ;r3 output. sd r
30、10,(r1) ;. to screen halt2011.2.20计算机系统结构39MIPS64模拟器演示实验4存储器映射输入/输出文件名:testio.s程序清单略,有兴趣的同学可以自行阅读,写出注释(不交)。2011.2.20计算机系统结构40习题2.14(补充,MIPS64指令系统练习)人工模拟以下MIPS程序的单条指令运行方式,在表中用16进制编码记录每一步产生的结果(不得借助模拟软件)。 .datan: .word 3x: .double 0.5 .text LD R1, n(R0) L.D F0, x(R0) DADDI R2, R0, 1 ; R2 1 MTC1 R2, F11 ; F11 1 CVT.D.L F2, F11 ; F2 1loop: MUL.D F2, F2, F0 ; F2 F2*F0 DADDI R1, R1, -1 ; decrement R1 by 1 BNEZ R1, loop ; if R10 continue HALT ; 此条不填表提示:MIPS浮点数的格式是IEEE7542011.2.20计算机系统结构41习题2.14(补充)续2011.2.20计算机系统结构42实验1:WinMIPS64模拟器练习实验要求:用MIPS64指令编写一个尽可能短小的程序,将事先存放在数据区的4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 猫腻作品《间客》经典语录
- 基本体操教案
- 光学分析仪器账务处理实例-记账实操
- 弱电施工技术交底
- 2024年药物控释材料项目综合评估报告
- 2019湘美版 高中美术 选择性必修5 工艺《第一单元 工艺概述》大单元整体教学设计2020课标
- 2024届河北省张家口市重点中学高三第二学期月考试卷(二)数学试题
- 2024届广东省珠海三中高三第二次五校联考数学试题
- 材料合同书样本简单
- 老人摔跤应急处置
- 贵州省建筑业营改增建筑工程计价依据调整实施意见(试行)解读519
- 4.《多种多样的动物》教学设计
- GB∕T 15829-2021 软钎剂 分类与性能要求
- 南充市物业服务收费管理实施细则
- 浦东新区“十一五”学科带头人、骨干教师培养和发展方案
- 户外广告设施检验规范
- GB T 197-2018 普通螺纹 公差(高清版)
- 学前卫生学:集体儿童保健
- 【课件】第16课变革与突破——19世纪西方美术课件高中美术人教版(2019)美术鉴赏
- 《金属包装材料》PPT课件.ppt
- 浆砌片石护坡施工方案(工程科)
评论
0/150
提交评论