简介
复杂指令集,也称为CISC指令集,英文名是CISC,(Complex Instruction Set Computing的缩写)。在CISC微处理器中,程式的各条指令是按顺序串列执行的,每条指令中的各个操作也是按顺序串列执行的。顺序执行的优点是控製简单,但电脑各部分的利用率不高,执行速度慢。其实它是英特尔生产的x86系列(也就是IA-32架构)CPU及其兼容CPU,如AMD、VIA的。即使是现在新起的X86-64(也被称为AMD64)都是属于CISC的範畴。
发展背景
CISC早期的电脑部件比较昂贵,主频低,运算速度慢。为了提高运算速度,人们不得不将越来越多的复杂指令加入到指令系统中,以提高电脑的处理效率,这就逐步形成复杂指令集电脑体系。为了在有限的指令长度内实现更多的指令,人们又设计了操作码扩展。然后,为了达到操作码扩展的先决条件--减少地址码,设计师又发现了各种定址方式,如基址定址、相对定址等,以最大限度地压缩地址长度,为操作码留出空间。Intel公司的X86系列CPU是典型的CISC体系的结构,从最初的8086到后来的Pentium系列,每出一代新的CPU,都会有自己新的指令,而为了兼容以前的CPU平台上的软体,旧的CPU的指令集又必须保留,这就使指令的解码系统越来越复杂。CISC可以有效地减少编译代码中指令的数目,使取指操作所需要的记忆体访问数量达到最小化。此外CISC可以简化编译器结构,它在处理器指令集中包含了类似于程式语言结构的复杂指令,这些复杂指令减少了程式语言和机器语言之间的语义差别,而且简化了编译器的结构。
为了支持复杂指令集,CISC通常包括一个复杂的资料通路和一个微程式控製 CISC器。微程式控製器由一个微程式存储器、一个微程式计数器(MicroPC)和地址选择逻辑构成。在微程式存储器中的每一个字都表示一个控製字,并且包含了一个时锺周期内所有资料通路控製信号的值。这就意味着控製字中的每一位表示一个资料通路控製线的值。例如,它可以用于载入暂存器或者选择ALU中的一个操作。此外每个处理器指令都由一系列的控製字组成。当从记忆体中取出这样的一条指令时,首先把它放在指令暂存器中,然后地址选择逻辑再根据它来确定微程式存储器中相应的控製字顺序起始地址。当把该起始地址放入MicroPC中后,就从微程式记忆体中找到相应的控製字,并利用它在资料通路中把资料从一个暂存器传送到另一个暂存器。由于MicroPC中的地址并发递增来指向下一个控製字,因此对于序列中的每个控製器都会重复一遍这一步骤。最终,当执行完最后一个控製字时,就从记忆体中取出一条新的指令,整个过程会重复进行。
由此可见,控製字的数量及时锺周期的数目对于每一条指令都可以是不同的。因此在CISC中很难实现指令流水操作。另外,速度相对较慢的微程式存储器需要一个较长的时锺周期。由于指令流水和短的时锺周期都是快速执行程式的必要条件,因此CISC体系结构对于高效处理器而言不太合适的。
发展历程
在电脑指令系统的最佳化发展过程中,出现过两个截然不同的最佳化方向:CISC技术和RISC技术。CISC是指复杂指令系统电脑(Complex Instruction Set Computer);RISC是指精简指令系统电脑(Reduced Instruction Set Computer)。这裏的电脑指令系统指的是电脑的最低层的机器指令,也就是CPU能够直接识别的指令。随着电脑系统的复杂,要求电脑指令系统的构造能使电脑的整体性能更快更稳定。最初,人们採用的最佳化方法是通过设定一些功能复杂的指令,把一些原来由软体实现的、常用的功能改用硬体的指令系统实现,以此来提高电脑的执行速度,这种电脑系统就被称为复杂指令系统电脑,即Complex Instruction Set Computer,简称CISC。另一种最佳化方法是在20世纪80年代才发展起来的,其基本思想是尽量简化电脑指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程式来实现,这种电脑系统就被称为精简指令系统电脑.即Reduced Instruction Set Computer,简称RISC。RISC技术的精华就是通过简化电脑指令功能,使指令的平均执行周期减少,从而提高电脑的工作主频,同时大量使用通用暂存器来提高子程式执行的速度。
从电脑诞生以来,人们一直沿用CISC指令集方式。早期的桌面软体是按CISC设计的,并一直沿用。桌面电脑流行的x86体系结构即使用CISC。微处理器(CPU)厂商一直在走CISC的发展道路,包括Intel、AMD,还有其他一些现在已经更名的厂商,如TI(德州仪器)、Cyrix以及VIA(威盛)等。在CISC微处理器中,程式的各条指令是按顺序串列执行的,每条指令中的各个操作也是按顺序串列执行的。顺序执行的优点是控製简单,但电脑各部分的利用率不高,执行速度慢。CISC架构的伺服器主要以IA-32架构(IntelArchitecture,英特尔架构)为主,而且多数为中低档伺服器所採用。
缺点
採用复杂指令系统的电脑有着较强的处理高级语言的能力.这对提高电脑的性能是有益的.当电脑的设计沿着这条道路发展时.有些人没有随波逐流.他们回过头去看一看过去走过的道路,开始怀疑这种传统的做法:IBM公司设在纽约Yorktown的JhomasI.Wason研究中心于1975年组织力量研究指令系统的合理性问题.因为它当时已感到,日趋庞杂的指令系统不但不易实现.而且还可能降低系统性能。1979年以帕特逊教授为首的一批科学家也开始在美国加州大学伯克利分校开展这一研究.结果表明,CISC存在许多缺点. 首先.在这种电脑中.各种指令的使用率相差悬殊:一个典型程式的运算过程所使用的80%指令.只佔一个处理器指令系统的20%.事实上最频繁使用的指令是取、存和加这些最简单的指令.这样-来,长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器.
同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误.此外.尽管VLSI技术现在已达到很高的水準,但也很难把CISC的全部硬体做在一个晶片上,这也妨碍单片电脑的发展.在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种高级语言的直接翻版,因而通用性差.由于採用二级的微码执行方式,它也降低那些被频繁调用的简单指令系统的运行速度. 因而.针对CISC的这些弊病.帕特逊等人提出了精简指令的构想即指令系统应当只包含那些使用频率很高的少量指令.并提供一些必要的指令以支持作业系统和高级语言.按照这个原则发展而成的电脑被称为精简指令集电脑(ReducedInstructionSetComputer-RISC).简称RISC.
竞争对手
RISC是简化指令集电脑的简略缩写,其风格是强调电脑结构的简单性和高效性。RISC设计是从足够的不可缺少的指令集开始的。它的速度比那些具有传统复杂指令组电脑结构的机器快得多,而且RISC机由于其较简洁的设计,较易使用,故具有更短的研製开发周期。RISC结构一般具有如下的一些特点:
①单周期的执行: 它统一用单周期指令。从根本上克服了CISC指令周期数有长有短,造成运行中偶发性不确定,致使运行失常的问题。
②採用高效的流水线操作:使指令在流水线中并行地操作,从而提高处理资料和指令的速度。
③无微代码的硬连线控製:微代码的使用会增加复杂性和每条指令的执行周期。
④指令格式的规格化和简单化:为与流水线结构相适应且提高流水线的效率,指令的格式必须趋于简单和固定的规式。比如指令採用16位或32位的固定的长度,并且指令中的操作码栏位、运算元栏位都尽可能具有统一的格式。此外,尽量减少定址方式,从而使硬体逻辑部件简化且缩短解码时间,同时也提高了机器执行效率和可靠性。
⑤採用面向暂存器堆的指令:RISC结构採用大量的暂存器-- 暂存器操作指令,使指令系统更为精简。控製部件更为简化,指令执行速度大大提高。由于VLSI技术的迅速发展,使得在一个晶片上做大量的暂存器成为可能。这也促成了RISC结构的实现。
⑥採用装入/存储指令结构:在CISC结构中。大量设定存储器-- 存储器操作指令,频繁地访问记忆体,将会使执行速度降低。RISC结构的指令系统中,只有装入/存储指令可以访问记忆体,而其它指令均在暂存器之间对资料进行处理。用装入指令从记忆体中将资料取出,送到暂存器;在暂存器之间对资料进行快速处理,并将它暂存在那裏,以便再有需要时。不必再次访问记忆体。在适当的时候,使用一条存储指令再将这个资料送回记忆体。採用这种方法可以提高指令执行的速度。


















