Transient Fault Management in Microprogrammed Units: a Software Recovery Approach