|This page uses content from the English Wikipedia. The original article was at MMX. The list of authors can be seen in the page history. As with All articles on the Computing Knowledgebase Wikia, the text of Wikipedia is available under the GNU Free Documentation License.|
MMX is a set of multimedia instructions developed by Intel Corporation that enabled enhanced performance for applications coded to support it. It has been implemented in all Intel processors since the Pentium MMX
MMX is an SIMD instruction set designed by Intel, introduced in their Pentium MMX microprocessors. It developed out of a similar unit first introduced on the Intel i860. It has been supported on most subsequent i386-compatible processors by Intel, and other vendors, such as AMD.
MMX was rumoured to stand for MultiMedia eXtensions or Multiple Math eXtension, but officially it is a meaningless initialism trademarked by Intel.
To simplify the design, and to avoid modifying the operating system to preserve additional state through context switches, MMX re-uses the existing eight IA-32 FPU registers. This made it difficult to work with floating point and SIMD data at the same time. To maximize performance, programmerss must use the processor exclusively in one mode or the other, deferring the relatively slow switch between them as long as possible.
Another problem for MMX is that it only provides integer operations. Each of the eight 64-bit MMX vector registers, aliased on the eight existing floating point registers, could represent two 32-bit integers, four 16-bit short integers, or eight 8-bit chars. When originally developed for the i860, the use of vectored-integer math operations made sense (both 2D and 3D setup required it), but as systems moved to using graphics cards that did this, MMX fell out of favour and vectored-floating point became much more important.
Intel later addressed these shortcomings with SSE, a greatly expanded set of SIMD instructions with 32-bit floating point support and an additional set of 128-bit vector registers that made it easier to perform SIMD and FPU operations at the same time. SSE was in turn expanded with SSE2 and then SSE3. Support for any of these later instruction sets implies automatic support for MMX.
Intel's main competitor, AMD, built upon Intel's MMX with the 3DNow! instruction sets. Cyrix also developed their own version of MMX, but instead of directly copying Intel's MMX (as AMD were allowed to do due to their cross-license patent agreement), they reverse engineered the MMX instructions, with the intention of extending it, much like AMD did. The end result was called Cyrix MMX.
With the advent of SSE2, MMX was effectively made redundant.