Computer Architecture

© Tim Margush 2006

Introduction

Machine/Language Levels

There is a natural correspondence between a computer language and a machine (that carries out the instructions of the language). At the lowest level we find digital logic components that control electronic circuits in response to simple machine instructions. Each higher level is built on the preceeding one and provides more abstract instructions that are translated to the lower level to be executed. Each higher level is a virtual machine, related to the language describing its capabilities.

The common levels found in current machines are:

  1. Digital Logic
  2. Microarchitecture
  3. Instruction Set
  4. Operating System
  5. Assembly Language
  6. Problem-Oriented

There is a technical level below the digital logic level where the logical properties are implemented by a collection of interconnected devices. This level requires electrical knowledge.

The digital logic level is implemented by simple logical devices called gates. These implement the basic logic functions using lower-level electrical components. Gates are used to construct storage locations for bits and are used to implement logical and arithmetic functions.

The miroarchitecture level captures the essence of the registers and arithmetic-logical unit. At this level, the machine can combine registers via the ALU according to some logical function and store the result back in a register. The data travels along data paths. The selection of registers, ALU function, and data path usage is controlled by additional hardware belonging to the control unit. On some machines, this is implemented using a microprogramed control unit; in others it is all done through hardware.

The instruction set architecture (ISA) level is defined by the processor's machine language reference manual. This is commonly used to design assemblers and compilers that will target this particular processor.

The operating system machine level is found before the assembly language level because assemblers need to run under the control of the operating system. The operating system should be thought of as an interpreter - interpreting the commands of its clients - executing programs. It also exposes some of the underlying capabilities directly to the next level. Think of this level as being able to execute an ISA instruction, or execute a series of ISA instructions to carry out a more complex request. This level may allow concurrent program execution, manage additional devices such as IO devices, and provide a high-level view of memory.

System programmers work in the next level to provide new virtual machines for higher level users who provide applications for end-users. At these levels, the artifacts are generally translated to one of the lower levels for execution. The assembly language level provides a text-based virtual machine by which programmers can create executable programs for the lower levels.

The highest level consists of various compilers and perhaps aditional layers of virtual machines (Java for example) that provide additional abstraction for various needs. A word processor could be considered to live at this level; it interprets commands to produce printed documents.

Multilevel Architecture: data types, operations, and features

The earliest computers were single level machines. The hardware was constructed to carry out a single program. There was no separation between hardware and software since everything was implemented in hardware. Examples include the Colossus and Eniac computers.

Two level machines added a programmers view (ISA) and allowed the creation of software in machine language. Instructions could be supplied to control the sequence of operations carried out by the underlying hardware. As the need for more complex instructions created the need for more complex hardware, an inovation called microprogramming was introduced. This allowed a simplified, underlying hardware to execute more complicated tasks by interpreting the tasks as a series of simpler instructions available at the digital level. The EDSAC 2 was one of the first computers to utilize this concept.

The operating system concept emerged in the early 1960's to facilitate multiuser access to computers. Once the operating system was loaded into a computer, it could process a sequence of jobs from many users without the need to stop, reprogram, and restart the computer. As the operating systems evolved, additional instructions were automated and made avaialble to users through operating system macros, or system calls. In addition to the batch oriented operating systems, timesharing systems also provided multiuser access to computer resources. These systems made small slices of time available to many users, effectively exposing the complete resources of the computer to many simultaneous users.

As operating systems evolved, the capabilities of microprogramming were also exploited using the ability to add new instructions by expanding the microcode. Even though the underlying digital level did not support multiplication or division, or floating point representations, these capabilities could be added at the instruction level by interpreting them in microcode. This approach also allowed improvements in processing speed by adding specialized instructions to support arrays, a variety of addressing modes, virtual memory, and multiprogramming support. As advances in technology made more complex hardware available, many of these microcode concepts were directly incorporated in hardware, obscuring the division between hardware and software. There was also a trend to reduce the number of instructions available at the operating system level to allow for highly efficient and speedy execution in hardware. This cycle is now repeating at higher levels as hardware speed makes interpreted languages more viable.

The evolution of computers

Generation 0 (1642-1945) Mechanical

Blaise Pascal - Pascaline - Addition and subtraction (1642)
Simulation of the Pascaline: http://perso.wanadoo.fr/ therese.eveilleau/pages/ truc_mat/textes/ pascaline.htm#haut

Gottfried Leibniz - The Leibniz Calculator - Multiplication and Division (1673-1694)
Charles Babbage - Difference Engine - Evaluated polynomials to print tables of logarithms and other functions through a Newton's method of differences (1822)
Charles Babbage - Analytical Engine - Calculate general formulas under the control of a looping program stored on punch cards (1834)
Konrad Zuse - Z1 - Mechanical computer using 22-bit binary representation and a mechanical storage based on small pins and thin sheets of moving metal and pins. The program was on paper tape and there were separate input and output units. A hand crank provided a variable speed clock signal. (1936)
John Atanasoff - ABC Computer - Solved systems of linear equations. Utilized binary representation and regenerative capicator memory (DRAM). - Iowa State College (1939)
Goerge Stibbitz - Model K and Complex Number Calculator - Utilized electromechanical relays and the latter could be operated remotely over telephone lines. Bell Labs (1937, 1941)
Howard Aiken - Havard Mark I (IBM Automatic Sequence Controlled Calculator)- Used to calculate mathematical tables, this electromechanical (relays) computer sported a storage of 72 23-digit decimal numbers. This machine provides the namesake of the Harvard Architecture in which instructions and data are considered separate. The Mark I's program was read from paper tape. Input was from punched cards, paper tape, or switches and output was to typewriter or punched cards. Its design was based on Babbages Analytical Engine. (1944)

Generation 1 (1945-1955) Vacuum Tube

COLOSSUS - Top-secret vacuum tube computer designed to break the Lorenz SZ40 (a relative of the Enigma) intercepted cyphers. This was a single purpose computer programmed cables and plugboards. Bletchley Park, Britain (1943)
ENIAC - Electronic Numerical Integrator and Calculator - John Mauchley and J Presper Eckert - Programmed via switches and jumper cables and utilized 20 10-digit decimal registers - University of Pennsylvania (1946)
EDSAC - Electronic Delay Storage Automatic Calculator - Maurice Wilkes - The first general purpose stored program computer - An example of the von Neuman Architecture in which data and instructions share a common data path. - University of Cambridge (1949)
EDVAC - Electronic Discrete Variable Automatic Computer - Eckert/Mauchley - similar in capability and intent to the EDSAC - University of Pennsylvania (1951)
IAS Princeton Institute for Advanced Studies (1952) - This system is the inspiration and technology base for the epedemic of similar computers mentioned next. This system was designed by John von Neumann. It had a storage of 1000 40-bit words that held data or instructions. From the programmer's viewpoint, there was the store (memory), an accumulator (register), a program counter, input device and output device.
JOHNIAC (John Integrator and Automatic Computer, Rand Corp) ILLIAC (Univ of Illinois) SILLIAC (Sydney version of the Illinois Automatic Computer University of Sidney, Australia) MANIAC (Mathematical Analyzer, Numerical Integrator, and Computer - Los Alamos Lab) WEIZAC (Weizmann Automatic Computer, Weizmann Institute, Israel) - Other examples of similar machines developed simultaneously (1950's)
Whirlwind I - Realtime operation with innovative video display unit. This computer was also the first to use core memory - MIT Lincoln Lab (1951)

UNIVAC I (UNIVersal Automatic Computer I)- First commercial computer designed by Eckert and Mauchley. This computer predicted the outcome of the 1952 presidential election of Eisenhower over Stevenson with a sample of 1% of the voting population. - Remington-Rand Corporation (1951)
IBM 701 - IBM's first scientific computer (1953)

Generation 2 (1955-1965) Transistor

TX-0 - Transistorized Experimental computer zero or tixo - The world's first transistorized computer having 64K of 18-bit words core memory, basically a conversion of the earlier Whirlwind I - MIT Lincoln Lab (1956)
DEC PDP-1 - Programmed Data Processor-1 - 4K 18-bit words and ran at 0.2 MIPS. Ran the first video game, spacewar, and because it had a typewriter as an output device, it inspired the creation of text editing programs such as TECO (Text Editor and Corrector and Expensive Typewriter, the first word processing program. It was also used to play four-part music - (1960)
IBM 7090 - The transistorized version of the 709 scientific computer having 32K of 36-bit words of magnetic core storage. This computer was 2 times faster than the PDP-1, but cost 20 times as much. (1959)
IBM 1401 - A business-oriented computer using variable length words of 6-bit bytes holding an alphameric character; two additional bits added parity and wordmark bits. Numbers were represented in BCD format (1960). The upper 2 bits of the byte were called zone bits.
CDC 6600 - A very fast scientific computer utilizing parallel computational paths and separate processors for IO and job management. These ideas were revolutionary and formed the basis for many successful computer systems in the coming years. Seymour Cray was the designer of this system which was the start of the Cray supercomputer line.

Generation 3 (1965-1989) Integrated Circuits (Robert Noyce 1958)

IBM System/360 - Abandoning its earlier two-prong marketing strategy, IBM introduced the highly successful System/360 series using integrated circuits and targeting scientific and business applications. Avalaible in different models (sizes and speeds), software for one model could run on all of the others as they shared the same machine language. Some even featured microcode emulation of the earlier machines to allow use of legacy software. These machines also supported multiprogramming and utilized a byte-oriented memory (instead of word oriented), 16 32-bit registers using 2's complement integers, IBM specific floating point hardware, and the EBCDIC character set. Unfortunately the memory space was limited to 16 MB (24-bit addresses) which was more than anyone needed at the time, but later proved to be inadequate, forcing incompatibility with instruction sets in the mid-1980's. (1965)
DEC PDP-11 - A 16-bit successor to the PDP-8 also utilizing byte addressable memory. The PDP series was an extremely popular computer due to low cost and good performance. Its 16-bit address space caused it to decline in popularity as large memories became cheaply available with the introduction of VSLI technology. This picture is of Dennis Ritchie and Kenneth Thompson, creators of the UNIX operating system, at a PDP-11. (1970)

Generation 4 (1980-) VLSI and Personal Computers

Altair 8800 - One of the first kit-based personal computers based on the Intel 8080A chip was announced in Popular Electronics and sold thousands of kits in the first month. (1975)
Apple - The first commercially available personal computer designed and built by Steve Wozniak and Steve Jobs. It used the MOS Technology 6502 processor and had 4K of memory. (1976)
Commodore PET (personal eductional tutor) was popular in classrooms. It was based on MOS Technology 6502 processor and had 4-8K of RAM. When color and sound were added (VIC-20 and Commodore-64) it became a popular home computer (1977)
Coleco ADAM - A largely unsuccessful addition to the home computer line. This computer came with a builtin word processor (SmartWriter), a daisy-wheel (letter quality) printer, and dual high-speed tape drives for program and data storage. It was based on the Zilog Z80 and included 3 additional Motorola 6801 processors. Although this venture lasted only 2 years, there are still annual conventions of ADAM enthusiasts. (1983)
Atari 800 - Also based on the MOS 6502, this machine was a popular game computer. (1979)
TI-99/4A - Utilizing the Texas Instruments TMS9900 processor (a 16-bit processor) and 256 bytes of RAM (There was an additional 16K associated with the video display unit) this computer was sold in 1983 for $150 at a loss in order to compete with more popular systems. (1981)
Timex Sinclair ZX81 - Sold for under $100, used a television for display and a standard audio cassette tape recorder for data storage. It used the NEC Zilog Z80 processor. You can play with one online in this Java Applet. (1981)
TRS-80 by Tandy - Affectionately known as the trash-eighty was sold through Radio Shack outlets. The TRS-80 used a Zilog Z80 processor. This computer is available online. (1977)
IBM PC - Based on the Intel 8088 processor, the IBM PC revolutionized the personal computer market. IBM released plans for this system giving rise to many PC clones. The IBM PC shipped with the PC-DOS operating system while the clones utilized MS-DOS. (1981)
Apple Macintosh - Made the GUI operating environment the envy of all personal computer users. (1984)

Generation 5 (?) Invisible Ubiquitous Pervasive Computing

Palm 5000 - PDA's (1996)
Embedded computers

The Computer Spectrum

Moore's "Law" - In 1965, Gordon Moore, co-founder of Intel, noted that the number of transistors that can be placed in one square inch of integrated circuitry had doubled every year. The doubling rate has since been revised downward to every eighteen or twenty-two months, but the basic relationship has held since 1965 and is expected to hold for another 20 years.

As a result of these technological advances, computers can either grow more complex at a constant price, or stay simple at drastically reduced price. Current technology allows a wide range of computing power at the cost of increasing price.

Disposable computers - Cost is measured in pennies. Processor, memory, power supply and IO in one package. RFID (Radio Frequency Identification) chips are powered by an incoming radio wave allowing them to transmit their identification number. These can be used to track inventory, library items, money, pets, or people.

Microcontrollers (embedded computers) - Typically cost a few dollars and are now used in appliances, vehicles, cameras, weapons, ATMs, robots, and toys. These are complete computers in small packages.

Game computers - These computers are designed for efficient graphics and audio output, but utilize a limited range of software. These ar egenarally not expandable like a typical PC. Tyoical costs are under $100.

Personal Computers - A full-blown computer system organized around a microprocessor. Disk storage, high resolution display capabilities, and IO facilities, along with some degree of expandability. Costs range from hundreds to a few thousand dollars.

Servers - Similar to a PC, but typically having more memory, massive disk storage, and high-speed networking capabilities. These systems typically cost around $5,000.

COWs (Collections of Workstations) - These may be standard PC's, but operating under the control of a networked operating system with the purpose of providing network services to other systems. One popular application is a COW dedicated to providing WWW services - sometimes called a server farm. Cost depends on the number of systems in the cluster and may range from $50,000 to $500,000.

Mainframes - These systems typically require special facilities to house the hardware. The components may occupy an entire room. These systems are designed with extremely efficient I/O and massive storage systems. Most mainframes have been replaced by smaller, but equally powerful, servers. These systems were often leased, and cost in the millions of dollars.

Supercomputers - Number-crunching computers with fast access to enormous amounts of data. These systems were commonly used for scientific applications and might cost tens of millions of dollars. These are now largely being replaced by less expensive COWs, however supercomputers are still being designed and built for special purpose applications.

Examples of popular computer processors

  Personal Computer Server Embedded
Model Pentium 4 UltraSPARC III Intel 8051 (and other manufacturers)
Date Nov 2000 - Feb 2005 Sep 2003 1980
Speed 1.4 GHz - 3.8 GHz 1.2 GHz 12 MHz - 100 MHz
Wordsize 32-bit 64-bit 8-bit
Transistors 42 million 29 million 60 thousand
Memory 64 GB 16 GB 4K ROM 128 Bytes RAM

Pentium 4 - One of many descendents of the original Intel 8086/8088 processor (1978) used in the IBM PC. This 16-bit processor ran at 4.77 MHz and could address 1MB of RAM. This family went through a series of changes, the most notable occurred in 1985 with the introduction of the 80386: 32-bit wordsize, 4GB addressable memory, 33 Mhz clock speed. One fascinating aspect of this entire series of processors is backward compatibility. The Pentium 4 includes a floating point processor, pipelined instructions, two-level cache memory, multimedia extensions, streaming SIMD extensions, hyperthreading, and SSE instructions. The Pentium 4 is discontinued now because of overheating problems with faster clock speeds.

UltraSPARC III - A product of Sun Technologies, this processor is a descendant of the early SPARC (Scalable Processor Architecture) processor introduced in 1987. The original SPARC's were 32-bit 36 MHz processors. In 1995 the conversion to 64-bit processors was made. The UltraSPARC series added special instructions for video processing.

Intel 8051 - Originally designed by Intel, this remarkable microprocessor is now manufactured in various configurations by many semiconductor companies. Its orgins trace to 1976 when embedded systems were just beginning. Embedded systems need a processor, memory, and I/O; using separate chips for each function was costly. The 8748 was Intel's answer, integrating processor, memory and I/O in a single package. The 8051 was a successor to this original design released in 1980. There are about 8 billion of these processors sold yearly at a cost of about $0.15 per chip.