RE: messing with branch prediction
| From: | Dmitry Stogov | Date: | Mon, 26 Jun 2006 11:20:44 +0000 |
| Subject: | RE: messing with branch prediction | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-24218@lists.php.net to get a copy of this message | ||
The patch looks good.
I already did some experiments with __builtin_expect() in the past, but
didn't get any visible speedup.
As I understand __builtin_expect() helps only in case if branch is not in
BTB and static branch prediction is used.
In case if branch instruction was already executed (and didn't go out from
BTB), __builtin_expect() has no effect.
It just reorders basic-blocks according to static branch prediction
algorithm.
Thanks. Dmitry.
> -----Original Message-----
> From: Nuno Lopes [mailto:nlopess@php.net]
> Sent: Sunday, June 18, 2006 5:50 PM
> To: PHPdev
> Cc: andi@php.net; dmitry@php.net
> Subject: messing with branch prediction
>
>
> Hello,
>
> Yesterday I was playing with branch prediction in the Zend VM
> executor.
> Although I didn't have any noticeable performance improvement
> within the
> bench.php script, I've put the patch on-line, because someone
> else might
> want to mess with it too :) (but with care..)
>
> patch: http://mega.ist.utl.pt/~ncpl/zend_branch_prediction.txt
> gcc docs:
> http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#index-g_
> t_005f_005fbuiltin_005fexpect-2440
>
> the zend.h part of the patch is based on the similar macros
> (with the same
> name, too) found in the Linux kernel.
>
> I made & tested the patch in a Centrino laptop with gcc 3.4,
> so it might be
> the cause of getting no relevant performance increase. On
> CPUs with longer
> pipelines (like Pentium 4/NetBurst architecture), the
> performance increase
> might be noticeable.
>
>
> Happy hacking :)
> Nuno
>
>
>