Two significant reasons for Moore's Law: Exploiting instruction level parallelism and increasing CPU clock cycles.
ILP means that even though instructions appear to execute in program order, independent instructions can be executed simultaneously by a processor.
Diminishing benefit of superscalar execution: Increasing instructions per clock cycle does not result in much speed up after a certain extent. Programs have other dependencies that cannot be sped up.
The power wall: Increasing processor speed requires high power which produces high heat.