Branch Optimizations; Avoid Branches Dependent On Random Data - AMD Athlon Processor x86 Optimization Manual

X86 code optimization
Table of Contents

Advertisement

22007E/0—November 1999

Avoid Branches Dependent on Random Data

TOP
Avoid Branches Dependent on Random Data

Branch Optimizations

W h i l e t h e A M D A t h l o n ™ p ro c e s s o r c o n t a i n s a ve ry
sophisticated branch unit, certain optimizations increase the
effectiveness of the branch prediction unit. This chapter
discusses rules that improve branch prediction and minimize
branch penalties. Guidelines are listed in order of importance.
Avoid conditional branches depending on random data, as these
are difficult to predict. For example, a piece of code receives a
random stream of characters "A" through "Z" and branches if
the character is before "M" in the collating sequence.
Data-dependent branches acting upon basically random data
causes the branch prediction logic to mispredict the branch
about 50% of the time.
If possible, design branch-free alternative code sequences,
which results in shorter average execution time. This technique
is especially important if the branch body is small. Examples 1
and 2 illustrate this concept using the CMOV instruction. Note
that the AMD-K6
instruction. Therefore, blended AMD-K6 and AMD Athlon
processor code should use examples 3 and 4.
AMD Athlon™ Processor x86 Code Optimization
®
processor does not support the CMOV
6
57

Advertisement

Table of Contents
loading

Table of Contents