第二章 指令系统

2、VLSI技术的发展引起的问题

  进入八十年代后,VLSI技术的发展非常迅速,往往每3至4年集成度就提高一个数量级。VLSI工艺要求规整性,而CISC处理机中,为了实现大量的复杂指令,控制逻辑极不规整,给VLSI工艺造成很大困难。而RISC处理机的控制逻辑非常简单,它所需要的大量的通用寄存器等是非常规整的,正好适应了VLSI工艺的要求。
  在CISC处理机中,大量使用微程序技术以实现复杂的指令系统。70年代之前,一般用磁心做主存储器,用半导体做控制存储器,两者的速度相差5到10倍。从70年代后期开始,大量使用DRAM(动态随机存储器)做主存储器,使得主存与控存的速度相当,从而使许多简单指令没有必要用微程序来实现,而复杂的指令,用微程序实现和用简单指令组成的子程序实现已经没有多大区别。
  由于VLSI的集成度迅速提高,使得生产单芯片处理机成为可能。在单芯片处理机内,希望采用规整的硬布线控制逻辑,不希望用微程序。

3、软硬件的功能分配问题

  在CISC中,为了支持目标程序的优化,支持高级语言和编译程序,增加了许多复杂的指令,用一条指令来代替一串指令。这些复杂指令简化了目标程序,缩小了高级语言与机器指令之间的语义差距。然而,增加了这些复杂指令,是否能缩短程序的执行时间呢?实际上,往往不是这样。
  为了实现复杂的指令,不仅增加了硬件的复杂程度,而且使指令的执行周期大大加长。例如,为了支持编译程序的对称性要求,一般的运算型指令都能直接访问主存储器,从而使指令的执行周期数增加,数据的重复利用率降低。据统计,一般CISC处理机的指令平均执行周期都在4以上,有些在10以上,如Intel公司的8088,Motorola公司的MC68010,DEC公司的MICRO VAX-11等。
  这里有一个软件与硬件的功能如何恰当分配的问题。在CISC中,通过增强指令系统的功能,简化了软件,增加了硬件的复杂程度。然而,由于指令复杂了,指令的执行时间必然加长。从而,有可能使整个程序的执行时间反而增加。因此,在计算机体系结构设计中,软硬件的功能分配必须恰当,否则,很可能适得其反。
  1981年,Patterson等人研制成功了32位的RISC I微处理器。总共31种指令(算术逻辑指令12种,访问存储器指令8种,程序开展指令7种,其它指令4种),3种数据类型,只有变址寻址和相对寻址两种寻址方式。按字节编址,指令采用三地址,有少量二地址和一地址指令,指令字长都是32位。时钟频率为8MHz,所有指令都在一个周期(500ns)内完成。只有LOAD/STORE这里可以访问存储器,其它指令的操作都在通用寄存器之间进行,有78个通用寄存器,采用寄存器窗口技术。用NMOS VLSI实现。该处理器的设计错误和布线错误只有各12个,MC68000各有70个,Z8000为60个和100个。控制部分的芯片面积只占约6%,MC68000为50%,Z8000为53%。研制周期只用了10个月。其性能比当时最先进的商品化微处理器MC68000和Z8002快3至4倍,有些方面超过了PDP-11/70和VAX-11/780小型机。
  1983年,他们又研制出RISC II,指令种类扩充到39种(增加了采用变址寻址方式的取数指令5种和存数指令3种),使用单一的变址寻址方式。通用寄存器增加到138个。仍采用NMOS工艺。时钟频率提高到12MHz,指令执行周期缩短为330ns。控制部分只占总芯片面积的10%。该处理器的设计错误只有约18个,布线错误只有约12个。
  目前,RISC思想已经被人们普遍接受,许多CPU采用了RISC结构,一些典型的CISC处理机也吸收了RISC设计思想。