第二章 计算机指令集结构 指令集结构是系统结构的主要内容之一,其功能设计实际上就是确定软/硬件功能分配。 本章主要介绍CISC和RISC指令集结构的功能设计,重点学习典型的RISC指令集结构:MIPS。 其余内容要求自学。
2.1 CISC计算机和RISC计算机 计算机系统结构设计思想的转变 1. CISC的设计思想 由于软硬件的局限,特别是存储器,当初人们普遍认为计算机的指令越丰富越好。在R-R,R-M,M-M三种指令中,M-M被认为效率最高! 工艺技术发展后,问题出现了。 M-M指令在一条指令中就实现了数据间运算,不必再使用读入、写回指令。
2.1 CISC计算机和RISC计算机 2. CISC指令系统的问题 1)20%与80%定律: 2)编译难度的增加和译码时间的延长 一个指令系统中大约20%的指令是经常被使用的,所占比例约为全部程序的80%;而剩下的80%指令很少被用到,只占全部程序的20%。把大量不经常使用的复杂指令设计在微程序控制器中,增加了控制器的设计难度。 2)编译难度的增加和译码时间的延长 单纯通过增加指令的复杂性已不能再提高程序的执行速度了。 3)VLSI技术进步提供的机遇 CPU内部只用布线逻辑可以实现基本指令控制。VLSI对规整的电路设计和制作特别有利。有利于增加大量寄存器。
2.1 CISC计算机和RISC计算机 二. RISC计算机 1. RISC的特点: 1)精简指令系统及其结构,仅保留使用频率高的指令。 2)不设(或尽量少用)微程序控制器,由硬连逻辑直接译码。 3)使用大量的通用寄存器。 4)由于精简指令系统一般是由频率高的简单指令组成。易于实现优化编译和流水线技术。
2. RISC计算机与CISC计算机的比较 CISC RISC 特征 IBM 370 VAX 11 INTEL 80486 SPARC MIPS R4000 开发年份 1973 1978 1989 1987 1991 指令数量 208 304 235 75 94 指令长(B) 2-6 2-57 1-11 4 寻址方式 24 3 通用 寄存器 16 8 120-136 32 控制 存储器 420 KB 480 246 — Cache (KB) 64 128 指令数量明显减少,长度等长。利于流水线的设计和工作效率提高。使绝大部分指令都能在1个时钟周期内执行完成--这是RISC技术的一个基本的目标。 简化寻址方式。 和存储器相关的指令只有LOAD/STORE。 取消控制存储器。改用硬连布线逻辑。空出的物理地方正好放大量的寄存器。
2.1 CISC计算机和RISC计算机 CISC与RISC计算机的在程序执行时间上的比较 类型 指令条数I 指令平均周期数CPI 周期时间T CISC 1 2-15 33ns-5ns RISC 1.3-1.4 1.1-1.4 10ns-2ns 综合3个因素,RISC的运算速度要比CISC快约3倍。其中的关键是CPI的下降。
2.1 CISC计算机和RISC计算机 三. CISC和RISC的应用发展 1. IBM公司在1975年成功开发出第一款RISC处理器,从此RISC架构开始走进超级计算机中。除了IBM的Power和PowerPC 外,还有DEC的Alpha、SUN的SPARC、HP的PA-RISC、MIPS技术公司的 MIPS、ARM公司的ARM等等。 2. CISC却在PC上获得新生,微软与Intel唱起了“双黄戏”,一唱一合,顽固坚持CISC路线,搞X86处理器,为了保持软件兼容,PC必须一直延续X86架构无法脱离。(Windows系列+Intel X86系列)。
2.1 CISC计算机和RISC计算机 3. 发展RISC PC的只有苹果公司,它们的全系列PC都基于IBM的 PowerPC指令架构。但在2006年也开始转用Intel的处理器(x86架构) 。 4. 2011年1月,微软公司同ARM公司(全世界几乎所有的智能手机和平板电脑设备微处理器,包括iPhone和iPad的,都由ARM设计)合作决定其下一代Windows操作系统以ARM微处理器(RISC架构)的设计为基础。 5. 2012年6月,微软公司正式发布了其第一款搭载了最新的Windows8操作系统的自有品牌平板电脑Surface,并且有两个版本,RT为标准版,采用ARM处理器,只运行Metro应用, 而Pro版是一款全功能的PC机,采用intel处理器。
2.2 MIPS指令集结构 MIPS诞生于1980年代,是最早的RISC处理器之一。 一 . MIPS的寄存器 32个64位通用寄存器(GPRs) 也被称为整数寄存器,寄存器R0的值永远为0。 32个64位浮点数寄存器(FPRs) 一些特殊寄存器 如浮点状态寄存器,可以与通用寄存器交换数据。
2.2 MIPS指令集结构 二 . MIPS的数据表示 1、整数:字节(8位)、半字(16位)、字(32位)、双字(64位) 2、浮点数:单精度浮点数(32位)、双精度浮点数(64位) 字节、半字或者字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照64位整数的方式进行运算。
2.2 MIPS指令集结构 三 . MIPS的指令格式 所有的指令都是32位的 操作码占6位,寻址方式编码到操作码中 3种指令格式:
2.2 MIPS指令集结构 1、 I类指令 load指令 访存有效地址:Regs[rs]+immediate rt rs 立即数( immediate ) 操作码 6 5 16 10 11 15 31 寄存器号 load指令 访存有效地址:Regs[rs]+immediate 从存储器取来的数据放入寄存器rt store指令 要存入存储器的数据放在寄存器rt中
2.2 MIPS指令集结构 1、 I类指令 立即数指令 Regs[rt] ← Regs[rs] op immediate 分支指令 立即数( immediate ) 操作码 6 5 16 10 11 15 31 寄存器号 立即数指令 Regs[rt] ← Regs[rs] op immediate 分支指令 转移目标地址:Regs[rs]+immediate,rt无用 寄存器跳转、寄存器跳转并链接 转移目标地址为Regs[rs]
2.2 MIPS指令集结构 2、 R类指令 包括ALU指令、专用寄存器读/写指令、move指令等。 ALU指令 6 5 rt rd func 10 11 15 16 31 20 21 shamt 25 26 操作码 rs 源1 源2 目的 包括ALU指令、专用寄存器读/写指令、move指令等。 ALU指令 Regs[rd]← Regs[rs] func Regs[rt] func为具体的运算操作编码 shamt存放移位的位数, 也就是指令中的立即数
2.2 MIPS指令集结构 3、 J类指令 包括跳转指令、跳转并链接指令、自陷指令、异常返回指令。 26 操作码 6 与 PC 相加的偏移量 31 5 包括跳转指令、跳转并链接指令、自陷指令、异常返回指令。 在这类指令中,指令字的低26位是偏移量,它与PC值相加形成跳转的地址。
2.2 MIPS指令集结构 四 . MIPS的操作 符号的意义: x←ny:从y传送n位到x x,y←z:把z传送到x和y 下标:表示字段中具体的位; 对于指令和数据,按从最高位到最低位(即从左到右)的顺序依次进行编号,最高位为第0位,次高位为第1位,依此类推。 下标可以是一个数字,也可以是一个范围。 例如:Regs[R4]0:寄存器R4的符号位 Regs[R4]56..63:R4的最低字节
2.2 MIPS指令集结构 Mem:表示主存;按字节寻址,可以传输任意个字节。 上标:用于表示对字段进行复制的次数 例如:0 32:一个32位长的全0字段 符号##:用于两个字段的拼接,并且可以出现在数据传送的任何一边。
2.2 MIPS指令集结构 1、load和store 详见P45 表2.11 指令举例 指令名称 含 义 LD R2,20(R3) 装入双字 Regs[R2]←64 Mem[20+Regs[R3]] LW R2,40(R3) 装入字 Regs[R2]←64 (Mem[40+Regs[R3]]0)32 ## Mem[40+Regs[R3]] SD R4,300(R5) 保存双字 Mem[300+Regs[R5]]←64 Regs[R4]
2.2 MIPS指令集结构 2、 ALU操作 详见P46 表2.12 指令举例 指令名称 含义 DADDU R1,R2,R3 无符号加 Regs[R1]← Regs[R2]+ Regs[R3] DADDIU R4,R5,#6 加无符号立即数 Regs[R4]← Regs[R5]+6 DSLL R1,R2,#5 逻辑左移 Regs[R1]← Regs[R2]<<5
2.2 MIPS指令集结构 3、分支和跳转 详见P46 表2.13 指令举例 指令名称 含义 J name 跳转 JAL name PC 36··63← name JAL name 跳转并链接 Regs[R31]←PC+4;PC 36··63←name; ((PC+4)-227)≤name<((PC+4)+227) BEQZ R4,name 等于零时分支 if(Regs[R4]== 0) PC←name ; ((PC+4)-217)≤name<((PC+4)+217)
2.2 MIPS指令集结构 4、浮点操作 由操作码指出操作数是单精度(SP)或双精度(DP) 后缀S:表示操作数是单精度浮点数 包括加、减、乘、除,分别有单精度和双精度指令。 浮点数比较指令