A branch is a decision between two sets of instructions. In our bank example, the choice between filling out a withdrawal or deposit slip is a branch. Assume, in an effort to respond to customers quickly, that a bank teller wishes to prepare the appropriate deposit or withdrawal slip in advance for the next customer. Since most customers make deposits, the teller predicts that a deposit slip will be needed. Similarly, today's architectures use a method called branch prediction to predict which set of instructions to load.
Branches also constrain compiler efficiency and underutilize the capabilities of the microprocessor.
The new 64-bit ISA uses a concept called predication. Assume the teller develops a better strategy for responding quickly to customers in line. When he has a spare moment, he prepares both a deposit and withdrawal slip for each customer. Then he uses the appropriate slip and discards the other. The teller now works more efficiently without causing the customers in line to wait.