Duplicon Cache: Mitigating Off-Chip Memory Bank and Bank Group Conflicts via Data Duplication