likely and unlikely
Scott Long
scottl at samsco.org
Thu Mar 18 22:25:30 UTC 2010
On Mar 18, 2010, at 4:11 PM, M. Warner Losh wrote:
> In message: <alpine.BSF.2.00.1003131346270.51476 at fledge.watson.org>
> Robert Watson <rwatson at FreeBSD.org> writes:
> :
> : On Sat, 13 Mar 2010, Bruce Evans wrote:
> :
> : >> My point is: Handle with care!!! Trust your compiler/CPU
> : >> predictors/... - most of the time, they are smarter than you are ;)
> : >
> : > These macros may have useful 15-25 years ago for i386, i486 and
> : > Pentium1, since CPU branch predictors were either nonexistent or not
> : > so good. After that, CPU branch predictors became quite good. The
> : > macros should have been mostly unused 15-25 years ago too, since they
> : > optimize for unreadability and unwritability. Fortunately they are
> : > rarely used in FreeBSD. They were imported from NetBSD in 2003 where
> : > they are used more (306 instances in 2005 NetBSD /sys vs 28 instances
> : > in 2004 FreeBSD /sys; there are 2208 instances of likely() in 2004
> : > linux-2.6.10).
> :
> : I think it would be reasonable to expect that people deploy branch
> : prediction macros (as with prefetch, etc) only where there's specific
> : measurements that indicate they are important to have there -- at the
> : very least, pmc data, but ideally also benchmarking data.
>
> They are more useful on architectures where you have branches that
> tell the CPU if they are likely or unlikely to be taken...
>
And that's a very good point, one that Bruce really failed to address. Not only
is branch prediction useful for MIPS and ARM, I suspect that it's also useful
for Atom.
Scott
More information about the freebsd-arch
mailing list