In the context of pipeline, ‘Predict-not-taken’ is a method of branch prediction in which the hardware assumes that the next instruction to be executed will be the instruction following the branch instruction in memory. This (possible) next instruction is placed in the pipe and execution begins. If after the branch is finished executing, it is found that we really wanted to take the branch, then the (possible) next instruction that we had been executing is thrown out by the hardware, and we begin executing the correct instruction, the branch target.
Predict taken: branch penalty $=.15 * .60 * 2+.15 * .40 * 3+.01 * 2=$ .38 That is, of the $15 \%$ conditional branches, if they are taken, we accrue a 2 cycle penalty because we know the branch location in the 3rd stage, and if we find that the branch is not taken (4th stage), we wind up with a 3 cycle penalty. For unconditional branches, we always have a 2 cycle penalty.
Predict not taken: branch penalty $=.15 * .60 * 3+.15 * .40 * 0+.01 * 3=.30$ Here, if we assume not taken, then conditional branches that are not taken have no penalty but conditional branches taken and unconditional branches always have a 3 cycle penalty. So assume not taken is better for this machine.