I've written a couple cache-aware hashes for work (fintech), including an always correct version of this that rehashed when buckets filled. I always call them multi-buckets for lack of a better term.
Most data structures that rely on a chain of items can be improved by bucketing for cache lines (even linked lists).
I've also implemented 32 byte multi-buckets for a cuckoo hash scheme to try and balance search time and memory usages (you can get extremely high load factors using this approach). I don't think this approach is any better than a few other similar multiple-hashing schemes though.
I have tried keeping the hashs together in memory and using SSE compare instructions to do the comparison/mask of the entire bucket in a couple instructions, but have found the technique hit/miss.
Most data structures that rely on a chain of items can be improved by bucketing for cache lines (even linked lists).
I've also implemented 32 byte multi-buckets for a cuckoo hash scheme to try and balance search time and memory usages (you can get extremely high load factors using this approach). I don't think this approach is any better than a few other similar multiple-hashing schemes though.
I have tried keeping the hashs together in memory and using SSE compare instructions to do the comparison/mask of the entire bucket in a couple instructions, but have found the technique hit/miss.