来自当知百科
2010年9月4日 (六) 11:41老生常庸讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到: 导航搜索

定义

  复杂指令集计算机(Complex Instruction Set Computer,CISC

  早期的计算机部件比较昂贵,主频低,运算速度慢。为了提高运算速度,人们不得不将越来越多的复杂指令加入到指令系统中,以提高计算机的处理效率,这就逐步形成复杂指令集计算机体系。为了在有限的指令长度内实现更多的指令,人们又设计了操作码扩展。然后,为了达到操作码扩展的先决条件——减少地址码,设计师又发现了各种寻址方式,如基址寻址、相对寻址等,以最大限度地压缩地址长度,为操作码留出空间。Intel公司的X86系列CPU是典型的CISC体系的结构,从最初的8086到后来的Pentium系列,每出一代新的CPU,都会有自己新的指令,而为了兼容以前的CPU平台上的软件,旧的CPU的指令集又必须保留,这就使指令的解码系统越来越复杂。CISC可以有效地减少编译代码中指令的数目,使取指操作所需要的内存访问数量达到最小化。此外CISC可以简化编译器结构,它在处理器指令集中包含了类似于程序设计语言结构的复杂指令,这些复杂指令减少了程序设计语言和机器语言之间的语义差别,而且简化了编译器的结构。

  为了支持复杂指令集,CISC通常包括一个复杂的数据通路和一个微程序控制器。如图1-5所示。微程序控制器由一个微程序存储器、一个微程序计数器(MicroPC)和地址选择逻辑构成。在微程序存储器中的每一个字都表示一个控制字,并且包含了一个时钟周期内所有数据通路控制信号的值。这就意味着控制字中的每一位表示一个数据通路控制线的值。例如,它可以用于加载寄存器或者选择ALU中的一个操作。此外每个处理器指令都由一系列的控制字组成。当从内存中取出这样的一条指令时,首先把它放在指令寄存器中,然后地址选择逻辑再根据他来确定微程序存储器中相应的控制字顺序起始地址。当把该起始地址放入MicroPC中后,就从微程序内存中找到相应的控制字,并利用它在数据通路中把数据从一个寄存器传送到另一个寄存器。由于MicroPC中的地址并发递增来指向下一个控制字,因此对于序列中的每个控制器都会重复一遍这一步骤。最终,当执行完最后一个控制字时,就从内存中取出一条新的指令,整个过程会重复进行。

  由此可见,控制字的数量及时钟周期的数目对于每一条指令都可以是不同的。因此在CISC中很难实现指令流水操作。另外,速度相对较慢的微程序存储器需要一个较长的时钟周期。由于指令流水和短的时钟周期都是快速执行程序的必要条件,因此CISC体系结构对于高效处理器而言不太合适的。

CISC体系结构的计算机存在以下一些问题

  (1)指令的2/8规律

  CISC计算机系统中,各种指令的使用频率相差悬殊。大量的统计数字表明,大概有20%的比较简单的指令被反复使用,使用量约占整个程序的80%;而有80%左右的指令则很少使用,其使用量约占整个程序的20%。

  VLSI制造工艺要求CPU控制逻辑的规整性

  进入20世纪80年代后,VLSI技术的发展非常迅速,往往每3到4年集成度就提高了一个数量级。VLSI工艺要求规整性,而CISC处理器中,为了实现大量复杂的指令,控制逻辑极不规整,给VLSI工艺造成很大困难。

  此外,以CISC处理器中,大量使用微程序技术以实现复杂的指令系统。20世纪70年代之前一般采用磁芯做主存储器,采用半导体做控制存储器,两者的速度相差5~10倍。从70年代后期开始,大量使用DRAM(动态随机存储器)做主存储器,使主存与控制存储器的速度相当,从而使许多简单指令没有必要用微程序来实现。而复杂的指令,用微程序实现和简单指令组成的子程序实现已经没有多大区别。

  软硬件的功能划分

  在CISC中,为了支持目标程序的优化,支持高级语言和编译程序,增加了许多复杂的指令,用一条指令来替代一串指令。这些复杂指令简化目标程序,缩小了高级语言与机器指令之间的语义差距。但是,增加了这些复杂指令并不等于缩短了程序的执行时间。

  为了实现复杂的指令,不仅增加了硬件的复杂程序,而且使指令的执行周期大大加长。例如,为了支持编译程序的对称性要求,一般的运算型指令都能直接访问主存储器,从而使指令的执行周期数增加,数据的重复利用率降低。据统计,一般CISC处理器的指令平均执行周期都在4以上,有些在10以上,如Intel公司的8088等。

  这里有一个软件与硬件的功能如何恰当分配的问题。在CISC中,通过增强指令系统的功能,简化了软件,增加了硬件的复杂程度。然而,由于指令复杂了,指令的执行时间必然加长,从而有可能使整个程序的执行时间反而增加,因此,在计算机体系结构设计中,软硬件功能划分必须核实。

  RISC 和CISC是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效

  的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:

  (1) 指令系统:RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。

  (2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。

  (3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序让设计相对容易,效率较高。

  (4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。

  (5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU包含有丰富的电路单元,因而功能强、面积大、功耗大。

  (6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。

  (7) 用户使用:RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。

  (8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC机器则更适合于通用机。

个人工具
名字空间

变换
查看
操作
导航
工具箱