2 Big Idea: Universal Computing Device All computers, given enough time and memory, are capable of computing exactly the same things. == PDA Workstation Supercomputer
Charles Babbage 1791 1871 English mathematician, philosopher, inventor and mechanical engineer Father of the Computer Invented first mechanical computer 3
Babbages Difference Engine 4
Ada Lovelace 1815 1852 English mathematician and writer First computer programmer, worked on Difference Engine Daughter of poet Lord Byron 5
Alan Turing 1912 1954 British mathematician, logician, cryptanalyst, and computer scientist Father of Computer Science and Artificial Intelligence Cracked the Enigma 6
Enigma machine Electro-mechanical rotor cipher machine Encrypt & decrypt secret messages Select a combination of letters as a code Type each letter of msg Write down each coded letter 7
8 Turing Machine Mathematical model of a device that can perform any computation Alan Turing (1937) ability to read/write symbols on an infinite tape state transitions, based on current state and symbol Every computation can be performed by some Turing machine. (Turings thesis) T add a,ba+b Turing machine that adds T mul a,bab Turing machine that multiplies
9 Universal Turing Machine Turing described a Turing machine that could implement all other Turing machines. inputs: data, plus a description of computation (Turing machine) U a,b,c c(a+b) Universal Turing Machine T add, T mul U is programmable so is a computer! instructions are part of the input data a computer can emulate a Universal Turing Machine, and vice versa Therefore, a computer is a universal computing device!
10 From Theory to Practice In theory, computer can compute anything thats possible to compute given enough memory and time In practice, solving problems involves computing under constraints. time weather forecast, next frame of animation,... cost cell phone, automotive engine controller,... power cell phone, handheld video game,...
11 Computer System: Layers of Abstraction Software Hardware Application Program Language Instruction Set Architecture (and I/O Interfaces) Microarchitecture Circuits Devices Algorithms
12 Big Idea: Transformations Between Layers How do we solve a problem using a computer? A systematic sequence of transformations between layers of abstraction. Problem Algorithm Program Software Design: choose algorithms and data structures Programming: use language to express design Instr Set Architecture Instr Set Architecture Compiling/Interpreting: convert language to machine instructions
13 Deeper and Deeper Instr Set Architecture Instr Set Architecture Microarch Circuits Processor Design: choose structures to implement ISA Logic/Circuit Design: gates and low-level circuits to implement components Devices Process Engineering & Fabrication: develop and manufacture lowest-level components
14 Descriptions of Each Level Problem Statement stated using "natural language" may be ambiguous, imprecise Algorithm step-by-step procedure, guaranteed to finish definiteness, effective computability, finiteness Program express the algorithm using a computer language high-level language, low-level language Instruction Set Architecture (ISA) specifies the set of instructions the computer can perform data types, addressing mode
15 Descriptions of Each Level (cont.) Microarchitecture detailed organization of a processor implementation different implementations of a single ISA Logic Circuits combine basic operations to realize microarchitecture many different ways to implement a single function (e.g., addition) Devices properties of materials, manufacturability
16 What is a Compiler? A compiler is a program Its input is the text of a program in a particular language, say C The compiler translates the C code into the instruction set understood by the computer The translation is not a line by line transliteration. Optimization.
17 Simple Example From a program we write: sum = x + y + z; How it might look using ISA-defined machine instructions: ADD t1, x, y ADD t2, t1, z MOV sum, t2
18 What is the ISA? ISA = Instruction Set Architecture List of all instructions, or operations, the computer can do Instruction: type of instruction, 0 or more operands Instruction format: What do the instructions look like? Example instruction: 1000 0004 0002 ADD 4 2 Types of instructions: ADD, MULT, LOAD, STORE Types of operands: the data types, addressing modes
19 Levels of computer language User: applications (Word, Excel, Netscape, etc.) High-level: Java, C++, C (sort of medium-level) Low-level: Assembly language (human- readable machine language) ISA: instruction set, addressing modes of a specific line of computers Microarchitecture: bit settings that activate specific data flows Hardware: understands voltages Machine Independent Machine Dependent
Moore's Law (1967) Noted that the number of transistors per unit area had doubled every year from 1958 to 1965 Expected the trend to last for at least ten years Gordon Moore Co-founder of Intel Often misquoted as the speed will double every 18 months Often misquoted as the speed will double every 18 months
Number of Transistors over Time 10 GHz 1 GHz 100 MHz 10 MHz 1 MHz
Processor vs. Memory Speed over Time 10 GHz 1 GHz 100 MHz 10 MHz 1 MHz
Whats the State-of-the-Art? Fastest commercially available CPU: ~5GHz Fastest experimental CPU: 500Ghz Need to cool it down to 4K, though Fastest theoretical transistor: 1THz
The End of Moores Law? Production limitations Physical limitations Bottleneck issues Market issues
1940s Electromagnetic Relays pre-1940s Mechanical 1950s Vacuum Tubes 1960s Transistors since 1970s Integrated Circuits Quantum Computers? The Future