Reducing the Branch Penalty in Pipelined Processors