This document provides an introduction and history of computers. It discusses computer architecture and organization, the four main tasks of computers, and the basic hardware components. It then gives a brief history of the evolution of computers from mechanical and electromechanical machines in the early 1800s to modern electronic computers. It describes the development of vacuum tube, transistor-based, integrated circuit, and multicore processors. It also outlines the progression of Intel x86 processors from the 8080 to modern multi-core CPUs. The document notes that the course will cover some digital design and computer organization topics out of order to allow more time for assignments on important memory-related concepts.
1. Intro and History of Computers
I. Introduction
A. Organization and Architecture
1. Computer architecture = attributes of system visible to the programmer—those that impact the logical
execution of a program.
2. Computer organization = operations units and their interconnections that realize the architectural
specifications.
3. Families of computers have the same architectures, but different organizations, e.g. IBM System/370 since
1970.
4. Architecture and organization closely linked in microcomputers as enhanced hardware leads to enhanced
architectures, e.g. Intel MMX.
B. Four Tasks for computers.
1. Transfer data between external devices, e.g. keyboard to monitor, microphone to speaker, network to printer.
2. Storage device, e.g. network to memory.
3. Data processing, using either internal or external source, and either internal or external destination.
4. Control external devices.
C. Hardware parts of a computer system
1. I/O
2. Main memory: RAM and caches
3. System bus
4. CPU
a. Registers
b. ALU
c. Internal bus
d. Control Unit
i. Sequencing logic
ii. Control unit registers and decoders
iii. Control memory
D. Brief History of Computers
1. Mechanical: 1801 Joseph-Marie Jacquard’s loom, 1842 Charles Babbage
2. Electromechanical
a. 1936 Alan Turing “universal computing machine” that combines data and program on a single tape
3. First Generation Electronic: vacuum tubes
a. 1945 John Von Neuman works on the Manhattan Project and (with others) design architecture for an
electronic digital computer with subdivisions of a processing unit consisting of an arithmetic logic unit
and processor registers, a control unit containing an instruction register and program counter, a memory
to store both data and instructions, external mass storage, and input and output mechanisms.
b. 1946 Electronic ENIAC (Electronic Numerical Integrator Analyzer and Computer)computer to compute
trajectory tables for the US Army. Only 20% of all bombs came with 1000 feet of their targets. A
thousand times faster than electromechanical. Weighed 30 tons, 8.5’ H, 3’ W x 80’ long, and took 200
kilowatts of power. Could do 5000 additions or 500 multiplications per second. Used decimal and had
10 vacuum tubes for each digit. (18,000 tubes!) Controlled using patch boards.
4. Second Generation 1959 transistors
a. Memory made up of small ferro-magnetic donuts with wires running through them. {This is where the
term "core memory" comes from.) 1K of memory was about the size of a shoe-box.
5. Third generation 1964 was when we managed to get transistors onto pieces of silicon. Use PCB to introduce
standard chips vs specialized ones.
a. 1965 Gordon Moore, cofounder of Intel, said that number of transistors that could be on a single chip
would double every 18 months. Slowed to double every two years in 1970s.
6. Fourth generation 1971, very-large-scale integration (VLSI) to put a CPU on one chip.
E. Designing for Performance
1. Methods to increase speed of CPU
a. Increase CPU clock frequency by shrinking size of gates on chip, but this causes increases power density
and the resistance and capacitance of the wires on the chip increase.
2. i. Power problems - approaching some hard limits. Need at least a certain voltage to be able to
differentiate between 0 and 1, more voltage = more power = more heat. Big big problem. Power
also related to current, and laptop/pda market doesn't like high-current devices.
b. Increase size and speed of caches on CPU.
c. Use more internal parallelism by using pipelining, branch prediction, data flow analysis independent of
original program order, and speculative execution (calculate possible results).
2. Interface between CPU and RAM is crucial. Improve by 1) increase bus data path, 2) caching, and 3)
increasing frequency of bus.
a. Speed of light in a vacuum = 30,000,000,000 cms / sec but speed of electrons in copper is 160,000,000
cm / sec. Front side bus between CPU and north bridge run at 100MHz so 1.6 cm/cycle!
F. Multicore, MICS (many integrated core) with 50 cores/chip, and GPGPUs (general-purpose GPU)
G. Evolution of Intel x86
1. 8080 first general purpose microprocessor, 8-bit data, with 8-bit data path
2. 8086 16-bit, 1MB memory, first x86
3. 80286 16MB memory
4. 80386 32-bit, supports multitasking OS
5. 80486 cache and some with FPU on-chip.
6. Pentium superscalar. A superscalar processor executes more than one instruction during a clock cycle by
simultaneously dispatching multiple instructions to redundant functional units on the processor. Each
functional unit is not a separate CPU core but an execution resource within a single CPU such as an
arithmetic logic unit, a bit shifter, or a multiplier.
7. Pentium Pro uses branch prediction, data flow analysis, and speculative execution.
8. Pentium II MMX
9. Pentium III 3D graphics
10. Pentium 4 has more floating point units and graphics enhancements
11. Core dual core
12. Core 2 64 bit multicore.
II. Going to learn digital design stuff, design parts of a CPU and of a memory. We are also going to learn about busses
and about memory itself. However, we will learn the stuff in a different order than is in the book. This is because
the memory part is very important, and you need time to ask questions and do homeworks about the stuff in this area.
The bus stuff is important, but not very interesting and does not lend itself to good homeworks, etc. Thus, we will
cover the cache and virtual memory parts early enough that you can do homeworks on them. We will also do the
digital stuff slightly out of order.