RISC vs. CISC
RISC vs. CISC
CISC
Towards CISC
• Wired logic microcode control
– Temptingly easy extensibility
• Performance tuning
– HW implementation of some high-level functions
• Marketing
– Add successful instructions of competitors
– “New feature” hype
– Compatibility: only extensions are possible
CISC Problems
• Performance tuning unsuccessful
– Rarely used high-level instructions
– Sometimes slower than equivalent sequence
• High complexity
– Pipelining bottlenecks lower clock rates
– Interrupt handling can complicate even more
• Marketing
– Prolonged design time and frequent microcode errors hurt
competitiveness
RISC Features
• Low complexity
– Generally results in overall speedup
– Less error-prone implementation by hardwired logic or
simple microcodes
• VLSI implementation advantages
– Less transistors
– Extra space: more registers, cache
• Marketing
– Reduced design time, less errors, and more options
increase competitiveness
RISC Compiler Issues
• The compilers themselves
– Computationally more complex
– More portable
• CISC
– Effectively realizes one particular High Level Language
Computer System in HW - recurring HW development
costs when change needed
• RISC
– Allows effective realization of any High Level Language
Computer System in SW - recurring SW development
costs when change needed
Conclusion – Optimum?
• Hybrid solutions
– RISC core & CISC interface
– Still has specific performance tuning
• Optimal ISA
– Between RISC & CISC
– Few, carefully chosen, useful complex instructions
– Still has complexity handling problems
RISC
Reduced Instruction Set Computers
• Microprocessor architecture
• Designed to perform a set of smaller
computer instructions so that it can operate
at higher speeds
What will we cover?
• History
• Theory
• Advantages
• Pipelining
Before the RISC era
• Compilers were hard to build especially for machines with
registers
– Make machine do more work than software
– Have instructions load and store directly to memory (memory-
to-memory operations)
• Software costs were rising and hardware costs were
dropping
– Move as much functionality to hardware
• Magnetic core memory was used as main memory which
was slow and expensive
– Minimize assembly code
• Complex Instruction Set Computers (CISC)
– Use complex instructions “MULT”, “ADD”…
Technology was advancing
• Compilers were improving
– Simple compilers found it difficult to use more complex
instructions
– Optimizing compilers rarely needed more powerful
instructions
• Caches
– allowed main memory to be accessed at similar speeds to
control memory
• Semiconductor memory was replacing magnetic core
memory
– Reduced performance gap between control and main
memory
Inception of RISC
• 1974 – John Cocke (IBM) proved that 80% of
work was done using only 20% of the
instructions
• Three RISC projects
– IBM 801 machine (1974)
– Berkeley’s RISC-I and RISC-II processors (1980)
– Stanford’s MIPS processor (1981)
• 1986 – announcement of first commercial
RISC chip
RISC Approach
• Use only simple instructions that can be
executed within one clock cycle
– Fewer transistors for instructions = more registers
• Pipelining
• Register-to-register operations
– Operand reuse
– Reduction of load/store
Pipelining
Sequential
IF ID O OE O
F S
IF ID O OE O
F S
Clock Cycle IF ID O OE O
F S
Pipelined
IF ID O OE O IF – Instruction Fetch
F S ID – Instruction Decode
IF ID O OE O
Clock Cycle
OF – Operand Fetch
F S
IF ID O OE O OE – Operand Execution
F S OS – Operation Store
Time
Pipelining
Data Dependency
IF – Instruction Fetch
IF ID O OE O ID – Instruction Decode
F S
IF ID O OE O OF – Operand Fetch
F S OE – Operand Execution
OS – Operation Store
IF ID O OE O
F S