Guarded Execution (cont)
Disadvantage of guarded instructions:
- Requires 3 operand fetches from register file instead of 2 (guard register, src1, src2)
- Larger register file because of extra ports
- Guard conditions consume registers
- Guard causes MORE instructions to be executed! (instructions in not-taken path executed as NOPS!)
- Guarding must be included in ISA definition from the beginning -- for this reason, mostly used in VLIW architectures which routinely define new ISAs
- Not all branches can be eliminated (unconditional jumps) or too costly in terms of extra instructions in non-taken path