SIMD in the 90s: Programming Intel's Pentium MMX

ibobev1 pts0 comments

-->

Pikuma: SIMD in the 90s: Programming Intel's Pentium MMX

SIMD in the 90s: Programming Intel's Pentium MMX

If you programmed PCs in the late 90s, you probably remember the 'Intel Inside Pentium with MMX' stickers. MMX was, of course, a big marketing buzzword, but it was also Intel's major attempt at bringing SIMD (Single Instruction, Multiple Data) instructions to mainstream desktop CPUs.

Gustavo Pezzi

12 August 2026 · 20 min read

It's a rite of passage of every student that completes our software rendering module to start asking questions and exploring the topic of SIMD (Single Instruction, Multiple Data).

Today we have AVX-512, NEON, SVE, and GPUs with thousands of cores. These modern CPUs & extensions are the result of years of exploration, learning, market pressure, and they all bring with them a lot of history/retro-compatibility noise. As always, I like to look back and discuss different technologies by analyzing what was happening when they were just starting out. Back in the late 90s, many programmers were learning how to squeeze a few extra frames per second out of a Pentium MMX using hand-writing assembly for the first time.

Intel Pentium with MMX tech

Let's travel back to 1997 and see what programming MMX looked like!

What was MMX?

MMX (MultiMedia eXtensions) was introduced with the Pentium MMX processor in 1997 for improved multimedia experience.

It was a set of 57 additional instructions built into the Pentium chip for enhanced performance. The CPU had to be switched into MMX mode, which turned the first 64 bits of the x86 eight 80-bit floating point registers into MMX registers.

Eight MMX registers (64 bits long)

The idea motivating the creation and the use of MMX was simple: instead of processing one integer at a time, the CPU processes several integers packed inside a single 64-bit register simultaneously.

For multimedia software (image processing, audio mixing, video playback, and even games) this could provide significant speedups.

For example, instead of adding eight bytes individually:

10 + 20<br>30 + 40<br>50 + 60<br>70 + 80<br>...

MMX lets us perform all eight additions with a single instruction.

That's parallelism! And that's the main idea behind SIMD.

What is SIMD?

"Single Instruction, Multiple Data" is a type of parallel processing technique. It describes computers with multiple processing elements that perform the same operation on multiple data points simultaneously .

SIMD can be internal (part of the hardware design) and it can be directly accessible through an instruction set architecture (ISA). In the case of the MMX, Intel extended their x86 instruction set to include the new SIMD instructions.

Was MMX the First SIMD?

No, MMX was definitely not the first SIMD, although it was hugely important in making SIMD mainstream on x86 PCs.

We must remember that many advances and innovations in computer technology predates the personal computer era. SIMD is no different, and it predates Intel's MMX by decades. The general idea of using one instruction operating on multiple data elements goes back much further than the Pentium.

One famous early example is the ILLIAC IV supercomputer project from the 60s. The ILLIAC IV was the first massively parallel computer. The system was originally designed to have 256 64-bit floating-point units (FPUs) and four central processing units (CPUs) able to process 1 billion operations per second.

ILLIAC IV photo by Sascha Pohlflepp CC-BY-2.0

In summary, the ILLIAC IV used a large number of processing elements operating under a single instruction stream, making it an important ancestor of modern SIMD/vector architectures.

ILLIAC IV array overview

There were also array-processing machines from companies such as CDC, Cray, and others throughout the 60s and 80s.

SIMD vs Array Processors

It's important to point out that Vector Processing and SIMD are not quite the same thing. The distinction is mostly about how the multiple data elements are presented to the processor and how the hardware executes them.

SIMD operations are fundamentally tied to the width of the registers.

The Cray-1 from 1976 was characterized by being a vector processor. It had eight 64-element vector registers, each holding 64-bit values.

Cray-1 supercomputer

Similar to what we saw with SIMD, the Cray-1 did not require 64 separate ADD instructions. So, given that this is obviously SIMD-like, why don't we simply call it SIMD? Because of an architectural distinction. SIMD operates on fixed-width registers, while the vector register in the Cray-1 was more like a container for a sequence.

Vector processors are usually characterized by the presence of a SET VECTOR SIZE instruction. This vector functional unit can process the elements over multiple cycles.

The Cray-1 had a VL (vector length) register and instructions that could set that length. The vector functional units then processed that many elements over multiple cycles. All the remaining extra elements of the...

simd vector pentium instruction multiple intel

Related Articles