From owner-freebsd-arch@FreeBSD.ORG Thu Mar 18 23:02:15 2010 Return-Path: Delivered-To: freebsd-arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 54EC7106564A; Thu, 18 Mar 2010 23:02:15 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 140B98FC15; Thu, 18 Mar 2010 23:02:14 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o2IMv7hp069371; Thu, 18 Mar 2010 16:57:08 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Thu, 18 Mar 2010 16:57:25 -0600 (MDT) Message-Id: <20100318.165725.480410072667175878.imp@bsdimp.com> To: scottl@samsco.org From: "M. Warner Losh" In-Reply-To: References: <20100318.161117.658811636873842325.imp@bsdimp.com> X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: max@love2party.net, rwatson@FreeBSD.org, freebsd-arch@FreeBSD.org Subject: Re: likely and unlikely X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Mar 2010 23:02:15 -0000 In message: Scott Long writes: : On Mar 18, 2010, at 4:11 PM, M. Warner Losh wrote: : > In message: : > Robert Watson 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. The PMC work will tell us that... Warner