Reliability-Aware Microarchitecture Design