Compared with hardware-based methods, softwarebased methods which do not need additional hardware costs are regarded as efficient methods for tolerating soft errors. Softwarebased methods which are implemented by software protection imply performance sacrifice. This paper proposes a new configurable approach whose purpose is to balance system reliability and performance to tolerate soft errors via partial software protection. Those unprotected software regions which are motivated by soft error mask on the software level are related to statically dead codes, those codes whose probabilities of being executed are low and some partially dead codes. For those protected codes, we copy all data and operate every operation twice to ensure the data stored in the memory are correct. Additionally, we ensure every branch instruction can jump to the right address by checking the condition and destination address. Finally, our approach is implemented by modification of the compiler. System reliability and performance are evaluated with different configurations. Experimental results demonstrate our aim to balance system reliability and performance.