计算机系统:抽象层次

本文主要介绍了计算机系统的基本概念。包括了计算机应用程序、语言、指令集架构、I/o系统等。首先学习了通用计算设备。即所有的计算机,只要有足够的时间和内存,能够计算完全相同的东西。然后学习了通用图灵机的图解,然后把理论运用到实践中去。
展开查看详情

1.Chapter 1 
 Welcome Aboard

2.1- <number> Computer System: Layers of Abstraction Software Hardware Application Program Language Instruction Set Architecture (and I/O Interfaces) Microarchitecture Circuits Devices Algorithms

3.1- <number> Big Idea #1: Universal Computing Device All computers, given enough time and memory, 
 are capable of computing exactly the same things. = = PDA Workstation Supercomputer

4.1- <number> 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. (Turing’s thesis) Tadd a,b a+b Turing machine that adds Tmul a,b ab Turing machine that multiplies For more info about Turing machines, see http://cgi.student.nada.kth.se/cgi-bin/d95-aeh/get/umeng

5.1- <number> 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 Tadd, Tmul 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!

6.1- <number> From Theory to Practice In theory, computer can compute anything that’s 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, ...

7.1- <number> Big Idea #2: 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 Compiling/Interpreting: convert language to 
 machine instructions

8.1- <number> Deeper and Deeper… 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

9.1- <number> 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

10.1- <number> 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

11.1- <number> Many Choices at Each Level Solve a system of equations Gaussian elimination Jacobi iteration Red-black SOR Multigrid FORTRAN C C++ Java Intel x86 Sun SPARC Compaq Alpha Pentium II Pentium III AMD Athlon Ripple-carry adder Carry-lookahead adder CMOS Bipolar GaAs Tradeoffs: cost performance power (etc.)

12.1- <number> Course Outline Bits and Bytes How do we represent information using electrical signals? Digital Logic How do we build circuits to process information? Processor and Instruction Set How do we build a processor out of logic elements? What operations (instructions) will we implement? Assembly Language Programming How do we use processor instructions to implement algorithms? How do we write modular, reusable code? (subroutines) I/O, Traps, and Interrupts How does processor communicate with outside world? C Programming (ECE 209) How do we write programs in C? How does C compare to Java? How do we implement high-level programming constructs?