1. A method for performing memory interleaving comprising: performing, in a first level of a two-level interleaving scheme, interleaving across full cache lines of a memory; performing, in a second level of the two-level interleaving scheme, interleaving across sub-cache lines of the memory; using a prime number of groups of banks for the first level of the two-level interleaving scheme; and using a prime number of banks within each of said groups of banks for the second level of the two-level interleaving scheme.