1. A method for determining a next available address for writing data to a cache memory, the method comprising: receiving a request for a candidate address in the cache memory, wherein the cache memory is divided into a plurality of cache memory banks; determining a candidate address in each of the plurality of cache memory banks using an address determination algorithm such that a plurality of candidate addresses are determined corresponding to the plurality of cache memory banks; selecting a candidate address from among the determined plurality of candidate addresses using an address selection function that is different from the address determination algorithm; and returning the selected candidate address in response to the request.