Why don't caches store data based on a linear hash of the address, rather than simply the low-order bits? This would retain the property that an aligned block of data can be stored without collision, and would extend this benefit to page-strided data. Even a "hash" as simple as (low order bits) XOR (middle bits) would provide this benefit.