Performance tradeoffs in cache design