+ All Categories
Home > Documents > Computer Systems Overview

Computer Systems Overview

Date post: 24-Feb-2016
Category:
Upload: damien
View: 37 times
Download: 0 times
Share this document with a friend
Description:
Computer Systems Overview. CS 105 “Tour of the Black Holes of Computing!”. Topics: Staff, text, and policies Lecture topics and assignments Lab rationale. Geoff Kuenning Fall 2006. overview.ppt. CS 105. Textbooks. Randal E. Bryant and David R. O’Hallaron, - PowerPoint PPT Presentation
35
Computer Systems Overview Topics: Topics: Staff, text, and policies Lecture topics and assignments Lab rationale CS 105 overview.ppt CS 105 “Tour of the Black Holes of Computing!” Geoff Kuenning Fall 2006
Transcript
Page 1: Computer Systems Overview

Computer SystemsOverview

Topics:Topics: Staff, text, and policies Lecture topics and assignments Lab rationale

CS 105overview.ppt

CS 105“Tour of the Black Holes of Computing!”

Geoff KuenningFall 2006

Page 2: Computer Systems Overview

– 2 – CS 105

TextbooksRandal E. Bryant and David R. O’Hallaron, Randal E. Bryant and David R. O’Hallaron,

“Computer Systems: A Programmer’s Perspective”, Prentice Hall 2003.

Brian Kernighan and Dennis Ritchie, Brian Kernighan and Dennis Ritchie, “The C Programming Language, Second Edition”, Prentice Hall, 1988

Larry Miller and Alex QuiliciLarry Miller and Alex Quilici The Joy of C, Wiley, 1997

Page 3: Computer Systems Overview

– 3 – CS 105

Syllabus

Syllabus on Web Calendar defines due dates Labs - cs105submit for some, others have specific directions

Page 4: Computer Systems Overview

– 4 – CS 105

Course ComponentsLecturesLectures

Higher-level concepts

Problems and QuizzesProblems and Quizzes Applied concepts, important tools and skills for labs, clarification of lectures, exam coverage

LabsLabs The heart of the course 1 or 2 weeks Provide in-depth understanding of an aspect of systems

Programming and measurement Time to learn, avoid trying to optimize Teams of two

Page 5: Computer Systems Overview

– 5 – CS 105

Notes:Work groupsWork groups

You must work in pairs on all labs Honor-code violation to work without your partner!

HandinsHandins Check calendar. Electronic submissions only.

Appealing gradesAppealing grades Labs - Talk to the lead person on the assignment.

Grading CharacteristicsGrading Characteristics Lab scores tend to be high

Serious handicap if you don’t hand a lab in Tests & quizzes typically have a wider range of scores

I.e., they’re primary determinant of your grade

Page 6: Computer Systems Overview

– 6 – CS 105

CheatingWhat is cheating?What is cheating?

Sharing code: either by copying (web search, etc), retyping, looking at, or supplying a copy of a file.

What is NOT cheating?What is NOT cheating? Helping others use systems or tools. Helping others with high-level design issues. Helping others debug their code.

Page 7: Computer Systems Overview

– 7 – CS 105

FacilitiesAssignments will use Intel Computer Assignments will use Intel Computer SystemsSystems Wilkes - X86, Linux Directories cross-mounted, so you must create an X86 worldEasy way: subdirectory for this classFancy way: put $HOME/bin/$ARCH in path

Page 8: Computer Systems Overview

– 8 – CS 105

Programs and Data

TopicsTopics Bit operations, arithmetic, assembly language programs, representation of C control and data structures

Includes aspects of computer architecture and compilers

AssignmentsAssignments L1: Manipulating bits L2: Debugger L3: Defusing a binary bomb L4: Cracking with a buffer overflow

Page 9: Computer Systems Overview

– 9 – CS 105

Performance

TopicsTopics High-level processor models Compiler optimizations Helping the compiler Includes aspects of architecture, compilers, and OS

AssignmentsAssignments No specific lab

Page 10: Computer Systems Overview

– 10 – CS 105

The Memory Hierarchy, Caching, VM

TopicsTopics Memory technology, memory hierarchy, caches, disks, locality

Virtual memory, address translation Dynamic storage allocation

AssignmentsAssignments L5: Memory allocator

Page 11: Computer Systems Overview

– 11 – CS 105

Linking and Exceptions Topics - OverviewTopics - Overview

Object files, static and dynamic linking, libraries, loading

Hardware exceptions, Unix signals, non-local jumps Includes aspects of compilers, OS, and architecture

AssignmentsAssignments No specific lab

Page 12: Computer Systems Overview

– 12 – CS 105

Processes and Concurrency TopicsTopics

Process creation, process hierarchy, shared memory between processes

Semaphores, critical sections Threads

AssignmentsAssignments L6: Threads

Page 13: Computer Systems Overview

– 13 – CS 105

I/O, Networking

TopicsTopics High level and low-level I/O, network programming, Internet services, Web servers

Includes aspects of networking, OS, and architecture.

AssignmentsAssignments No specific lab

Page 14: Computer Systems Overview

– 14 – CS 105

Lab Rationale Each lab has a well-defined goal such as solving a Each lab has a well-defined goal such as solving a

puzzle or winning a contest. puzzle or winning a contest. Defusing a binary bomb Winning a performance contest

Doing a lab should result in new skills and conceptsDoing a lab should result in new skills and concepts Data Lab: computer arithmetic, digital logic Bomb Labs: assembly language, using a debugger, understanding the stack

Threads Lab: Concurrency Sockets Lab: Intercomputer communication

We try to use competition in a fun and healthy way.We try to use competition in a fun and healthy way. Set a threshold for full credit Post intermediate results (anonymized) on Web page for glory!

Page 15: Computer Systems Overview

– 15 – CS 105

Good Luck!

Page 16: Computer Systems Overview

– 16 – CS 105

Introduction to Computer Systems

Topics:Topics: Theme Five great realities of computer systems

How this fits within CS curriculum

intro.ppt

CS 105“Tour of the Black Holes of Computing”

Geoff Kuenning

Fall, 2006

Page 17: Computer Systems Overview

– 17 – CS 105

Course Theme Abstraction is good, but don’t forget reality!

Many CS Courses emphasize abstractionMany CS Courses emphasize abstraction Abstract data types Asymptotic analysis

These abstractions have limitsThese abstractions have limits Especially in the presence of bugs Need to understand underlying implementations

Useful outcomesUseful outcomes Become more effective programmers

Able to find and eliminate bugs efficientlyAble to tune program performance

Prepare for later “systems” classes in CSCompilers, Operating Systems, Networks, Computer Architecture, Robotics, etc.

Page 18: Computer Systems Overview

– 18 – CS 105

Great Reality #1Ints are not Integers, Floats are not Ints are not Integers, Floats are not

Reals !!Reals !!

ExamplesExamples Is x2 ≥ 0?

Floats: Yes!Ints:

» 40000 * 40000 --> 1600000000» 50000 * 50000 --> ??

Is (x + y) + z = x + (y + z)?Unsigned & Signed Ints: Yes!Floats:

» (1e20 + -1e20) + 3.14 --> 3.14» 1e20 + (-1e20 + 3.14) --> ??

Page 19: Computer Systems Overview

– 19 – CS 105

Computer ArithmeticDoes not generate random valuesDoes not generate random values

Arithmetic operations have important mathematical properties…BUT

Cannot assume “usual” propertiesCannot assume “usual” properties Due to finiteness of representations Integer operations satisfy “ring” properties

Commutativity, associativity, distributivity Floating-point operations satisfy “ordering” properties

Monotonicity, values of signs

ObservationObservation Need to understand which abstractions apply in which contexts

Important issues for compiler writers and serious application programmers

Page 20: Computer Systems Overview

– 20 – CS 105

Great Reality #2You’ve got to know assemblyYou’ve got to know assembly

Chances are, you’ll never program in Chances are, you’ll never program in assembly…Cassembly…C Compilers are much better & more patient than you are

Understanding assembly key to machine-level Understanding assembly key to machine-level execution modelexecution model Behavior of programs in presence of bugs

High-level language model breaks down Tuning program performance

Understanding sources of program inefficiency Implementing system software

Compiler has machine code as targetOperating systems must manage process state

Page 21: Computer Systems Overview

– 21 – CS 105

Assembly Code ExampleTime Stamp CounterTime Stamp Counter

Special 64-bit register in Intel-compatible machines

Incremented every clock cycle Read with rdtsc instruction

ApplicationApplication Measure time required by procedure

In units of clock cycles…NOT instructionsdouble t;start_counter(); ---need to access regP();t = get_counter(); ---need to access regprintf("P required %f clock cycles\n", t);

Page 22: Computer Systems Overview

– 22 – CS 105

Code to Read Counter Write small amount of assembly code using GCC’s asm facility

Inserts assembly code into machine code generated by compilerstatic unsigned cyc_hi = 0;static unsigned cyc_lo = 0;

/* Set *hi and *lo to the high and low order bits of the cycle counter. */void access_counter(unsigned *hi, unsigned *lo){ asm("rdtsc; movl %edx,%0; movl %eax,%1"

: "=r" (*hi), "=r" (*lo) :: "%edx", "%eax");

}

Page 23: Computer Systems Overview

– 23 – CS 105

Code to Read Counter/* Record the current value of the cycle counter. */void start_counter(){ access_counter(&cyc_hi, &cyc_lo);}

/* Number of cycles since the last call to start_counter. */double get_counter(){ unsigned ncyc_hi, ncyc_lo; unsigned hi, lo, borrow; /* Get cycle counter */ access_counter(&ncyc_hi, &ncyc_lo); /* Do double precision subtraction */ lo = ncyc_lo - cyc_lo; borrow = lo > ncyc_lo; hi = ncyc_hi - cyc_hi - borrow; return (double) hi * (1 << 30) * 4 + lo;}

Page 24: Computer Systems Overview

– 24 – CS 105

Measuring TimeTrickier than it Might LookTrickier than it Might Look

Many sources of variation

ExampleExample Sum integers from 1 to n

n Cycles Cycles/n100 961 9.61

1,000 8,407 8.411,000 8,426 8.4310,000 82,861 8.2910,000 82,876 8.29

1,000,000 8,419,907 8.421,000,000 8,425,181 8.43

1,000,000,000 8,371,305,591 8.37

Page 25: Computer Systems Overview

– 25 – CS 105

Great Reality #3Memory MattersMemory Matters

Memory is not unboundedMemory is not unbounded It must be allocated and managed Many applications are memory-dominated

Memory-referencing bugs especially perniciousMemory-referencing bugs especially pernicious Effects are distant in both time and space - SegFault

Memory performance is not uniformMemory performance is not uniform Cache and virtual-memory effects can greatly affect program performance

Adapting program to characteristics of memory system can lead to major speed improvements

Page 26: Computer Systems Overview

– 26 – CS 105

Memory Referencing Bug Example

main (){ long int a[2]; double d = 3.14; a[2] = 1073741824; /* Out of bounds reference */ printf("d = %.15g\n", d); exit(0);}

Alpha MIPS x86-g 5.30498947741318e-315 3.1399998664856 3.14

-O 3.14 3.14 3.14

(x86 version gives correct result, but implementing it as a separate function gives a segmentation fault!)

Page 27: Computer Systems Overview

– 27 – CS 105

Memory Referencing ErrorsC and C++ do not provide any memory protectionC and C++ do not provide any memory protection

Out-of-bounds array references Invalid pointer values Abuses of malloc/free

Can lead to nasty bugsCan lead to nasty bugs Whether or not bug has any effect depends on system and compiler

Action at a distanceCorrupted object logically unrelated to one being accessedEffect of bug may be first observed long after it is generated

How can I deal with this?How can I deal with this? Program in Java, Lisp, or ML Understand what possible interactions may occur Use or develop tools to detect referencing errors

Page 28: Computer Systems Overview

– 28 – CS 105

Memory Performance ExampleImplementations of Matrix MultiplicationImplementations of Matrix Multiplication

Multiple ways to nest loops

/* ijk */for (i=0; i<n; i++) { for (j=0; j<n; j++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum; }}

/* jik */for (j=0; j<n; j++) { for (i=0; i<n; i++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum; }}

Page 29: Computer Systems Overview

– 29 – CS 105

0

20

40

60

80

100

120

140

160

matrix size (n)

ijkikjjikjkikijkji

Matmult Performance (Alpha 21164)

Too big for L1 Cache Too big for L2 Cache

Page 30: Computer Systems Overview

– 30 – CS 105

Blocked matmult perf (Alpha 21164)

0

20

40

60

80

100

120

140

160

50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500matrix size (n)

bijkbikjijkikj

Page 31: Computer Systems Overview

– 31 – CS 105

Great Reality #4There’s more to performance than asymptotic There’s more to performance than asymptotic

complexity !!!complexity !!!Constant factors matter too!Constant factors matter too!

Easily see 10:1 performance range depending on how code written

Must optimize at multiple levels: algorithm, data representations, procedures, and loops

Must understand system to optimize Must understand system to optimize performanceperformance How programs compiled and executed How to measure program performance and identify bottlenecks

How to improve performance without destroying code modularity and generality

Page 32: Computer Systems Overview

– 32 – CS 105

Great Reality #5Computers do more than execute programsComputers do more than execute programs

They need to get data in and outThey need to get data in and out I/O system critical to program reliability and performance

They communicate with each other over They communicate with each other over networksnetworks Many system-level issues arise in presence of network

Concurrent operations by autonomous processesCoping with unreliable mediaCross-platform compatibilityComplex performance issues

Page 33: Computer Systems Overview

– 33 – CS 105

Role within Curriculum

Transition from Abstract Transition from Abstract to Concrete!to Concrete! From: high-level language model

To: underlying implementation

CS 70C++ &

Structures

CS 105Systems

CS 134 OperatingSystems

CS 132Compilers

ProcessesMem. Mgmt

Machine CodeOptimization

Data StructuresApplicationsProgramming

CS 125Networks

NetworkProtocols

CS 156Parallel

CS 136Advanced Arch

Exec. ModelMemory System

CS 60Principles of CS

Page 34: Computer Systems Overview

– 34 – CS 105

Course PerspectiveMost systems courses are builder-centricMost systems courses are builder-centric

Computer ArchitectureDesign pipelined processor in Verilog

Operating SystemsImplement large portions of operating system

CompilersWrite compiler for simple language

NetworkingImplement and simulate network protocols

Page 35: Computer Systems Overview

– 35 – CS 105

Course Perspective (Cont.)This course is programmer-centricThis course is programmer-centric

Purpose is to show how by knowing more about the underlying system, one can be more effective as a programmer

Enable you toWrite programs that are more reliable and efficientIncorporate features that require hooks into OS

» E.g., concurrency, signal handlers Not just a course for dedicated hackers

Though we bring out the hidden hacker in everyone Cover material in this course that you won’t see elsewhere


Recommended