Designing On-Chip Memory Systems For Throughput Architectures