什么是RISC计算机
由于软件技术的发展,传统的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计算机了。