A 5-stage classic RISC pipeline (IF, ID, EX, MEM, WB) resolves branch outcomes in the EX stage. The workload consists of 20% branch instructions, of which 60% are "taken." The architecture assumes all branches are "not taken" (no branch prediction hardware). What is the total branch penalty added to the base CPI of 1.0?
Explanation: Because branches are resolved in the EX stage, a "taken" branch means the instructions fetched into the IF and ID stages must be flushed, resulting in a 2-cycle penalty. Since the processor statically predicts "not taken", penalty cycles only occur when a branch is actually taken. The penalty is calculated as: Penalty = BranchFrequency x TakenRate x FlushCycles. Therefore, 0.20 x 0.60 x 2 = 0.24 cycles.