尽管CISC的指令多达数百条,而且随着计算机功能的增强,指令的数量也在不断增加,但对CISC的测试表明,最常用的都是一些最简单、最基本的指令,这些指令仅占全部指令系统的20%,而在程序中出现的频率却占80%。因此,从20世纪70年代就提出了精简指令系统计算机(RISC)的设计思想,RISC指令系统的最大特点是:
(1)选取使用频率最高的一些简单指令;
(2)指令长度固定,指令格式种类少,寻址方式种类少;
(3)只有取数/存数指令访问存储器。其余指令的操作都在寄存器之间进行。
SPARC是32位字长的RISC,内部有100多个寄存器,但只有75条指令,三种指令格式,四种寻址方式(立即数、寄存器、寄存器间接和相对寻址方式),而且指令字长度固定为一个字长(32位)。下面以SPARC的指令为例来说明RISC指令系统的特点。
1.指令类型和指令格式
SPARC有以下6种指令类型:
(1)算术运算/逻辑运算/移位指令;
(2)取数(LOAD)/存数(STORE)指令;
(3)控制转移指令;
(4)读/写专用寄存器指令;
(5)浮点运算指令;
(6)协处理器指令。
后两类指令由浮点运算器或协处理器完成。
2.指令的功能与寻址方式
(1)算术/逻辑运算指令。功能:将Rs1、Rs2的内容(或Simm13)按操作码规定的操作运算后将结果送往Rd,即
(Rs1)OP(Rs2)→Rd(i=0时)
或 (Rs1)OP Simm13→Rd(i=1时)
RISC的特点之一是所有参与算术/逻辑运算的数据均在寄存器中。例如:
ADD R1,R2,R3;(R1)+(R2)→R3(www.xing528.com)
ADD R1,60H,R3;(R1)+60H→R3
(2)取数/存数指令。功能:LOAD指令的功能是将存储器中的数送往Rd中,而STORE指令是将Rd中的数据送往存储器中。
存储器地址计算方法如下:
i=0时,存储器地址=(Rs1)+(Rs2)
i=1时,存储器地址=(Rs1)+Simm13
在RISC的指令系统中,只有LOAD/STORE指令访问存储器。
例:LOAD R1,R2,R3;((R1)+(R2))→R3
STORE,R3,R1,60H;R3→((R1)+60H)
(3)控制转移类指令。这类指令改变PC的值,SPARC共有5种控制转移指令。
①条件转移BRANCH:由Cond字段决定程序是否转移,用相对寻址方式形成转移地址。
②转移并连接(JMPL):将本条指令的地址(PC值)保存在以Rd地址的寄存器中,以备程序返回时使用。用寄存器间址方式形成转移地址。
③子程序调用(CALL):采用相对寻址方式形成转移地址。
④陷阱(TRAP):采用寄存器间址方式形成转移地址。
⑤从TRAP程序返回(RETT):用寄存器间址方式形成转移地址。
(4)读/写专用寄存器指令。SPARC有4个专用寄存器(PSR、Y、WIM、TBR),其中PSR称为程序状态寄存器,它的内容反映并控制机器的运行状态,读/写PSR的指令一般是特权指令。
在SPARC中,有一些指令没有选入指令系统,但很容易使用指令集中的另外一条指令来替代实现。这是因为SPARC约定的内容恒为0,而且立即数可以作为一个操作数处理。表4-2列举了一些指令的替代实现,由此我们可以看出“精简指令系统”的含义和用意。
表4-2 部分指令的替代指今
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。