  On Intel Sandy Bridge processor, last level cache (LLC) is divided into cache
slices and all physical addresses are distributed across the cache slices using
an hash function. With this undocumented hash function existing, it is
impossible to implement cache partition based on page coloring. This article
cracks the hash functions on two types of Intel Sandy processors by converting
the problem of cracking the hash function to the problem of classifying data
blocks into different groups based on eviction relationship existing between
data blocks that are mapped to the same cache set. Based on the cracking
result, this article proves that it's possible to implement cache partition
based on page coloring on cache indexed by hashing.
