|
|
Thousand Oaks |
Since the days of the first vacuum tube computer, designers have sought better, faster, and cheaper computer performance. Improvements in these areas directly mirror the evolution of device technology from vacuum tubes to transistors, integrated circuits, Large Scale Integration (LSI), and Very Large Scale Integration (VLSI). Important milestones along the way include the introduction of integrated circuits in 1964, and the introduction of the microprocessor -- often called the microprocessing unit or, more commonly, CPU (central processing unit) -- in 1971.
This is an overview of how both microprocessors and the computer industry have evolved. Whether you are a computer user, hobbyist, technician, or designer, this article will help you understand what microprocessors are, how they work, and how they developed. We also include a capsule history of microprocessor development.
The internal workings of today's microprocessors are certainly more sophisticated than those of such pioneers as the 6502 (MOS Technology), the MC6800 (Motorola) or the 8080 (Intel). Even so, today's complexity only builds on underlying architectures that have remained almost unchanged for 20 years.
At heart, the microprocessor is an "engine" that performs arithmetic and logic functions in a generalized way. Ordinary logic ICs are designed to produce specific outputs based on specific inputs and internal logic. By contrast, the microprocessor's outputs are determined by stored logic software that can vary.
You can show the architecture of an 8080A CPU with a block diagram consisting of three squares. Although it might appear imposing at first glance, each block falls into one of three categories: registers, instruction/control elements, and the arithmetic logic unit or ALU.
Registers are individual RAM locations that are contained within the microprocessor itself. Nearly every microprocessor has a register called the accumulator, which stores values and the results of arithmetic and logical operations.
Another important register shared by nearly all microprocessors is called the program counter, which tracks the address in the computer's main RAM memory, where the next program instruction will come from. While the microprocessor is executing a current instruction, it also updates the program counter to point to the address of the next instruction. The actual program instruction that is to be executed is passed to the instruction decoder via the instruction register.
The CPU can also jump to another location in RAM to execute an instruction in several ways. One is to Jump or Branch directly to that location and continue program executions there. Another is to execute a subroutine, usually via a Call, Jump to Subroutine, or Branch to Subroutine instruction. After the subroutine completes its duties, the CPU resumes program execution at the instruction that immediately follows the subroutine Call, Jump, or Branch instruction.
When the CPU performs a Call, it pushes the contents the program counter onto a special section of main memory called the stack. Conversely, when returning from a subroutine, the address is popped off the stack and loaded back into the program counter. Another CPU register called the stack pointer keeps track of the next free location on the stack. As the CPU calls subroutines (pushes) and returns from them (pops), the stack pointer slides up and down the stack. The stack can also store the contents of various CPU registers.
Other registers are used for temporary data storage and to index memory. For example, in the 8080, the H, L, D, E, B, C, W, Z, as well as the Accumulator are all 8-bit registers that serve as general-purpose (or scratch pad) registers. Newer microprocessors contain more and larger registers, but the concept is the same.
To execute a program instruction the CPU must usually perform a series of steps such as reading data from a memory or input/output (I/O) location, writing data to a memory or I/O location, manipulating the contents of one or more CPU registers, and handling the results of ALU operations. The actual series of steps depends on the particular instruction. Thus, each instruction must be translated by an instruction decoder from the single machine-language instruction into a series of simple functions that the CPU can execute.
Keeping all of the components of a CPU running smoothly requires precise timing and synchronization, which is usually managed by a crystal-based clock/oscillator. Early CPUs such as the 8080A required an external oscillator. Today's CPUs contain internal oscillators that require only an external crystal and perhaps a small capacitor or two.
Each clock pulse allows the CPU to perform one operation. However, one instruction can requires several operations. As a result. it may take 20 to 30 clock pulses for a CPU to perform a complete instruction, such as adding two numbers.
There are two basic ways to enhance CPU speed:
For example: suppose that 25 clock pulses are needed to perform a simple addition. If the CPU clock ran at 10 MHz. each clock pulse would take 0.1 microseconds, so the addition would be complicated in (25 x 0.1 µs) = 2.5 µs. If the CPU ran at 60 MHZ, each clock pulse would be only 16.7 nanoseconds (0.0167 µs), so the same addition would be completed in (25 x 0.0167 µs) = 0.4175 µs. That value represents a six times improvement in raw speed. The other way to improve performance is to reduce the number of operations required per instruction. Today, microprocessors use both techniques.
Several control signals influence a microprocessor's operation. One important function, for example, is reading and writing memory and I/O ports. How does the system distinguish between reads and writes? Some microprocessor families have a single read/write line: The Intel family has separate read and write lines. Whenever the CPU wants to write some data to memory or to an input/output (I/O) port, it asserts (brings low) its Write line. Likewise, when it wants to read data, it asserts its Read line.
Another important function involves interrupts. Whenever a situation requiring the CPU's attention occurs, the CPU's current task can be interrupted, and its focus shifted to the interrupting task. Devices such as keyboards, disk drives, and memory-refresh circuits demand the CPU's attention with interrupt requests (IRQs). Early CPUs such as the 6800, the 6502, and the 8080 had a single interrupt input. Many current devices offer as many as 16.
Another potential problem that a microprocessor must contend with is the varying speeds of devices in a computer system. The CPU is usually the fastest device in a system; memory and I/O ports are typically slower, and mechanical devices such as disk drives are slower yet. Because of these speed differences, an external device may not be ready when the CPU tries to read it. To ensure coordination, microprocessors have WAIT and READY signal lines, which allow the CPU to idle for a clock pulse. That idle period is called a wait state. Although wait states are still common in computer systems today, good system design minimizes their use.
The last control function to be discussed here is microprocessor reset. When asserted, the RESET line of a microprocessor sets all the registers to known states and begins program execution at a specific location in memory.
The real power in a CPU is not in its registers or control section, but in its Arithmetic / Logic Unit (ALU). The ALU is the "brain" within the CPU. It is what carries out most logical operations, comparisons, and arithmetic functions. Some CPUs delegate high-order math functions to a separate math coprocessor, but most ALUs add, subtract, increment, decrement, compare, and perform logical operations (AND, OR, NOT, XOR). After each ALU operation, a set of result flags indicates the status of the result (carry, borrow, or zero).
Intel CPUs have been at the forefront of desktop personal computing since IBM selected the 8088 for use in its first IBM PC. Since it was introduced, the so-called x86 architecture has undergone five major evolutionary stages. The first generation includes the 8088, the 8086. and the 80186. The next three generations include the 80286, the 80386, and the 80486. The fifth and most recent includes the Pentium. Intel is already working on both the sixth and seventh generations, as yet unnamed.
The head of the family is the 8086. In the era ruled by 8-bit microprocessors, the 8086 quickly became the first widely-used 16-bit microprocessor. (When speaking of the number of bits a microprocessor has, data bus width is usually the value referred to.) In addition to doubling the data bus width from 8 to 16, the 8086 also increased the number of address lines from 16 to 20, thereby providing what seemed at the time an abundant one megabyte of addressable memory.
The 8088 is essentially the same chip as the 8086, except that its 16-bit data bus is multiplexed down to 8 bits. That trades off system costs at the expense of performance. Note in Table 1 how data bus band-width decreases by more than a factor of two from the 8086 to the 8088. Multiplexing the data bus down to half its internal width is a "trick" Intel played over and over in the evolution of the 8086 line.
The 80186 is an 8086 with several common support functions built right in: clock generator, system controller, interrupt controller, DMA (Direct Memory Access) controller, and timer/counter. No Intel CPU before or since has offered as much integration in a single package. The 80186 was also the first to abandon 5-MHz clock speeds in favor of 8-, 10-, and 12.5-MHz rates. The 186 was not used as a mainstream CPU for desktop computers; rather, it was limited to "embedded" applications.
The 80286 offered the first real architectural advance over the 8086. The 286 pushed memory to 24 address lines, resulting in a 16-megabyte address space. In order to access all that memory, the 286 also introduced a new mode of operation called protected mode.
The 80286 booted in an 8088/86-compatible mode called real mode, but through a special instruction, it could switch into the more advanced protected mode to gain access to the additional memory, as well as to advanced programming features. However the only way to get back into real mode from protected mode is to force a complete reset of the microprocessor -- a time-consuming process that eliminated the 80286 as a viable engine for running multitasking operating systems such as Windows and OS/2.
The next major advance came in 1985: the 80386. It was Intel's first 32-bit microprocessor, and provided 32 bits on both the data and address buses. Like the 286, the 386 boots in real mode. It also offers a protected mode, multiple simultaneous "virtual" real-mode sessions, and efficient mode switching. The 386 was the first Intel CPU to enhance processing speed through the use of instruction pipelining (also known as scalar architecture), which allows the CPU to start working on a new instruction before completing the current one.
In 1988, Intel took a step "backward" with the 80386SX. It was built around the core 32-bit CPU of the 386, but provided only a 16-bit external data bus, and a 24-bit address bus. Although the performance of the 386SX was significantly lower than the 386, so was it's price, so system costs could be reduced. Another version of the 386 came in 1990: the 80386SL. With its 24 address lines and 16-bit external data bus, the 386SL closely resembled the 386SX. But it also incorporated system functions for running a standard PC, and power-management circuitry that optimized the device for use in portable computers.
All members of the 386 family can operate with stand-alone math coprocessors (80387DX, 80387SX, and 80387SL).
Like the 80386, the 80486 incorporates pipelining to improve instruction execution performance. The 486 also adds a new wrinkle: on-chip cache memory. Cache reduces memory access time by storing copies of recently used instructions and data in fast static RAM, rather than relatively slow DRAM. Another improvement was the inclusion of a floating-point unit in the CPU itself.
Of course, Intel found ways to "SX" the 486 line to provide a less expensive option for system designers. Unlike previous SXs, the data bus width was not halved on the 486SX. However, the 486SX does not include the on-chip floating-point unit or math coprocessor. One important innovation in the 486 line was the introduction of 3-volt devices for laptop computers and other low-power applications.
Another interesting feature of the 486 is its upgradeability. Computer systems based on prior generations were pretty much locked in to the performance level attainable by whatever the built-in CPU offered. But the 486 was designed from the beginning for upgrade-ability via what Intel calls "OverDrive" technology. OverDrive technology generally replaces your current CPU with one that runs twice as fast--internally. But you don't get twice the overall performance. Nonetheless. an OverDrive CPU is cheaper than buying a whole new PC. It is vital to note that not all 486 systems are upgradeable via OverDrive technology. Check with your computer's manufacturer to be sure.
The 486 has spawned numerous variations, including a full 50-MHz model (the 80486DX/50), and the aforementioned 486SX, which is upgradeable if the computer's motherboard was designed to accept an OverDrive CPU.
The first wave of OverDrive CPUs arrived in 1992 with the introduction of the 80486DX2/50 and the 80486DX2/66. The DX2/50 runs on a 25-MHz bus. but at 50-MHz internally. The DX2/66 runs at 66 MHz on a 33-MHz bus. The slower bus speeds allowed the OverDrive CPUs to work directly with existing PC motherboard designs. Both OverDrive CPUs offer internal math coprocessors, and are themselves upgradeable to even faster OverDrive versions. The DX2/50 is available in 3- and 5-volt versions, while the DX2/66 is available only in the 5-volt version.
In 1992. Intel produced a highly-integrated, low-power version of the 80486 called the 80486SL. Its 32-bit data bus. 32-bit address bus, 8 kilobytes of on-board cache, and integrated math coprocessor make it similar to other 486 CPUs. However. the SL includes power-management circuitry that optimizes the device for use in mobile computers. The 486SL is available in 25- and 33-MHz versions, and in both 3- and 5-volt designs.
In 1993 Intel rounded out the 486 family by introducing the 486DX2/40, the 80486SX/SL, and the 80486DX/SL. The DX2/40 is another OverDrive CPU, this one intended to run in 20-MHz PCs. The SX/SL and DX/SL devices are similar to the original versions, but with SL-type power-management capabilities. These devices in essence made the special 486SL mentioned previously obsolete, angering several manufacturers in the process.
The latest addition to the 486 line is the DX4 series, which are clock-tripled devices that run on 25- and 33-MHz buses. With the X4 nomenclature Intel appears to imply that the DX4's larger cache (16 kilobytes vs. 8 kilobytes in prior models) achieves greater than a three times performance improvement. All versions of the 486 run the same software, and are backward compatible with all x86 CPUs going all the way back to the 8086/8088.
By 1992. the 486 had become well entrenched in everyday desktop computing, but Intel was already laying the ground work for the next generation. Nearly everyone expected Intel to continue its traditional numbering scheme and dub the next CPU the 80586. However, Intel wanted more control over who used similar names for competing processors, so it changed a name that is more easily trade marked: Pentium. It was introduced in 1993.
The Pentium retains the 32 bit address bus of the 486, but doubles the data bus to 64 bit. All versions of the Pentium include an on-board math-coprocessor, and are intended to be compatible with future OverDrive designs.
The Pentium has two 8-kilobyte caches -- one for instructions and another for data. A dual-pipeline technique (known as superscalar architecture) allows the Pentium to process more than one instruction per clock cycle. Other substantial improvements include on-board power management (similar to the 486SL line). Currently the fastest released model runs at 100 MHZ, and Intel has publicly demonstrated 150-MHZ versions.
Intel CPUs (and the computers built on them) capture the majority of customers and market share in the PC industry. Nonetheless, Motorola has also enjoyed an excellent reputation in the microprocessor arena. Motorola CPUs have long been -- and continue to be -- the microprocessor of choice for Apple's line of personal computers. Many embedded and high-performance computer designs have also carried Motorola CPUs.
Motorola's initial microprocessor introduction was the 6800 in 1975. It was strictly an 8-bit processor capable of addressing 64 kilobytes of memory. Probably the most striking difference between the Motorola and Intel architectures is that early members of the 6800 family tended to minimize register usage in favor of general purpose RAM.
Motorola introduced numerous variations of the 6800. The 6802 incorporated 128 bytes of RAM on the CPU itself. The 6803/6808 ran faster (3.58 MHz), incorporated 128 bytes of RAM, and included both a UART (universal asynchronous receiver/transmitter) for serial communications, and a counter/timer. The last variation of the 8-bit Motorola family was the 6809. It was similar to the 6802, but offered an enhanced instruction set, including what was probably the first multiply instruction on an 8-bit CPU.
Some of the earliest personal-computer kits were based on the 6800 family, and Tandy built a version of the Color Computer that was rather advanced (for its day) around a 6809. However, by 1978, the age of the 16-bit CPU had begun, and the second generation of personal computers that included the Apple Macintosh and the IBM PC would be 16-bit machines.
In 1978 Motorola introduced its first 16-bit CPU: the 68000. Unlike Intel's 8086/8088, which could address only one megabyte of physical RAM, the 68000 had 24 address lines that could access 16 megabytes of RAM directly -- it was an almost inconceivable amount of memory at the time. In addition, the 68000 ran faster than mainstream Intel processors of the day: 16 MHZ. Also, Motorola abandoned the idea of RAM-based registers and incorporated 16 general-purpose registers in the 68000. It would be four years until Intel could approach the technology of the 68000.
Motorola entered the 32-bit CPU arena with the 68020. Like the 68000, the 68020 has 16 general-purpose registers, and can address four gigabytes of RAM directly. A first for the 68020 was the inclusion of an internal 256-byte instruction cache -- negligible by today's standards, but a true architectural advance at the time.
The 68030 is Motorola's second generation 32-bit CPU. It is very similar to the '020, but is available in faster speeds, and with one 256-byte cache each for data and instructions.
The 68040 is the third generation. It increases the data and instruction caches to 4 kilobytes each, and, for the first time, includes an on-board math coprocessor and memory-management unit.
One of the latest members of the 680x0 family is the 68060. The 68060 is a superscalar design that has multiple instruction pipelines, and on-board memory and power management.
After more than a decade of development, the 680x0 architecture simply ran out of steam, so Motorola teamed up with IBM and Apple to produce a new microprocessor with improved performance. The MPC601, or PowerPC, is a 64-bit super-scalar CPU that can effectively execute up to three instructions per clock cycle. The PowerPC is the first implementation of reduced instruction act computing (RISC) for personal computers. (The 680x0 and 80x86 families use complex instruction set computing (CISC) technology.) With RISC, most instructions execute in only one clock cycle. Instructions can even be completed out of order, but the CPU will make them appear sequential. The MPC601 has a 32-bit address bus, 32 kilobytes of cache memory, and an internal math coprocessor.
Apple appears to have bet its future hardware designs on the PowerPC architecture.
The huge microprocessor market has attracted other manufacturers who want to cash in. In the mid-1980's, NEC "cloned" the 8088 and 8086. More recently, American Micro Devices cloned Intel's 386 and 486 CPUs. AMD strategy was not to cut prices, but to improve performance. For example, when 33-MHZ 386's dominated the market, AMD introduced its model running at 40 MHZ. The company has continued that strategy.
More recently, several manufacturers, including AMD, Cyrix, and NexGen have jumped in to the fray, attempting to produce Pentium-class CPUs. None of these has been released yet, but several introductions are planned for this year. IBM has signed deals to manufacture CPUs for both Cyrix and NexGen, so it looks like choices are going to multiply rapidly.
The CPU powering the PC on your desk probably contains more than a million transistors. However, its lineage traces all the back to Intel's 4004, which was developed in 1971. The 4004 was a four-bit processor. It contained 2,300 transistors, and ran at 108 kHz. The 4004 sold well and found service in early desktop calculators.
Following the 4004, Intel developed the 8008 (in 1972) and the 8080 (in 1974). It was the 8080 that really helped launch the personal-computer revolution, The 8080 could address only 64 kilobytes of memory, but it was the first well-accepted 8-bit microprocessor. Later (in 1976) Intel introduced the 8085, which was basically an 8080 with some built-in system logic. Then a company called Zilog produced what was probably the first clone microprocessor, the Z80. The Z80 was 8080 compatible, but included enhancements such as faster clock rates and a richer instruction set. Motorola entered the CPU market in 1975 with its 8-bit 6800, and the 6502 was developed around the same time by MOS Technology.
By the late 1970's, the first wave of personal computers had hit the market. Tandy introduced the 8080-based TRS-80 Model l in 1977. The 6502-based Apple II also appeared in 1977. In 1979 came the 6502-based Commodore PET. Dozens of companies produced 8080- and Z80-based machines that ran the first "business" operating system. CP/M. CP/M originally stood for Control Program/Monitor, but eventually took on the meaning Control Program for Microcomputers.
But even as the 8-bit market was developing, the era of the 16-bit computing loomed ahead. By 1978, Intel developed its first 16-bit CPU: the 8086. Then, in 1979, Intel found a way to multiplex the 16-bit data bus down to 8 bits, thereby allowing systems to be built less expensively. The 8088 contained 29,000 transistors, and was available in 5- and 8-MHz versions. Both the 8088 and the 8086 offered 20 address lines, which gave them a memory capacity of 1 megabyte -- 16 times more than the 64 kilobytes offered by the 8080, 6800, and 6502.
Motorola parried Intel by introducing the 68000, a true 16-bit CPU. Apple shortly abandoned the aging 6502 and used the 68000 in the Macintosh. Zilog attempted to stay in the 16-bit competition with the Z8000, but was unable attract interest from major computer manufacturers.
What helped Intel gain the prominence that it has today was IBM's selection of the 8088 for the original IBM PC, introduced in 1981. The PC made many compromises in the name of cost effectiveness. Major functions including video and disk storage were stepped out and incorporated on separate plug-in boards. That in turn helped to create a huge market for peripherals. No one, including IBM, accurately forecast the impact the PC would have.