五、两种不同的指令系统设计风格 CISC和RISC
这两种风格应作比较深入的领会,并要识记一些内容。
CISC(复杂指令集计算机)以VAX-11/780为代表,70年代后的各种微机如我们用的intel80x86均是这种风格的计算机。
CISC设计风格的主要特点是:
(1)指令系统复杂;费时(2)绝大多数指令需要多个机器周期方可执行完毕;自由主义(3)各种指令都可访问存储器;地方主义(4)采用微程序控制;小金库(5)有专用寄存器;低效率(6)难以用优化编译器生成高效的目标代码程序。 复杂
这哪里是特点,分明是一大堆缺点嘛,RISC机的特点就是把它们"取反",凡是 CISC是这样的,它就不是这样的:
(1)简化指令系统;省时(2)除了LOAD/STORE指令外,所有指令都在一个时钟周期内执行完毕;集体主义(3)除了LOAD/STORE指令外,其余指令只与寄存器打交道;搞活流通(4)绝大部分采用硬联线控制,不用或少用微程序实现;查封小金库(5)使用较多的通用寄存器,一般至少有32个,绝没有专用寄存器;高效率(6)采用优化编译技术,生成高效的目标代码程序。 简化
RISC与CISC技术两者的主要区别在于设计思想上的差别,RISC的设计思想是;将那些不是最频繁使用的功能(指令)由软件来加以实现,这样就可以优化硬件,并可使其执行得更快。在第一章中我们学过计算机系统的设计的准则,第一个准则就是:只加速使用频率高的部件。RISC的设计思想与此完全吻合。
下面我们学习RISC技术中所采用的特殊方法:
1、采用较大量的寄存器,采用窗口重叠寄存器技术。
窗口重叠技术:在RISC结构中,为了减少过程调用中保存现场和建立新现场,以及返回时恢复现场等辅助操作,通常将所有寄存器分成若干个组,称为寄存器窗口。每组中有若干个寄存器,每当有过程调用时,就分配一个未被使用的寄存器窗口,这样就可减少保存和恢复现场的开销。此外在每个寄存器窗口中,又分成大小固定的高区、本地和低区三个区段。其中本地区用来存放局部变量,高区在被调用时用来保存调用过程送来的参数,而在返回主调用过程时,存放返回结果。而低区在调用时存放欲送往被调用过程的参数,而在被调用过程返回时用来存放返回结果。在使用时,每一对调用和被调用过程的寄存器窗口各自的低区和高区相互重叠。一旦发生过程调用或返回,在控制由一个窗口转换到另一窗口时,这些参数就通过两个窗口间的公共寄存器区自动的被传送而不需要再用额外的传送时间。 (可参照教材进行理解)。
2、采用优化延迟转移技术
优化延迟转移技术:即是使转移指令在准备将控制转向目标指令的同时,执行紧随在转移指令之后的那条指令,也就是是在将转移指令后延迟槽内的指令执行完毕后,才发生真正的转移(不论转移是否成功),这种优化技术可在保证程序正确执行的同时又可避免延迟转移中损失的一个机器周期时间。
3、采用比较转移指令
比较-转移指令:在RISC机中,把比较和转移(在CISC机中需用两条指令完成的功能)合并成一条指令。该指令将直接对两个对象(寄存器-寄存器或存储器-立即数)进行相等或不等比较,然后根据比较结果判别是否进行转移。这样就可省去一条指令,并不受条件码的约束。
4、采用优化编译技术
优化编译技术:在编译时就可发现可能出现的阻塞情况,由编译器通过重排指令执行序列来消除可能出现的阻塞情况,当无法消除时就填入相应的空操作,因此不需要硬件的互锁流水支持。
以上的特殊技术并中是每一种RISC机都采用的,在RISC机中有两个比较典型的代表,一个是加州大学伯克莱分校的RISC-I、II机的思路,侧重系统结构的支持,采用由大量寄存器组成的寄存器堆及窗口重叠技术。另一个是遵循斯坦福大学的MIPS机器思路,侧重采用编译的支持,采用优化编译技术,。
CISC和RISC两种设计风格的比较,其实就是说RISC优点,简单地说就是快、省、可靠、易实现、好优化。
关于RISC的两种代表机型的指令系统实例,要对照它们的指令系统中指令数、指令格式、寻址方式及采用的特殊技术来进行比较。