1 computer architecture and system softwarecourses.acs.uwinnipeg.ca/2906/lecture01.pdf · computer...

52
Instructor: Rob Bergen Applied Computer Science University of Winnipeg Computer Architecture and System Software Lecture 01: Course Introduction and Overview of Computer Systems 1

Upload: nguyenkhue

Post on 07-Mar-2018

221 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Instructor:

Rob Bergen

Applied Computer Science

University of Winnipeg

Computer Architecture and

System Software Lecture 01: Course Introduction and

Overview of Computer Systems

1

Page 2: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Preliminaries 2

Page 3: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Instructor

Rob Bergen

E-mail: [email protected]

Background:

Medical Physics (Image processing, GPU computing)

3

Page 4: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Website

Check the course website regularly

http://www.acs.uwinnipeg.ca/2906

Updates will be posted weekly

Answers to questions sent by e-mail will be

(anonymously) posted

Course announcements

Syllabus available for download

4

Page 5: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Classroom Procedure

Be on time, and stay until the end

Ask questions anytime

Turn cell phones off (or on silent)

Typically, we will take a break at 7:15 and restart

at 7:30

5

Page 6: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Lecture Format

Lectures will consist of

Slides (available from the course website)

Problems and examples solved in class on the board

Example code will be available for assembly

programming

Possibly some short introductory videos on new

computer architecture/technology (super computers,

quantum computing, etc)

6

Page 7: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Lab Format

Will be led by a demonstrator (Xuqi)

Typically, you will be provided the lab material by

e-mail on Friday morning. You will have until 5pm to

complete the lab

Important: It is very important to attend labs to get

practice with assembly programming. You will not

be successful unless you put the time in.

7

Page 8: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Outline

Course theme

Preliminaries

A Tour of Computing Systems

Information is Bits + Context

Compilation System

Hardware Organization

The Operation System

8

Page 9: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Theme 9

Page 10: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Textbook

R. E. Bryant and D. R. O’Hallaron, Computer Systems: A Programmer’s

Perspective, 3rd Edition, Upper Saddle River, NJ, USA: Pearson/Prentice

Hall, 2011.

Textbook website:

http://csapp.cs.cmu.edu/

(2nd edition OK too)

10

Page 11: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Theme

Most Systems Courses are Builder-Centric

This course is programmer-centric

Purpose to show how by knowing more about the underlying

system, one can be more effective as a programmer

The goal of this course is to give you a programmer-

centric view of the “what is going on under the hood of a

computer system”

Need to understand details of underlying implementations

11

Page 12: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Theme

Enable you to:

Write programs that are more reliable and efficient

Avoid strange numerical errors caused representation of

numbers

Optimize code by using clever tricks that exploit designs of

modern systems

Example: Buffer overflows are sometimes exploited to bypass

network security

12

Page 13: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Class Discussion

What is the difference between int and float data

types?

13

Page 14: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Theme

An int is not an integer, a float is not a real number

Example 1) Is x2 >= 0 ?

float: yes

int: no

40000 * 40000 = 1600000000

50000 * 50000 = ?

Example 2) Is (x + y) + z = x + (y + z) ?

int: yes

float: no

(1e20 + -1e20) + 3.14 = ?

1e20 +(-1e20 + 3.14) = ?

14

Page 15: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Class discussion

What does a compiler do?

15

Page 16: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Theme

You’ve got to know assembly language

Compilers are much better & more patient than you are

But: Understanding assembly is key to machine-level

execution model

Behaviour of programs in presence of bugs

High-level language model breaks down

Tuning program performance

Understand optimizations done/not done by the compiler

Understanding sources of program inefficiency

Implementing system software

Compiler has machine code as target

Operating systems must manage process state

16

Page 17: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Theme

Memory Matters

Memory is not unbounded

It must be allocated and managed

Many applications are memory dominated

Memory referencing bugs are often the most difficult to find

Effects are distant in both time and space

Memory 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

17

Page 18: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Theme

Memory performance example

18

Page 19: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Course Theme

Computers do more than execute programs

They need to get data in and out

I/O system critical to program reliability and performance

They communicate with each other over networks

Many system-level issues arise in presence of network

Concurrent operations by autonomous processes

Coping with unreliable media

Cross platform compatibility

Complex performance issues

19

Page 20: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

A Tour of Computer Systems

Chapter 1 20

Page 21: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Information is bits + context

Example:

What do the numbers below represent ?

21

Page 22: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Information is bits + context

Answer: Depends on the context.

In this case they could represent text

ASCII: American Standard Code for Information Interchange

22

Page 23: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Information is bits + context

All information in a system is represented as a

bunch of bits!

Problem: What do they represent?

For example: 0100 1011

Integer 75

ASCII character K

23

Page 24: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Information is bits + context

Context is determined by:

Computer architecture

Big endian and little endian byte ordering

Operating system

Different OS use different markers to indicate the end of a

line in a text file (CR and LF)

\r\n DOS\Windows

\n for Unix and Unix-like world

Application software

MS Word doc files

24

Page 25: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

C/C++ Program Compilation

Pre-

processor (cpp)

hello.i Compiler (cc1)

hello.s Assembler (as)

hello.o Linker (ld)

hello hello.c

Source

program

(text)

Modified

source

program

(text)

Assembly

program

(text)

Relocatable

object

programs

(binary)

Executable

object

program

(binary)

printf.o

25

Page 26: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Java Compilation Process

See http://en.wikipedia.org/wiki/Java_Virtual_Machine

26

Page 27: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Program Compilation

Important reasons to understand compilation

process:

Optimizing system performance

Why does a loop run faster if we sum into a local variable

instead of an argument that is passed by reference ?

Understanding link-time errors

Avoiding security holes

What are buffer overflow bugs ?

27

Page 28: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Program Execution

How is an executable file executed ?

To answer this question we need to understand the

hardware organization of a typical system

Also need to know the role of the operating system

28

Page 29: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Class Discussion

How is information represented/managed at the

hardware level?

29

Page 30: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

30

Layout of a Real System

Page 31: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Hardware Organization

Main

memory I/O

bridge Bus interface

ALU

Register file

CPU

System bus Memory bus

Disk

controller

Graphics

adapter

USB

controller

Mouse Keyboard Display

Disk

I/O bus Expansion slots for

other devices such

as network adapters

hello executable

stored on disk

PC

(Modelled after the family of Intel Pentium

systems)

31

Page 32: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Running the hello program

Referring to example on p. 9 of the text

Simple “Hello World” program

To run program (majority of details omitted)

Load program into memory

Point PC to main routine of program

CPU executes instructions

32

Page 33: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Main

memory I/O

bridge Bus interface

ALU

Register file

CPU

System bus Memory bus

Disk

controller

Graphics

adapter

USB

controller

Mouse Keyboard Display

Disk

I/O bus Expansion slots for

other devices such

as network adapters

PC

"hello"

User

types

"hello" 33

Page 34: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Main

memory I/O

bridge Bus interface

ALU

Register file

CPU

System bus Memory bus

Disk

controller

Graphics

adapter

USB

controller

Mouse Keyboard Display

Disk

I/O bus Expansion slots for

other devices such

as network adapters

hello executable

stored on disk

PC

hello code

"hello,world\n"

34

Page 35: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Main

memory I/O

bridge Bus interface

ALU

Register file

CPU

System bus Memory bus

Disk

controller

Graphics

adapter

USB

controller

Mouse Keyboard Display

Disk

I/O bus Expansion slots for

other devices such

as network adapters

hello executable

stored on disk

PC

hello code

"hello,world\n"

"hello,world\n"

35

Page 36: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Overhead

Problem: A computer spends a lot of time copying

data

Hello program

Copied from disk to main memory to processor

String “hello, world\n”

Copied from disk to main memory to display device

Overhead slows down real work of processor

Goal: make these copy instructions as fast as possible

36

Page 37: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Storage Devices

Physical law dictate storage device operation

Larger capacity storage devices are slower

Faster devices are more expensive

Examples:

A disk drive (HD) might be 100 x larger than main memory

But, it might take CPU 10,000,000 x longer to read a word from disk than from memory

A register file stores only a few hundred bytes (compared to

millions of bytes in memory)

However, CPU can read data from registers

100 x faster than memory

http://www.mackintoshconsultants.co.uk/images/storage-devices.gif

http://upload.wikimedia.org/wikipedia/commons/8/87/PersonalStorageDevices.agr.jpg

http://upload.wikimedia.org/wikipedia/commons/c/ca/Memory_module_DDRAM_20-03-2006.jpg

37

Page 38: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Storage Hierarchy

Registers

On-chip L1

cache (SRAM)

Main memory

(DRAM)

Local secondary storage

(local disks)

Larger,

slower,

and

cheaper

(per byte)

storage

devices

Remote secondary storage

(distributed file systems, Web servers)

Local disks hold files

retrieved from disks on

remote network servers.

Main memory holds disk

blocks retrieved from local

disks.

Off-chip L2

cache (SRAM)

L1 cache holds cache lines retrieved

from the L2 cache.

CPU registers hold words retrieved from

cache memory.

L2 cache holds cache lines

retrieved from memory.

L0:

L1:

L2:

L3:

L4:

L5:

Smaller,

faster,

and

costlier

(per byte)

storage

devices

38

Page 39: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Storage Hierarchy

Main Idea:

Storage at one level serves as a cache for storage at

the next lower level

Programs can run much faster if the programmer

exploits caches effectively

Problem: How to manage all the different memory

and devices ?

39

Page 40: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Class Discussion

What does an operating system do? What are its

main functions?

40

Page 41: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Operating System

Hello and shell programs did not access the keyboard,

display, disk, or main memory directly

Instead, they relied on services provided by the

Operating System (OS)

OS is a layer of software between application programs

and hardware

All attempts to access the hardware must go through OS

first

Application programs

Processor Main memory I/O devices

Operating system Software

Hardware

41

Page 42: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Operating System

OS has 2 purposes:

Protect the hardware from misuse by applications

Provide applications with simple and uniform mechanisms for

manipulating various complicated low-level hardware

OS achieves both goals via the fundamental abstractions:

Processes

Virtual memory

Files

Processor Main memory I/O devices

Processes

Files

Virtual memory

42

Page 43: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Processes

Operating system provides illusion that program is the

only one running

Appears to:

Have exclusive use of processor, main memory, and I/O

Execute instructions one after the other without interruption

Only program’s code and data reside in memory

Illusions provided by processes

43

Page 44: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Processes

A process is the OS abstraction for a running program

Multiple processes can run concurrently

Concurrently: instructions of one process are interleaved with

instructions of another process

Interleaving is performed by a mechanism called context

switching

Each process appears to have exclusive use of the

hardware

44

Page 45: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Processes

Operating system keeps track of state info. process needs

in order to run

Process state consists of:

Execution: PC and register file

Memory: allocated memory

Devices: files and devices

The CPU state is called the context of the process

Context switch: OS transfers control from current process

to new process

45

Page 46: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Context Switching

Processes share the processor and system resources

OS allocates time

Switches context by

Saving context of current process (PC, register, memory)

Restoring context of previous process (PC, register, memory)

Passing control to new process

46

Page 47: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Threads

Processes with multiple executions

A process can have more than one execution

Each execution is called a thread

Threads execute concurrently as well

Differences:

Process do not share memory

Threads view: it does not have the whole machine to

itself

47

Page 48: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Virtual Memory (VM)

VM: interaction of hw exceptions, hw address translation,

main memory, disk files, and kernel software

Goal: Provide each process with a large, uniform, and

private memory address space

Provides 3 capabilities:

Uses main memory as a cache for an address space stored on

disk (HD)

Simplifies memory management by providing each process

with a uniform address space

Protect address space of each

process from corruption by other

processes

Main memory I/O devices

Virtual memory

48

Page 49: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Files

A file is a sequence of bits.

Every I/O device is modeled as a file

Read/write: disks, networks

Read-only: keyboard, mouse, web-cam

Write-only: video, printer

Advantages:

Uniform interface for varied I/O devices

Abstracts away all the underlying details on how data

read/written

Programs written on one system can be easily ported to

another

49

Page 50: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Networks

Modern systems are often linked to other systems

by networks

Viewed as another I/O device

Akin to reading/writing to a file

50

Page 51: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Remote Execution

Local

telnet

client

Remote

telnet

server

2. Client sends "hello"

string to telnet server 3. Server sends "hello"

string to the shell, which runs the hello program,

and sends the output

to the telnet server 4. Telnet server sends "hello, world\n" string

to client

5. Client prints "hello, world\n"

string on display

1. User types "hello" at the

keyboard

51

Page 52: 1 Computer Architecture and System Softwarecourses.acs.uwinnipeg.ca/2906/Lecture01.pdf · Computer Architecture and System Software ... You’ve got to know assembly language

Lab 1

Bring your textbook/notes. You may not be able to

complete your lab without them.

52