Extending the TokenCMP Cache Coherence Protocol for Low Overhead Fault Tolerance in CMP Architectures