Instruction pipelining
Superscalar processor
Out-of-order execution
Instruction level parallelism
Hardware threads
Caches