标题：CISC
简介
CISC是指采用一整套计算机指令进行操作的计算机。而后又  CISC出现了精简指令集计算机，它精简了指令集，只保留了那些常用的指令，这样计算机能以更快的速度执行操作。[1]​
CISC早期的计算机部件比较昂贵，主频低，运算速度慢。为了提高运算速度，人们不得不将越来越多的复杂指令加入到指令系统中，以提高计算机的处理效率，这就逐步形成复杂指令集计算机体系。为了在有限的指令长度内实现更多的指令，人们又设计了操作码扩展。然后，为了达到操作码扩展的先决条件——减少地址码，设计师又发现了各种寻址方式，如基址寻址、相对寻址等，以最大限度地压缩地址长度，为操作码留出空间。Intel公司的X86系列CPU是典型的CISC体系的结构，从最初的8086到后来的Pentium系列，每出一代新的CPU，都会有自己新的指令，而为了兼容以前的CPU平台上的软件，旧的CPU的指令集又必须保留，这就使指令的解码系统越来越复杂。CISC可以有效地减少编译代码中指令的数目，使取指操作所需要的内存访问数量达到最小化。此外CISC可以简化编译器结构，它在处理器指令集中包含了类似于程序设计语言结构的复杂指令，这些复杂指令减少了程序设计语言和机器语言之间的语义差别，而且简化了编译器的结构。
为了支持复杂指令集，CISC通常包括一个复杂的数据通路和一个微程序控制  CISC器。微程序控制器由一个微程序存储器、一个微程序计数器（MicroPC）和地址选择逻辑构成。在微程序存储器中的每一个字都表示一个控制字，并且包含了一个时钟周期内所有数据通路控制信号的值。这就意味着控制字中的每一位表示一个数据通路控制线的值。例如，它可以用于加载寄存器或者选择ALU中的一个操作。此外每个处理器指令都由一系列的控制字组成。当从内存中取出这样的一条指令时，首先把它放在指令寄存器中，然后地址选择逻辑再根据他来确定微程序存储器中相应的控制字顺序起始地址。当把该起始地址放入MicroPC中后，就从微程序内存中找到相应的控制字，并利用它在数据通路中把数据从一个寄存器传送到另一个寄存器。由于MicroPC中的地址并发递增来指向下一个控制字，因此对于序列中的每个控制器都会重复一遍这一步骤。最终，当执行完最后一个控制字时，就从内存中取出一条新的指令，整个过程会重复进行。
由此可见，控制字的数量及时钟周期的数目对于每一条指令都可以是不同的。因此在CISC中很难实现指令流水操作。另外，速度相对较慢的微程序存储器需要一个较长的时钟周期。由于指令流水和短的时钟周期都是快速执行程序的必要条件，因此CISC体系结构对于高效处理器而言不太合适的。
（百度名片内容和图片来源：[2]）
发展历史
在计算机指令系统的优化发展过程中，出现过两个截然不同的优化方向：  CISCCISC技术和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,英特尔架构）为主，而且多数为中低档服务器所采用。
区别
CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构，它的设计目的是  CISC要用最少的机器语言指令来完成所需的计算任务。RISC和CISC是设计制造微处理器的两种典型技术，虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡，以求达到高效的目的，但采用的方法不同，因此，在很多方面差异很大，它们主要有： 
（1）指令系统：RISC设计者把主要精力放在那些经常使用的指令上，尽量使它们具有简单高效的特色。对不常用的功能，常通过组合指令来完成。因此，在RISC机器上实现特殊功能时，效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC计算机的指令系统比较丰富，有专用指令来完成特定的功能。因此，处理特殊任务效率较高。
（2）存储器操作：RISC对存储器操作有限制，使控制简单化；而CISC机器的存储器操作指令多，操作直接。
（3）程序：RISC汇编语言程序一般需要较大的内存空间，实现特殊功能时程序复杂，不易设计；而CISC汇编语言程序编程相对简单，科学计算及复杂操作的程序设计相对容易，效率较高。
（4）中断：RISC机器在一条指令执行的适当地方可以响应中断；而CIS  CISCC机器是在一条指令执行结束后响应中断。 
（5）CPU：RISCCPU包含有较少的单元电路，因而面积小、功耗低；而CISCCPU包含有丰富的电路单元，因而功能强、面积大、功耗大。 （6）设计周期：RISC微处理器结构简单，布局紧凑，设计周期短，且易于采用最新技术；CISC微处理器结构复杂，设计周期长。
（7）用户使用：RISC微处理器结构简单，指令规整，性能容易把握，易学易用；CISC微处理器结构复杂，功能强大，实现特殊功能容易。
（8）应用范围：由于RISC指令系统的确定与特定的应用领域有关，故RISC机器更适合于专用机；而CISC机器则更适合于通用机。
特点
指令系统庞大，指令功能复杂，指令格式、寻址方式多；绝大多数指令需多个机器周期完成；各种指令都可访问存储器；采用微程序控制；有专用寄存器，少量；难以用优化编译技术生成高效的目标代码程序；CISC存在的问题 ：指令系统庞大，指令功能复杂，指令格式、寻址方式多；执行速度慢；难以优化编译，编译程序复杂； 80%的指令在20%的运行时间使用；无法并行；无法兼容；导致CISC指令系统复杂的主要原因 ：减少语义差距减少存储空间，提高速度为了向上兼容 带来的后果电路复杂，编译效率低无法并行；无法兼容 典型的CISC产品 项目 VAX11/780 1978年 Intel80386 1985年 MC68020 1984年 指令条数 304 111 101 寻址方式 24 11 16 指令格式 变长（2-57byte） 变长（1-17byte）16从CISC到RISC CISC指令系统存在的问题：20%与80%规律 CISC中，大约20%的指令占据了80%的处理机时间。其余80%指令：使用频度只占20%的处理机运行时间 VLSI技术的发展引起的问题 VLSI工艺要求规整性，RISC正好适应了VLSI工艺的要求主存与控存的速度相当，简单指令没有必要用微程序实现，复杂指令用微程序实现与用简单指令组成的子程序实现没有多大区别；由于VLSI的集成度迅速提高，使得生产单芯片处理机成为可能。 软硬件的功能分配问题复杂的指令使指令的执行周期大大加长一般CISC处理机的指令平均执行周期都在4以上，有些在10以上 CISC增强了指令系统功能，简化了软件，但硬件复杂了，设计周期加长。
缺点
采用复杂指令系统的计算机有着较强的处理高级语言的能力．这对提高  CISC计算机的性能是有益的．当计算机的设计沿着这条道路发展时．有些人没有随波逐流．他们回过头去看一看过去走过的道路，开始怀疑这种传统的做法：IBM公司设在纽约Yorktown的JhomasI.Wason研究中心于1975年组织力量研究指令系统的合理性问题．因为它当时已感到，日趋庞杂的指令系统不但不易实现．而且还可能降低系统性能。1979年以帕特逊教授为首的一批科学家也开始在美国加州大学伯克利分校开展这一研究．结果表明，CISC存在许多缺点． 首先．在这种计算机中．各种指令的使用率相差悬殊：一个典型程序的运算过程所使用的80%指令．只占一个处理器指令系统的20%．事实上最频繁使用的指令是取、存和加这些最简单的指令．这样-来，长期致力于复杂指令系统的设计，实际上是在设计一种难得在实践中用得上的指令系统的处理器．
同时．复杂的指令系统必然带来结构的复杂性．这不但增加了设计的时间与成本还容易造成设计失误．此外．尽管VLSI技术现在已达到很高的水平，但也很难把CISC的全部硬件做在一个芯片上，这也妨碍单片计算机的发展．在CISC中，许多复杂指令需要极复杂的操作，这类指令多数是某种高级语言的直接翻版，因而通用性差．由于采用二级的微码执行方式，它也降低那些被频繁调用的简单指令系统的运行速度． 因而．针对CISC的这些弊病．帕特逊等人提出了精简指令的设想即指令系统应当只包含那些使用频率很高的少量指令．并提供一些必要的指令以支持操作系统和高级语言．按照这个原则发展而成的计算机被称为精简指令集计算机(ReducedInstructionSetComputer-RISC)．简称RISC．
问题
（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 机器则更适合于通用机。