Microprocessors use on-chip cache memories to avoid accesses to the slowmain memory.However, predictions show that those caches will become slow themselvesin future process technologies.Therefore, we investigate on how to obtain good performance using smalldirect mapped caches. The performance of a direct mapped cache can beimproved by using a proper set index function.This paper discusses a profile-based technique to efficiently evaluatea large number of set index functions.We introduce the notion of null space,a property of set index functions, to describe the occurenceof conflict misses. Using the null space, we can collect a limitedamount of profiling information that allows us to make predictions onthe cache miss ratio of any set index function.Furthermore, we can use this profiling information to propose new, conflict-free randomising set index functions.