Date: Sun, 26 Jun 2011 14:50:07 -0700
   From: "Arthur A. Gleckler" <a...@speechcode.com>

   > Rather than wait longer for any objections, I've just committed this
   > together with a change to the i386 and x86-64 back ends to improve
   > overall system performance by 20%, using the same unscientific tests.
   > (Do a two-stage build to get the effect.)

   20%?!  That's a lot.  What do you attribute that to?  Is it the branch
   direction change, or the SYMBOL-NAME change, or something else?

The branch direction change.  Before, on pretty much every entry to a
non-leaf procedure, the CPU would see a backward branch and predict it
taken by default, if there were no dynamic profile data to inform the
branch predictor.  But almost all of the time, that branch -- to
handle interrupts -- would not be taken.

So basically every non-leaf procedure call would cause a branch
misprediction.

We have a similar issue with branch target prediction: we don't pair
CALL and RET.  Fixing that would be considerably trickier, and doing
it really effectively may require ABI changes.

_______________________________________________
MIT-Scheme-devel mailing list
MIT-Scheme-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/mit-scheme-devel

Reply via email to