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