Julian Seward e5264d94c5 Add extra auxiliary data structures which make it possible to quickly
find and delete all translations intersecting with small address
ranges (8 k or less, currently).  This makes it possible to simulate
ppc32 icbi instructions in reasonable time, and finally makes the
ppc32 port run at a usable speed.

The scheme is based around partitioning translations into equivalence
classes based on address ranges.  For deletions whose range falls
within a single class, all translations intersecting it can be found
by inspecting just that class and one other.  Given that there are 256
classes, this cuts the cost, relative to scanning the entire TC, by
approximately half that factor (viz, 128), assuming the translations
are distributed evenly over the classes.

The whole business is more complex and difficult than I would like.

A detailed comment will later be added.

Very thorough sanity checking has been added
(sanity_check_eclasses_in_sector).  This is engaged at
--sanity-level=4 and above.

The TT hash function (HASH_TT) has been improved to reduce its
tendency to cluster TT entries in some circumstances.  This has
allowed the TT maximum loading factor to be increased from 66% to 80%
and so the absolute size of the TC (in each sector) to be less than
2^16 entries.  The latter change is important for the fast-deletion
changes.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4942
2005-10-18 02:30:42 +00:00
..
2005-10-15 17:18:08 +00:00
2005-08-25 22:55:19 +00:00
2005-10-15 15:48:52 +00:00
2005-07-08 18:23:40 +00:00
2005-08-14 22:14:55 +00:00
2005-08-25 22:55:19 +00:00