[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MIT-Scheme-devel] bookkeeping memory allocated per primitive

From: Taylor R Campbell
Subject: Re: [MIT-Scheme-devel] bookkeeping memory allocated per primitive
Date: Sun, 26 Jun 2011 22:25:22 +0000
User-agent: IMAIL/1.21; Edwin/3.116; MIT-Scheme/9.1

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

   > 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

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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]