Predication in IA-64 ISA
Branch prediction: paying a heavy penalty in lost cycles if mispredicted.
IA-64 compilers uses predication to remove the penalties caused by mispredicted branches and by the need to fetch from noncontiguous target addresses by jumping over blocks of code beyond branches.
When the compiler finds a branch statement it marks all the instructions that represent each path of the branch with a unique identifier called a predicate.
IA-64 defines a 6-bit field (predicate register address) in each instruction to store this predicate.
? 64 unique predicates available at one time.
Instructions that share a particular branch path will share the same predicate. IA-64 also defines an advanced branch prediction mechanism for branches which cannot be removed.