instructions the MMX technology because no one would have cared if it simply announced: "Pentium -- Now with 57 new instructio
ns!"
Despite the hype, the MMX instructions do represent a significant upgrade to the x86 instruction set, the first since the introduction of the 386. Based on an analysis of the algorithms performed during graphics and image manipulation, video display, music synthesis, and speech processing, the MMX instructions represent Intel's best effort at encapsulating more work into fewer instructions.
Data Masquerade
To create room to work, an MMX CPU uses aliases for the chip's cluster of floating-point registers. Instead of viewing these registers as containing floating-point numbers, the MMX instructions might treat them as eight packed 8-bit integer values. When an MMX instruction executes, it takes all eight values from the MMX register, operates on them in parallel, and writes the result into another MMX register.
It might seem that the MMX instructions' use of the floating-point registers would cause incompatibility or a conflict with normal mathematical use. Fortu
nately, properly written software always assumes that someone else is using the floating-point hardware and preserves its state before switching from one task to another.
Hardware It's Not
Don't forget that MMX is still a software solution. An outboard coprocessor, such as a video accelerator or digital signal processor (DSP) chip on a sound card, can perform its functions independent of the PC's CPU, multiplying the power of the system as a whole. When the CPU is executing an MMX instruction, however, it cannot be doing something else at the same time.
Overall CPU use will increase as more MMX instructions are in use, until eventually system performance degrades. The only potential gain is when non-MMX CPU-based calculation can be streamlined by using MMX instructions.
Also remember that no current OSes recognize or exploit MMX-capable CPUs. An MMX-aware OS would switch device drivers or core code, for example, when it detected an MMX CPU. Instead, each application must be individ
ually MMX-enabled by its developer. Thus, the need to create two sets of software for each product and a lack of widespread availability of MMX tools are sure to make the transition to MMX a slow one.