[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: |
Arthur A. Gleckler |
Subject: |
Re: [MIT-Scheme-devel] bookkeeping memory allocated per primitive |
Date: |
Sun, 26 Jun 2011 16:53:57 -0700 |
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.
Wow, that's amazing. I've always heard that branch prediction makes a big difference, but I suppose that it's rarely the case that the problem is systemic. I imagine that it's usually one or two here and there, not nearly every one in the entire code base.
Nice hack!