cs 300 – lecture 2 intro to computer architecture / assembly language history

18
CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Post on 21-Dec-2015

228 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

CS 300 – Lecture 2

Intro to Computer Architecture

/ Assembly Language

History

Page 2: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Help!

190 needs your help! Can you be a TA?

Page 3: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Homework 1

Due next Friday.

Check the wiki.

Page 4: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Stored Programs

The key idea in a computer is to execute arbitrary programs for the user. Computers use "machine language" - language understood by the hardware that controls what the computer does.Different processors have different machine languages.Somehow, all of our programs need to get turned into this machine language.

Page 5: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Instructions

Machine language breaks the computational process into instructions. An instruction is just data (0s and 1s) that is executed.Instructions have two representations:* Binary (in the computer)* Textual (the assembler or textbook)The translation between binary and textual representations is done using an assembler (or disassembler).

Page 6: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Data

Data in an executing program can live in many different places:

* Memory

* Registers

* Disk

* Cache

An instruction mutates this data (the "processor state") in some predefined way

Page 7: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Programming

* Bad old days: Program by rewiring the computer logic

* Early computers: program written in binary

* Back in my day: program written in assembly language

* Low level languages (Fortran, C, Pascal)

* High level languages (Java, Haskell, C#, …)

What's the difference between low and high level languages?

Page 8: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

The "Von Neumann" Computer

John Von Neumann was one of the first to describe in detail the architecture of a computer.Ideas:* Memory to hold data / program* Various "wired-in" functionality (math, for the most part)* Instructions that perform calculations and move data around* A single thread of control (instruction at a time processing)* Instructions for conditional branching

Page 9: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

A Short History of Computer Architecture

1940s and 50s: Simple architectures, based on the "Von Neumann" model. Emphasis was on building hardware capable of carrying out basic math and control.

Programming in assembly language and some primitive high level languages.

Page 10: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

A Short History of Computer Architecture

1960's: Commercialization of computing – the "Mainframe" era. Development of "tricks" in the processor to make execution go faster or programming easier:* Instruction pipelining / Prefetch* Virtual memory / Security issues* MicrocodeHigh level languages began to take over

My first computer!!

Page 11: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

A Short History of Computer Architecture

The 1970s was an area of much architectural diversity as the computing field expanded.

Mini-computers PDP-8, -11, Data General Nova

Super Computers: Cray 1

Unusual mainframes: B6700

Page 12: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Seymour Cray

Cray was one of the true geniusesof computer architectureStudying his machines reveals an essential simplicity that is missing from many current architectures.Cray died in a traffic accident in Colorado Springs in 1996.Burton Smith carried Cray's legacyon after his death.

Page 13: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

A Short History of Computer Architecture

1980's: the RISC vs CISC debatePatterson postulated that it would be easier to optimize execution if the instruction language is simplified. He demonstrated a processor (RISC-1) that outperformed current CPUs using ¼ the transistors.This led to SPARC and a host of other chip designs.VLSI begins to take over.C becomes the language of choice for low level programming.

Page 14: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

A Short History of Computer Architecture

1990s:* Increasing clock speed* Dominance of Intel / Pentium* multi-processor architectures* memory concerns* networking* Embedded systems becomes a big market

Page 15: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

A Short History of Computer Architecture

Architecture today:* clock speed limitations hit* power issues become more critical* parallel processing / Multicore chips* embedded systems are everywhere* more special purpose processors* pervasive use of computing* Custom chips become cheaper and cheaper* Devices like FPGAs sit between hardware and software

Page 16: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

About This Course

Why are we here?* Systems are composed of both "hard" and "soft" components. We need to understand what "hard" components can do* Hardware is fundamentally different from software: it is inherently parallel. We'll learn about exploiting parallelism in computation* All "soft" programs are executed on hardware – we can't understand how a program performs without knowing a lot about hardware* Many issues in hardware design are also present in software systems

Page 17: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

Starting at the Bottom

We're going to go bottom up through this material. So we'll start with logic gates and start working our way up.

Gates use electrons (voltage) to represent information. Low = 0, High = 1. We can use a probe (light) to see the current state of the voltage in a circuit.

Page 18: CS 300 – Lecture 2 Intro to Computer Architecture / Assembly Language History

How Logic Gates Work

A gate has “inputs” and “outputs” (wires). The outputs are determined by the inputs.

For a relay: input is voltage on the coil, outputs are connections between terminals

Transistors are similar except a lot smallerKey characteristics:• Delay: how soon the output has the “right”

answer• Power dissipation: how much heat is generated• Size: how much silicon is needed on the chip