A Complex Instruction Set Computer (CISC) is an instruction set architecture (ISA) in which each instruction can indicate several low-level operations, such as a load from memory, an arithmetic operation, and a memory store, all in a single instruction. The term was coined in contrast to Reduced Instruction Set Computer (RISC).
Before the first RISC processors were designed, many computer architects tried to bridge the "semantic gap" - to design instruction sets to support high-level languages by providing "high-level" instructions such as procedure call and return, loop instructions such as "decrement and branch if non-zero" and complex addressing modes to allow data structure and array accesses to be combined into single instructions. Additionally, the compact nature of a CISC ISA results in smaller program sizes and fewer calls to main memory, which at the time (the 1960s) resulted in a tremendous savings on the cost of a computer.
While they achieved their aim of allowing high-level language constructs to be expressed in fewer instructions, it was observed that they did not always result in improved performance. For example, on one processor it was discovered that it was possible to improve performance by not using the procedure call instruction but using a sequence of simpler instructions instead. Furthermore, the more complex the instruction set, the greater the overhead of decoding any given instruction, both in execution time and silicon area. This is particularly true for processors which used microcode to decode the (macro)instructions. In other words, adding a large and complex instruction set to the processor even slowed down the execution of simple instructions. Implementing all these complex instructions also required a lot of work on the part of the chip designer, and a lot of transistors; this left less room on the processor to optimize performance in other ways.
Examples of CISC processors are the VAX, PDP-11, Motorola 68000 family and the Intel x86/Pentium CPUs.
The term, like its antonym RISC, has become less meaningful with the continued evolution of both CISC and RISC designs and implementations. Modern "CISC" CPUs, such as recent x86 designs like the Pentium 4, whilst they usually support every instruction that their predecessors did, are designed to work most efficiently with a subset of instructions more resembling a typical "RISC" instruction set. Indeed, many CISC CPUs (such as modern x86 processors from both Intel and AMD) "crack" many x86 instructions into a series of smaller internal "micro-operations" that are then executed internally by the processor.
See also CPU, RISC, microprocessor, computer, CPU design, and computer architecture.
This article was originally based on material from the Free On_line Dictionary of Computing, which is licensed under the GFDL.