CURRENT ISSUE

Contests

bottom corner

Feature Article



Issue #210 January 2008

Special Feature: 20th Anniversary Retrospective
That Was Then, This Is Now

by Ed Nisley

Start | Microcontrollers | Analog | Wetware | Contact Release | Sources & PDF

MICROCONTROLLERS

In the mid-’80s, I was designing systems and writing code for Intel 8051-family microcontrollers. The date code stamped on the bottom of the huge quartz-windowed 8751 in Photo 1 shows a manufacturing date in mid-1985. It has 4 KB of EPROM program memory, 128 bytes of data memory, and runs at 1 MIPS with a 12-MHz crystal. Perhaps surprisingly, it still works!

Fast-forward two decades to find single-chip 8051-family microcontrollers with far more on-chip peripherals, and considerably more memory. The fastest now run at 100 MIPS, 100 times the speed of that original chip, mostly because they can execute one instruction per clock cycle. A program written for the first 8051 will run on the newer chips and, apart from timing issues, will accomplish the same task. It certainly won’t fit into that old 40-DIP socket, though.

The SOIC chip astride the 8751 is a Microchip Technology PIC12F683 microcontroller. Despite some new features, it sports an architecture and instruction set from the early 1970s, a decade before the 8051. It runs from an internal 8-MHz oscillator at about 2 MIPs and can hit 5 MIPS with a 20-MHz external crystal.

p1
Photo 1 — The hulking 8751 and the PICmicro 12F683 on its back both have their roots in the 1980s. Back then, green LEDs were rare and precious, resistors were huge, and op-amps suffered from popcorn noise. Life is good!

In contrast, a really good 1987-era Personal Computer (IBM used caps for their PCs!) clocked an Intel 80386 CPU at 16 MHz for 5 MIPS of computing power; I recall gingerly plugging in a $500 80387 coprocessor chip for better floating-point performance. Two decades later, my desktop PC ticks along at 3 GHz, processes several instructions per cycle, and the whole box set me back about as much as that 80387.

While I can’t directly compare those two systems, the Great Internet Mersenne Prime Search provides some useful benchmarks. The oldest CPU on their list, a 60-MHz Pentium from 1993, processes a 3072-K FFT in 19 seconds. A more-or-less current Core 2 Duo E6850 completes the same task in 61.8 ms: 1/300 of the previous elapsed time. The clock speed accounts for a factor of 50, with the remaining factor of six due to architectural improvements.

That first Pentium had a 100-MIPS rating, about 20 times better than my 80386, so CPU performance has increased by a factor of 6,000 in two decades. That works out to 12.6 doublings in 20 years:

eq

Assuming steady exponential growth, desktop CPU performance has increased by a factor of two every 19 months. That’s spookily close to the most popular misinterpretation of Moore’s Law, which originally dealt with the number of transistors on an integrated circuit.

Microcontroller performance lags far behind desktop CPUs for one simple reason: a chip that debounces switches, blinks LEDs, and controls simple mechanical systems doesn’t require gigahertz clocking. That’s what most microcontrollers do and, because the per-unit cost of a microcontroller must be near zero, a more-expensive unit that waits faster won’t earn any design wins.

More complex embedded applications that flush huge datasets through intricate algorithms have long since migrated to systems that closely resemble desktop computers. Indeed, many large embedded products use desktop hardware in ruggedized cases, taking advantage of the economies of mass production to reduce hardware cost.

On the small end, Moore’s Law and fully depreciated semiconductor fab lines can produce truly odd products. If you prefer to debounce switches and blink LEDs using Linux on a 32-bit single-chip microcontroller at 210 MIPS, it’s now possible: check out the Atmel ARM9 series.

A multitasking, multiuser operating system on a microcontroller? Egad!

 

Previous | Next

 


bottom corner