SSE2 - Differences Between X87 FPU and SSE2

Differences Between X87 FPU and SSE2

FPU (x87) instructions provide higher precision by calculating intermediate results with 80 bits of precision, by default, to minimise roundoff error in numerically unstable algorithms (see IEEE 754 design rationale and references therein). However, the x87 FPU is a scalar unit only whereas SSE2 which can process a small vector of operands in parallel.

If codes designed for x87 are ported to the lower precision double precision SSE2 floating point, certain combinations of math operations or input datasets can result in measurable numerical deviation, which can be an issue in reproducible scientific computations, e.g. if the calculation results must be compared against results generated from a different machine architecture. A related issue is that, historically, language standards and compilers had been inconsistent in their handling of the x87 80-bit registers implementing double extended precision variables, compared with the double and single precision formats implemented in SSE2: the rounding of extended precision intermediate values to double precision variables was not fully defined and was dependent on implementation details such as when registers were spilled to memory. However, modern language standards such as C99 and Fortran 2003 have incorporated IEEE 754 floating point support and now exactly specify the semantics of double extended ("long double") precision expressions to avoid such reproducibility problems.

Read more about this topic:  SSE2

Famous quotes containing the word differences:

    Quintilian [educational writer in Rome about A.D. 100] hoped that teachers would be sensitive to individual differences of temperament and ability. . . . Beating, he thought, was usually unnecessary. A teacher who had made the effort to understand his pupil’s individual needs and character could probably dispense with it: “I will content myself with saying that children are helpless and easily victimized, and that therefore no one should be given unlimited power over them.”
    C. John Sommerville (20th century)