Instruction pipelining
Unfortunately, not all instructions are independent. In a simple pipeline, completing an instruction may require 5 stages.  To operate at full performance, this pipeline will need to run 4 subsequent independent instructions while the first is completing.  Any of those 4 instructions might depend on the output of the first instruction, causing the pipeline control logic to wait and insert a stall or wasted clock cycle into the pipeline until the dependency is resolved.  Fortunately, techniques such as forwarding can significantly reduce the cases where stalling is required.