You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As far as I can tell the hash value in each node really is just a separate array for all buckets. Assuming it really is only used in bdd_makenode then we should be able to get the following new properties by splitting it.
This decreases the node struct size to be only 20 bytes, which may improve cache locality (though it still does not nicely fit into a 64 byte cache line). Combining this change with Change nodetable and cache indexing from int to ssize_t #3 we get a node size of 32 bytes, which fits perfectly with the cache line.
Recursing through the BDD may run faster this way due to better cache behaviour.
One can hope that a lookup of the hash bucket leads to fewer nodes being thrown out of the cache, since merely another cache line with a hash value is thrown out instead. I find it unlikely, but maybe the cache behaviour of the hash function improves.
This allows the node table to not have to be a prime number in size and so make use of the entire addressable space.
The text was updated successfully, but these errors were encountered:
As far as I can tell the hash value in each node really is just a separate array for all buckets. Assuming it really is only used in
bdd_makenode
then we should be able to get the following new properties by splitting it.int
tossize_t
#3 we get a node size of 32 bytes, which fits perfectly with the cache line.The text was updated successfully, but these errors were encountered: