什么是RISC计算机

Author: 重庆 何宗琦 Date: 1994-04-08

        RISC是相对于复杂指令集计算机CISC(Complex Instruction-Set Computer)提出的。
        由于软件技术的发展,传统的CISC结构必然随着越来越多的宏代码和功能更强的操作发展,以便为高级语言和操作系统提供更多的支持。其结果是指令数量增加,要求一条指令中完成的操作更多,从而计算机结构变得越来越复杂。但是,在对系统内核和优化编译程序生成目标代码的分析中发现,由于微码很少提供支持各种高级语言和系统环境所需的程序,因此复杂指令很少用到。而最简单的指令却达到了很高的使用频度。由此而产生了RISC的概念。
        从字面上看,RISC容易使人望文生意,认为指令数目少就是这种结构的主要特点,这显然是一种误解。很多早期的处理器如6502等也只有为数不多的指令,但绝不能称之为RISC机器。
        RISC是七十年代提出的。IBM T·T·Watson研究中心的John Cocke研制出了第一台RISC机器IBM 801机。当时的设想是要制造一种时钟周期很快的机器,其指令数较少并且要求在每个周期内执行一条指令。希望该机在速度和性能上优于传统的机器。
        但是,仅仅只有“精简”指令这一特点并不能真正提高机器的性能。通常,以处理器完成某一特定任务的时间来度量处理器的性能。可表示为:
        任务完成时间=C×T×I
        其中:C=每个指令所需的周期数
        T=每个周期的时间(时钟速度)
        I=任务的指令条数
        RISC机器通常把前两项因子降至最低,以提高性能。例如,在RISC机器中,毫无例外采用流水线技术,以便降低执行一条指令所需的周期数。设计良好的RISC机器可达到每个机器周期执行一条指令。但是由于RISC缺乏功能强的复杂指令,同样的工作将由更多的简单指令来完成,从而导致了第三个因子,即指令条数的增加。以外,由于指令条数的增加也必然需求较高的处理机指令带宽。这样也就部分抵消了降低前两项因子的作用。总之,RISC的指令集越简单,完成一个给定任务所要用到的指令总数也越多。因此,同样一个程序或算法,RISC所用的指令数比CISC所用的指令数要多。这一点,也是RISC从它被提出以来就一直遭到攻击的最主要原因。为了解决这个问题,RISC在设计上作了大量的改进,其中最主要的是:优化编译程序和对操作系统的支持,以减少每个任务的指令数。
        究竟应怎样来认识RISC呢?应该说,时至而今的RISC不是一个具体的系统,也不是一种具体的技术,它是一种结构设计的规范。
        所谓RISC计算机,应具有这样一个指令系统,它既能由流水线处理器高效地执行,又能为优化编译程序生成优化的代码。
        这种开放式的定义综合了RISC设计的基本要求和原理,在这个定义下的RISC机器通常具有以下特点。
        ●指令集中各条指令的周期数一致。以便指令流水线的管理简单,高效。
        ●指令编码简单一致。
        ●大部分指令能在一个周期内完成。
        ●只由Load和Store指令访问存储器。
        ●寻址方式简单。
        ●延迟的装入指令。
        ●延迟的分支指令。
        ●三地址指令格式。
        ●寄存器数量多。
        ●具有对称指令集。
        应该注意的是,这些特点都没有排除执行复杂功能的指令。例如在很多RISC中都提供了浮点运算指令。但只有在用硬件实现比用一组简单指令更快时,RISC才考虑包括这种复杂功能指令。所谓“精简”并不是要求把指令集缩减到某最低限,而应以满足性能要求为前提。
        根据上述定义和特点,我们就不难分清什么是RISC计算机了。