While pipelining can in theory increase performance over an unpipelined core by a factor of the number of stages (assuming the clock frequency also scales with the number of stages), in reality, most code does not allow for ideal execution.
Pipelining may in theory increase performance over an unpipelined core by a factor of the number of stages. But in reality, most code does not allow for it.