Compiler and Architecture Co-design for Reliable Computing