Originally posted by DGhost
even if it was broken down into stages, each APU has to wait until the APU working on the preceeding stage is done. if the input is not a constant, it *has* to wait until the value is computed before it can operate on it. The only exceptions of this is when using branch prediction, and even then it generally only operates on cases where there are only two branches - ie, true/false pairs.
most of the APU's would still sit idle because you cannot get around that fact.
even if it was broken down into stages, each APU has to wait until the APU working on the preceeding stage is done. if the input is not a constant, it *has* to wait until the value is computed before it can operate on it. The only exceptions of this is when using branch prediction, and even then it generally only operates on cases where there are only two branches - ie, true/false pairs.
most of the APU's would still sit idle because you cannot get around that fact.
Techniques like loop unrolling can help here a lot. Idle cells can also do things like memory prefetch, or speculative processing. Modern processors will calculate multiple paths - not just branch prediction, but multi-pathing - calculating possible answers and choosing the correct one as soon as possible.
Comment