Fault tolerance and detection by replication of input data and evaluating a packed data execution result
Systems, methods, and apparatuses for fault tolerance and detection are described. For example, an apparatus including circuitry to replicate input sources of an instruction; arithmetic logic unit (ALU) circuitry to execute the instruction with replicated input sources using single instruction, multiple data (SIMD) hardware to produce a packed data result; and comparison circuitry coupled to the ALU circuitry to evaluate the packed data result and output a singular data result into a destination of the instruction is described.
1. An apparatus comprising:
circuitry to replicate input sources of a scalar arithmetic instruction, wherein an opcode of the scalar arithmetic instruction is to indicate the use of using single instruction, multiple data (SIMD) hardware;
arithmetic logic unit (ALU) circuitry to execute the scalar arithmetic instruction with replicated input sources using the SIMD hardware to produce a packed data result; and
comparison circuitry coupled to the ALU circuitry to evaluate the packed data result and output a singular data result into a destination of the scalar arithmetic instruction, wherein the singular data result is to be stored as a scalar in a least significant data element of a packed data destination register.
2. The apparatus of claim 1 , wherein the inputs sources are scalar.
3. The apparatus of claim 1 , wherein the comparison circuitry is to vote on a majority result to output.
4. The apparatus of claim 3 , wherein the comparison circuitry is to output a signal indicating agreement or disagreement of the vote.
5. The apparatus of claim 1 , wherein the comparison circuitry is to output an indication of a fault when there is a fault.
6. A method comprising:
decoding a scalar arithmetic instruction;
replicating source data of the decoded scalar arithmetic instruction;
executing the decoded scalar arithmetic instruction using the replicated data to produce a packed data result; and
storing a singular data result from the packed data result, wherein the singular data result is to be stored as a scalar in a least significant data element of a packed data destination register.
7. The method of claim 6 , wherein the instruction is a scalar instruction, further comprising:
mapping the decoded instruction to a single instruction, multiple data (SIMD) instruction.
8. The method of claim 6 , wherein the instruction is a single instruction, multiple data (SIMD) instruction.
9. The method of claim 6 , further comprising:
determining that there is a fault; and
output a signal indicating the fault.
10. The method of claim 6 , further comprising:
determining the packed data result is tolerable; and
output a signal indicating agreement.
11. The method of claim 6 , further comprising:
determining the packed data result is not tolerable; and
output a signal indicating disagreement.
12. The method of claim 6 , wherein replicating source data of the decoded instruction comprises duplicating the source data into at least one packed data register.
13. The method of claim 6 , wherein replicating source data of the decoded instruction comprises routing the source data to execution hardware.