Back
Next
CISC - complex instruction set computer
Although advanced languages made coding easier,
memory still very expensive,
higher level languages run slower.
Push to do as much work on the CPU hardware as possible with as few
instructions as possible (code density),
as fast as possible.
Individual machine level instructions evolved
to do more related steps,
and offer more flexible addressiing modes.
Pointers, pointers with offsets, lists of pointers, etc.
Address orthogonality - addressing modes independent of instruction function.
Address modes available to most instructions.
Instruction/operand length - not tightly bound to data bus size.
May have 0, 1, 2, or more operands.
Decoder may perform additional fetches to obtain all information needed
to execute instruction only when needed.
Register use - non-orthogonal.
Early CPU designs - registers are a type of memory.
Small number of registers.
Registers assigned specific tasks.
Tends to favor fewer registers
(expense of actual registers and overhead of tracking).
Number of registers very greatly between data-path designs.
6502 - 1 accumulator, 2 index registers.
8088 - 4 mixed purpose, 4 Index/operand address registers.
Primary function of the 4 'general' purpose 80x86 registers.
A - accumulator.
B - base
C - counter.
D - uses with a for math.
Upgrade implemented by widened the same registers.
IBM 360 - 16 GPR, 4 double floating point registers. $$$
Precursor to RISC architecture.
Original design
Backwards compatibility - because so many hours invested in existing
code, system purchasers wanted same architecture as previous system..
Examples of instruction complexity :
Single instruction performs complex or compound instructions.
808x: LOOPNZ target-location
Decrement CX register, test CX and Z condition code flag.
If both CX != 0 and z flag is not set,
branch to loop-back (change contents of PC).
* Decrementing CX to zero does NOT affect the z flag.
* takes 5/6 clock cycles.
IDIV - integer divide, can use indirect addressing.
IBM 360: ZAP D1(L1,B1),D2(L2,B2)
Zero a block of memory starting at address specified in register B1
plus the displacement value D1 for the length of L1.
Then copy the packed number of length specified in L2 from the memory
block pointed to by the register B2 plus the displacement D2.
Set appropriate condition flags.
(This is a loop with a pair of internal counters).
IBM 360 predates CISC/RISC concept but has both CICS and RISC features.
RISC
Large number of GPRs.
Support large number of register to register commands.
Limited addressing modes - although modes may be complex.
CISC
Very complex instructions available.
Variable length instructions.
Compound addressing modes.
L R1, 23(R2,R3)
Single instruction performs memory data fetch
and specified calculation.