Supports Predication
Predication is a new way EPIC processors handle branches.
In past CISC and RISC chips, there were many times the CPU guessed the
wrong branch, which causes the processor to stall. Now, when EPIC
CPU's encounters a branch situation, it will begin executing the code along
all paths of the branch, exploiting as much parallelism as possible. Frequently
the right path to take on a branch depends on the result from instructions
still in the pipeline. When this condition is encountered by traditional
CISC and RISC based processors they will choose one of the paths of the
branch to execute and hope that it is the one that is to be taken.
If it is then they can continue on with no time wasted for not knowing
which way to go when the branch was encountered. On the other hand, if
they chose the wrong path, then they must reverse any operations done down
the incorrect path and then start over with the correct path. If
an EPIC processors encounters this condition the compiler can make it so
that both paths of a branch are executed in parallel. After the instructions
that were still executing in the pipe line are finished, the CPU
stores the result of the right path, and discards the others. The down
side to predications is the CPU is always going down many wrong paths of
the branch, so resources are being wasted, in a sense. But it is worth
it to not have to guess all the time.
Here is a Story (Example) to help you understand
predication better.
|