Date: Mon, 22 Mar 2010 06:52:40 +1100 From: Peter Jeremy <peterjeremy@acm.org> To: Scott Long <scottl@samsco.org> Cc: freebsd-arch@FreeBSD.org Subject: Re: likely and unlikely Message-ID: <20100321195240.GD45042@server.vk2pj.dyndns.org> In-Reply-To: <15D5A6D4-1594-4667-AE51-0E26950C81DA@samsco.org> References: <alpine.BSF.2.00.1003131346270.51476@fledge.watson.org> <20100318.161117.658811636873842325.imp@bsdimp.com> <DA31205F-41FA-4AC3-888E-2001210EE623@samsco.org> <20100318.165725.480410072667175878.imp@bsdimp.com> <15D5A6D4-1594-4667-AE51-0E26950C81DA@samsco.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--J4XPiPrVK1ev6Sgr Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2010-Mar-18 19:43:57 -0600, Scott Long <scottl@samsco.org> wrote: >My understanding was that Atom wasn't super-scalar at all and has no >branch prediction or out-of-order logic. It's basically an 80486 >with a modern instruction set. Not quite. It only has in-order pipelines (though it does have a some very limited instruction re-ordering capablities) but is super-scalar (it can issue up to two instructions per cycle) and does have branch prediction. On the latter point, Intel states "branch predictors in Intel Atom processors do not distinguish between different branch types. Sometimes mixing different branch types can cause confusion in the branch prediction hardware." On my netbook, I'm seeing about 15% misprediction whilst idle but this drops to ~3% when I start OOo. Overall it looks like it's around 7%. I suspect predict_true/predict_false is unlikely to help in most cases. What would probably be more useful for Atom would be gcc scheduling support. This is available in gcc 4.3 (ie GPL3) but not in gcc 4.2. I've had a look at dumping the gcc 4.3 Atom scheduler into my gcc 4.2 but the infrastructure has changed sufficiently that this would be a non-trivial task. (And since it would not be committable, I don't think it's worth my time). Likewise, implementing scheduling from scratch in gcc 4.2 would be a non-trivial task. --=20 Peter Jeremy --J4XPiPrVK1ev6Sgr Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iEYEARECAAYFAkumeQgACgkQ/opHv/APuIdP0QCdHMNmba1vEvHN+duXYwV3aPdW pa0AoJSBchL2+HyeEAtKwB1QJV0frby+ =NSmF -----END PGP SIGNATURE----- --J4XPiPrVK1ev6Sgr--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100321195240.GD45042>