Structured Computer Organization, by Tanenbaum
Highlights of Chapter 1
p. 2-4 Virtual machine - a hypothetical computer working at a particular
level
A machine level defines a language for that level.
Also, a language defines a machine, one that can execute all the
programs written in that language.
(We work in our "C++ machine/computer")
N levels computer - N different virtual machines
Working at level n, a programmer tends not to be interested in
the lower levels.
p. 4-7 A 6 level computer
L0 Digital logic level
Gates - digital devices built from analog components
Examples:
AND, OR
1 bit memories that store 0's and 1's
1 bit memories used in groups of 16, 32, 64
to form registers
Registers can hold a binary number up to some maximum
L1 Microarchitecture level (microprogramming)
8 to 32 registers that form a local memory
ALU circuit for simple arithmetic operations
Registers are connected to the ALU to form a "data path"
The operation of the data path is to select one or two
registers, the ALU operates on them and stores the
result back in a register.
Microprogram (software) - operates the data path
Microarchitecture - hardware/software operating the
data path
L2 Instruction Set Archictecture level - ISA
L3 Operating System
-------------------
L4 Assembly language level
Assembly language - symbolic form for one of the underlying
languages. This provides a method for people to write
programs for levels 1, 2, and 3 in a form that is not as
unpleasant as the virtual machine languages themselves.
Assembly language is translated by an assembler
L5 Languages used by applications programmers with problems
to solve. These are called high level languages.
Translated/interpreted by compilers/interpreters to
levels 3 or 4
p. 7-8 Architecture - the set of data types, operations, and features
at each level
Hardware and software are logically equivalent
p. 9-13 Microprogramming
1st digital computers - 1940's
Two levels - ISA and digital logic level used to execute the
programs
1951 - Wilkes designs a 3 level computer
Digital logic level, microprogram, and ISA
1960 - operating system
1970's - redesign - eliminate the microprogram/reduce the
instruction set
History of computer evolution
p. 13-16 Zeroth Generation - Mechanical computers, 1642-1945
Pascal (1623-1662) - calculating machine, + and -
Leibniz (1646-1716) * and /
Babbage (1792-1871) - difference engine, + and -
Analytical engine: 4 components
Store - memory, 1000 words of 50 decimal digits
Holds the variable and results
Mill - computation
Input - punched card reader
Output - punched and printed output
Programmable - Ada Lovelace hired to produce the
software
1930's Attanasoff, Iowa State, binary arithmetic for his
calculator
p. 16-19 First Generation - Vacuum tubes 1945 - 1955
ENIAC 18000 vacuum tubes and 1500 relays
Programs - 6000 multiposition switches and a forest of
jumper cables
Von Neumann - machine used in EDSAC, 1949
Memory, Control Unit, ALU and accumulator, Input/Output
Memory - 4096 words, 40 bits each
20 bit instructions - 8 bits for the type of instruction,
12 bits for specifying one the 4096 words
40 bit register called the accumulator
p. 19-21 Second Generation - Transitors, 1955 - 1965
1948 - transistor invented at Bell Labs (1956 Nobel Prize)
Bardeen, Brattain, and Schockley
1961 - PDP1 4K of 18 bit words
Cycle time of 5 microseconds
Units: milli = 10^-3
micro = 10^-6
nano = 10^-9
kilo = 10^3
mega = 10^6
giga = 10^9
1K = 2^10 = 1024
1KB = 1024 bytes
1M = 2^20
1MB = 1,048,576 bytes
p. 21-23 Third Generation - Integrated Circuits 1965-1980
p. 23-24 Fourth Generation - VLSI 1980
8080 chip CP/M - Gary Kildall - a true floppy disk
operating system, with a file system and user commands
typed in from the keyboard
Apple, DOS, IBM PC
p. 24-26 The Computer Zoo - Moore's Law
Number of transistors doubles every 18 months
New generation every 3 years, each generation had 4 times
the memory of its predecessor.
Observation - The number of transistors increases at
a constant rate.
p. 29-37 Example Computer Families
Introduction to the Pentium
1978 - 8086
8088 - 8 bit bus (cheaper than 8086)
used for the IBM PC
Early 1980's - 80286 ("286") IBM PC/AT, 16 MB memory
1985 - 80386 ("386"), 32 bit CPU on a chip
Intel's downward compatability
1989 - 80486 ("486"), floating point unit, 8K cache memory
on the chip. Cache memory is used to hold the
most commonly used memory words inside or close
to the CPU inorder to avoid slow accesses to
main memory. Also - multiprocessor support.
Intel - cannot trademard numbers (like 80586)
1993 - Pentium, two pipelines, makes it twice as fast.
MMX
1995 - Pentium Pro, two levels of cache built in.
8 KB cache on the processor for commonly used
instructions, and 8KB of memory to hold commonly
used data. Second cache memory of 256 KB not
on the chip itself.
Could execute up to five instructions at a time.
1997 - Pentium II, MMX multimedia extensions
1998 - Celeron, low price Pentium II
Sun - SPARC
Java - JVM, the Java Virtual Machine,
Portable byte code
Java-to-machine-language compiler
Just In Time compilers JIT