指令系统
2.1 概述
机器指令是计算机设计者赋予计算机实现某种基本操作的命令。
指令系统是指令的集合,包含一台计算机的所有机器指令。它处在软件和硬件的交界面上,能同时被硬件设计者和系统程序员看到。
复杂指令集计算机CISC 的主要特点是:
(1) 指令系统复杂:指令多/寻址方式多/指令格式多
(2) 指令周期长:绝大多数指令需要多个时钟周期才能完成
(3) 各种指令都能访问存储器:除专门的存储器读写指令外,运算指令也能访问存储器
(4) 采用微程序控制
(5) 有专用寄存器
(6) 难以进行编译优化生成高效目标代码
但是日趋庞大的指令系统不但使计算机的研制周期变长,而且难以保证设计的正确性,难以调试和维护,并且因指令操作复杂而增加时钟周期,从而降低了系统性能。
精简指令集计算机RISC 的主要特点是:
(1) 简化的指令系统:指令少/寻址方式少/指令格式少/指令长度一致
(2) 以RR方式工作:除Load/Store指令可访存外,其余指令都只访问寄存器
(3) 指令周期短:以流水线方式工作, 因而除Load/Store指令外,其他简单指令都只需一个或一个不到的时钟周期就可完成
(4) 采用大量通用寄存器,以减少访存次数
(5) 采用组合逻辑电路控制,不用或少用微程序控制
(6) 采用优化的编译器,力求有效地支持高级语言程序
——不必全部记住达到能默写的程度,从原理上理解并能说出区别就好。
2.2 指令格式
指令是软件要求计算机执行的一个命令,由操作码和操作数组成。
如,MIPS的R类指令格式为:
操作码
操作码的编码方式分为 Fixed Length Opcodes (定长操作码法) 和 Expanding Opcodes (扩展操作码法)。
定长编码:指令的操作码部分采用固定长度的编码,操作数为2的指数次。译码简单,但有信息冗余。
扩展编码:将操作码的编码长度分成几种固定长度的格式,操作码的位数随地址数的减少而增加,已被大多数指令集采用。使用频度高的指令分配短的操作码,使用频度低的指令分配较长的操作码。优点是缩短指令长度、减少程序总位数、增加指令字所能表示的操作信息。
——可能会有计算题要求算出某地址指令最多有几条,按照例题的方法来算即可。
地址码
地址个数越少,指令的功能就越简单,CPU的复杂性就越低,指令的长度也越短。地址个数越少,程序员完成同一功能的程序所用指令条数就越多,增加程序复杂度和执行时间。
地址的选择依赖于指令系统的结构:
堆栈结构:零地址指令
累加器结构:一地址指令
通用寄存器结构:二、三地址指令
一条指令包含1个操作码和多个地址码。
零地址指令:
(1) 无需操作数。如:空操作/停机等。
(2) 所需操作数为默认的。如:堆栈等。