Architecture versus Implementation

Where architecture tells what happens, implementation tells how it is made to happen.

G A Blaauw

Consider, for example, Intel's IA32 instruction set (also known as the x86-32 instruction set). That external specification was first implemented in 1986. Three decades later, it was still the core instruction set for most 32-bit microprocessors from Intel and AMD, and it was the starting point for AMD's x86-64 extension, which is the core instruction set for most of the 64-bit microprocessors used in laptops and personal computers.

There have been many different implementations of the IA32 architecture. Intel alone has manufactured the 80386DX, 80386SX, 80876, 80386SL, 80386EX, 80486DX, 80486XS, 80486DX2, 80486SL, 80486DX4, Pentium P5, P54, P54CS, P55C, Pentium Pro, Pentium II Klamath, Deschutes, Xeon, Celeron Covington, Mendocino, Coppermine, Tualatin, Pentium III Katmai, Coppermine, Tualatin, Pentium III Xeon, Pentium 4, Pentium M Banias, Dothan, Celeron M Banias, Dothan, Yonah, Intel Core Duo, Intel Core Solo, Dual-Core Xeon LV, Pentium, Xeon, Mobile Pentium 4-M, Pentium 4 EE, Pentium 4E, Pentium 4F, and so on. These microprocessors span almost 20 years of design, and are very different inside, but they all implement the IA32 external specification.

As far as most programmers are concerned, those microprocessors are interchangeable parts.

That degree of compatibility over time would not have been possible without a stable external specification of the IA32 architecture.

On the other hand, the IA32 architecture is not the world's best example of conceptual integrity, simplicity, straightforwardness, or consistency.

For debugging: Click here to validate.