Predication is an improvement to prediction in that it reduces waiting. For example, lets say at a diner you can have either Steak or Fish, and it takes 5 minutes to prepare (red and full of germs but that's besides the point...) each. It also takes 5 minutes to tell the waiter to ring it up and pay etc. etc. The waiter may try to reduce the time it takes for you to order by predicting that you usually order raw Steak and not raw Fish, so he would ring up the steak and begin preparing it. The problem is, what happens when the waiter is wrong. If the waiter is wrong, the waiter has to stop cooking the Steak, ring up a different price, etc. This is very costly in terms of time. Prediction works the same way. Sometimes it's good, other times it's not so good. (it's mostly good, around 90-95% of the time) Now, a Predication waiter would, instead of guessing whether or not you want steak or fish, will prepare both steak and fish simultaneously and then give you the one you want. Which one is more efficient? Obviously Predication; since the architecture is very efficient. Since not all instructions can be predicated; the EPIC processor must decide which instructions can be executed in a branch (actually, the compiler TELLS the processor) by setting the predicate register (there are 64 of them) to true. Notice that in our waiter example above, Predication eliminated a choice (i.e. reduced the number of branches in the code) by executing everything simultaneously.
Example of predication in action