CSCI 341: Computer Organization

Winter/Spring 2011

Lectures

May 2: Lecture 38, Multi-Core Parallelism, Memory, I/O

You should have completed Reading 31 and Project 8.

What are the challenges in creating programs that execute on multiple processors?

What is memory-mapped I/O?

In what way is memory a hierarchy?

Assignment: Reading 32 and begin the final exam programming assignment.

Apr 29: No Class

You should have completed Reading 31 and be working on Project 8.

Assignment: Finish Project 8.

Apr 27: Lecture 37, Instruction-Level Parallelism

You should have completed Reading 30 and be working on Project 8.

What is instruction-level parallelism?

What complications arise due to instruction-level parallelism?

Assignment: Reading 31 and continue Project 8.

Apr 25: Lecture 36, Hazards, Exceptions and Assembly

You should have reviewed the diagrams in 4.6.

How are data and control hazards handled in a pipelined architecture?

Assignment: Reading 30 and Project 8.

Apr 22: Lecture 35, Pipelined Datapath & Control

How do instructions exhibit their control at each stage of the pipeline?

Assignment: Review chapter 4.6 diagrams, trace the path of an R-Type, I-Type and Branch instruction through the pipeline.

Apr 20: No Class

You should have finished Reading 29.

Assignment: Review Reading 29.

Apr 18: Lecture 34, Pipelined Datapath & Control

You should have finished Project 7.

How many stages are in the MIPS pipeline?

What does each stage represent?

What are the pipeline registers for?

Assignment: Complete Reading 29.

Apr 15: Lecture 33, MIPS Datapath Review

You should have finished Reading 28 and be working on Project 7.

In-class pop quiz: understanding the datapath

Assignment: Finish Project 7.

Apr 13: Lecture 32, Pipelining & Hazards

You should have finished Reading 27 and be working on Project 7.

What does doing the laundry have to do with pipelining?

What are some pipelining hazards?

What is a "bubble?"

Assignment: Reading 28 and continue Project 7.

Apr 11: Lecture 31, Control

You should have finished Reading 25 and Project 6.

What is a "control unit?"

How do the funct bits of an instruction influence the control unit?

How might the control unit execute an R-type instruction?

How might the control unit execute an I-type instruction?

How might the control unit carry out a branch instruction? (high-level)

What is the problem with single-cycle instructions?

Assignment: Reading 27 and Project 7.

Apr 8: Lecture 30, Building a Datapath

You should have finished Reading 25 and be working on Project 6.

What is a datapath?

How does the PC work?

How is it that the bits of an instruction "cause" the hardware to act a certain way?

How might the hardware carry out an R-type instruction? (high-level)

How might the hardware carry out an I-type instruction? (high-level)

How might the hardware carry out an branch instruction? (high-level)

Assignment: Reading 26 and continue/finish Project 6.

Apr 6: Lecture 29, Intro to Datapaths, State/Sequential Logic

You should have finished Reading 24 and be working on Project 6.

What do we mean by "datapath?"

What is a "bus?"

What is a "combinatorial" or "combinational" logic component?

What is a "sequential" or "state" logic component?

What does it mean to be "edge-triggered?"

What is a flip-flop and how does it work?

Assignment: Reading 25 and continue/finish Project 6.

Apr 4: Lecture 28, Dynamically Linked Libraries, Fallacies & Pitfalls

You should have finished Project 5 and read sections 2.10 & 2.11.

What are the four steps toward executing a program on a hardware platform?

What is static linking?

What is dynamic linking?

What are DLLs?

What are some common fallacies & pitfalls regarding hardware ISAs?

What kinds of instructions are most common in typical programs?

Assignment: Reading 24 and Project 6.

Mar 30: Lecture 27, ASCII, Unicode, Addressing Modes

You should be working on Project 5.

What is ASCII and how is it used?

What are some limitations of the ASCII standard?

What is Unicode? How does it work?

Why should we generally use unsigned instructions when working with character data?

How can an I-type instruction accept constants that don't fit into 16 bits?

What does the "load upper" instruction do?

What is one use of the $at register?

What are the different addressing modes available in the MIPS ISA?

Assignment: Read sections 2.10 & 2.11, and finish Project 5.

Mar 28: Lecture 26, Code Review: !esreveR

You should have finished Project 4.

What do the lb and sb instructions do?

How do you use the .space directive to allocate memory?

Solution review of Project 4, !esreveR.

Assignment: Project 5.

Mar 25: Lecture 25, Nested FUNctions & Stack Frames

You should have finished Reading 21 and be working on Project 4.

What are nested functions?

What is a recursive function?

What do we need to preserve across function calls?

What is a stack frame? How is one used?

How do we keep track of static data?

How do we keep track of dynamic data?

Assignment: Reading 22 and finish Project 4.

Mar 23: Lecture 24, FUNctions

You should have reviewed Reading 19 and Reading 20 and started Project 4.

How do push, pop and the stack pointer work according to MIPS convention?

How do high-level functions become implemented at the assembly language level?

What is the real purpose of all of the registers in MIPS?

What are leaf functions?

How might you implement a leaf function in MIPS? (example)

Assignment: Reading 21 and continue Project 4.

Mar 21: Lecture 23, Midterm Review, Programs in Memory, the Stack

You should have had a good spring break.

Midterms returned and review.

How do programs get structured in memory?

What is the stack?

What is a stack pointer?

Assignment: Project 4 and review Reading 19 and Reading 20.

Mar 11: Midterm Exam Party

You should have studied for the midterm.

How might you ace the midterm?

Assignment: No homework, yay!

Mar 9: Midterm Review

You should have completed Reading 20 and have begun preparing for the midterm.

How might you ace the midterm?

Assignment: Study for the midterm (per the review guide and practice problems, sent via email).

Mar 7: Lecture 22, Directives, Linkers, Loaders

You should have completed Reading 19.

What do .asciiz and .ascii do?

What is the null character? What does it mean to null-terminate a string?

What does .byte do?

What is a linker, and what are its primary tasks?

What happens when you ask your operating system to "run" a program?

What is the kernel?

How does an operating system execute a program?

Assignment: Reading 20 and study for the midterm.

Mar 4: Lecture 21, Assembly Programming

You should have completed Reading 18.

How does a real assembly process work?

How do multiple files get compiled into an executable?

What is profiling?

How does an assembler work?

Why does an assembler typically take two passes over a program?

What are local symbols? What are global symbols?

What is a symbol table?

What is an object file? How is it structured?

What is stored in each segment of an object file?

Assignment: Reading 19.

Mar 2: Lecture 20, Floating Point Caveats, Assembly Programming

You should have completed Reading 17.

What floating point instructions does MIPS provide?

What are some things to be wary of when working with floating point numbers?

Challenge problem: Macro instructions, assembler directives

Bubblesort review

What is an assembler directive? What are some common assembler directives for MIPS?

What does the .text directive mean?

What does the .data directive mean?

How do these directives affect the object code that is generated?

Assignment: Reading 18.

Feb 28: Lecture 19, IEEE Floating Point Operations

You should have completed Reading 16.

Challenge problem: Decoding binary

What are some "special cases" of values in IEEE 754 floating point?

What is underflow?

Why is precision an important quality of binary floating point numbers?

How do computers handle floating point operations?

What are the general algorithms for floating point addition and multiplication?

What is a "floating point unit?"

What floating point instructions does MIPS provide?

Assignment: Reading 17.

Feb 25: Lecture 18, IEEE Floating Point

You should have completed Reading 15.

Challenge problem: Relative performance

What is the IEEE Floating Point standard?

How do we encode single-precision floating point numbers?

How do we decode floating point numbers?

Why is precision an important quality of binary floating point numbers?

Assignment: Reading 16.

Feb 23: Lecture 17, Multiplication, Division, Floating Point

You should have completed Reading 14.

Challenge problem: Multiplcation cycles

Multiplication review

How does computer division work?

What is normalized scientific notation?

What is BCD? What is it good for? What are some drawbacks?

What is a floating-point number?

What is the IEEE Floating Point standard?

How do we encode single-precision floating point numbers?

Assignment: Reading 15.

Feb 21: No Class, Yay!

You should be working on Reading 14.

Feb 18: Lecture 16, Multiplication, Part II

You should have completed Reading 13.

How might you describe an algorithm for multiplying binary numbers?

What is special about the number of bits needed to store and represent a product?

What is one MIPS assembly instruction for multiplication?

Where is the result of mult stored?

How do you access the high and low registers?

How might you verify the values in high and low?

Assignment: Reading 14.

Feb 16: Lecture 15, Multiplication, Part I

You should have completed Reading 12 and Project 3.

(Pop) Quiz 2

How did we learn to multiply two numbers together in grade school?

What are the "rules" of multiplication with decimal numbers consisting of only 1s and 0's?

What are the "rules" of multiplication with binary numbers?

Assignment: Reading 13 and Problem Set 7.

Feb 14: Lecture 14, Overflow

You should have completed Reading 11 and Project 3.

Challenge problem: performance and Amdahl's law

What are some additional arithmetical operations MIPS must handle?

What is overflow? Why do we care?

Do high-level languages commonly warn you about overflow?

How are some ways you might detect overflow?

How does overflow relate to unsigned numbers?

How does the MIPS architecture detect overflow?

What is an exception? An interrupt?

Assignment: Reading 12 (and finish Project 3).

Feb 11: Lecture 13, Algorithms and the MIPS Instruction Set

You should have completed Reading 10 and Project 2.

What is an algorithm, really?

Why do we care about algorithms?

Why is sorting important in computer science?

What is the bubblesort algorithm?

What is asymptotic notation?

How might you implement bubblesorting in MIPS assembly?

Assignment: Reading 11, Project 3.

Feb 9: Lecture 12, Flow Control / Branching

You should have completed Reading 9 and Problem Set 6.

Challenge problem (endian-ness)

What is a label?

How can I ask the MIPS hardware to process a particular instruction?

How can we ask the MIPS hardware to "make a decision?"

How can we implement "if-else" logic in MIPS assembly?

How can we implement a loop in MIPS assembly?

How can we implement common relative conditions (eg, <=) using just slt, slti, beq, bne?

Assignment: Reading 10, Project 2.

Feb 7: Lecture 11, Logical Operations

You should have completed Reading 8 and Problem Set 5.

Challenge problem (performance)

R-type, I-Type Instruction format review

What are some common logical operations?

What does it mean to shift a number?

What are the assembly language instructions for common logical operations? (<<, >>, &, |, ~)

What is a bit mask?

How might you use a mask to isolate or "extract" certain bits from a word?

Assignment: Reading 9, Problem Set 6.

Feb 4: Lecture 10, Representing Instructions in the Computer

You should have completed Reading 7 and Project 01.

Quiz 1 review.

Can binary codes be used to represent other things besides numeric quantities?

How does MIPS store instructions in memory?

What is the MIPS instruction format?

What are op, rs, rt, rd, shamt, and funct?

What is the hexadecimal number system, and why is it convenient when communicating binary values?

How might you translate a MIPS assembly instruction to machine language?

What is the stored-program concept? (revisited)

Assignment: Reading 8, Problem Set 5.

Feb 2: Lecture 9, Hello MIPS, Signed and Unsigned Binary Numbers

You should have completed Problem Set 4.

How are some ways of creating and running a program for MIPS hardware... without the hardware?

In general, how does an Emulator differ from a Virtual Machine?

Introduction to MARS (MIPS Assembler and Runtime Simulator)

How are numbers represented in a computer?

What is the most significant bit (MSB)? Least significant bit (LSB)?

How might you convert a number from one base to another?

What is the 2's complement system, and why do we use this system of representation in computing?

Why is the hexadecimal system a convenient choice when representing binary values?

Assignment: Reading 7 and Project 1.

Jan 31: Lecture 8, Memory Addresses, Offsets, Byte-Addressing, Endianness, Constants

You should have completed Problem Set 3.

What is byte-addressing?

How does MIPS address bytes? How does this affect assembly offsets?

What is Endianness? Big-Endian? Little-Endian?

Is MIPS Big-Endian or Little-Endian?

Why should an instruction set support constants?

How do you express constants in MIPS assembly?

What is the "add immediate" instruction for?

What is special about $zero?

Assignment: Reading 6 and Problem Set 4.

Jan 28: Lecture 7, Intro to the MIPS Instruction Set, Hardware Opertaions & Operands

You should have completed Reading 5.

What is a multiplexer?

How might you figure out the implementation of a logic gate given only a truth table representing its inputs and outputs?

How might you use Boolean algebra to simplify the implementation of a logic gate?

Does gcc compile a C program directly to machine code, or does it first generate assembly?

What is an instruction set? And how do the supported assembly language instructions of hardware allude to the instruction set architecture of the CPU?

How might C statements be represented as MIPS assembly instructions? (and vice-versa?)

What are registers? How do we reference them in MIPS assembly?

How are arrays stored in memory?

What is meant by the terms base address and offset?

How does the datatype of an array affect the actual address of a piece of data?

How do you retrieve a piece of data from memory and store it in a register?

Assignment:Problem Set 3.

Jan 26: Lecture 6, Intro to Logic Design (Bottom-Up), Fixed-Program Computers, Stored-Program Computers

You should have completed Reading 4.

What is Boolean logic?

Can you implement a circuit that behaves "logically?"

How do computers represent numbers?

What are some properties of binary addition?

Which logic gates' behavior matches the properties of binary sum and carry?

How might you create a binary adding machine?

What is a fixed-program computer?

What is a stored-program computer? (to be continued)

Assignment: Reading 5.

Jan 24: Lecture 5, Power, Parallel Computation, AMD Opteron, Fallacies/Pitfalls

You should have completed Problem Set 2.

Review: components of the classic performance equation.

How do you measure the power consumption of a processor?

Why have manufacturers migrated to multi-core architectures? How does this affect us as software engineers?

Case study: Manufacturing & Benchmarking the AMD Opteron

What is Amdahl's Law?

What are some common fallacies and pitfalls of performance measurement?

What is Boolean logic?

Can you implement a circuit that behaves "logically?"

Assignment: Reading 4.

Jan 21: No class, yay!

You should have completed Reading 3.

Assignment: Problem Set 2.

Jan 19: Lecture 4, Performance, Clocks & Power

You should have completed Reading 2.

Time is the measure of performance, but what kinds of time are there?

What is the computer clock? What are clock cycles? What is the clock rate?

CPU exec time = clock cycles for program x clock cycle time (or cycles for program / clock rate).

How might you measure instruction performance?

What is the classic CPU performance equation?

Why is time the only reliable measure of computer performance?

How does your program algorithm, language, compiler and ISA influence the components of the performance equation?

What is the power wall? Why do we care?

Assignment: Reading 3.

Jan 17: Lecture 3, The World of Hardware Pt. 2, Performance

You should have completed Problem Set 1.

What is meant by "abstraction?" Why are abstractions important?

What are the four main components of every computer?

What is memory? What kinds of memory do we typically see?

What are networks? What is ethernet, a LAN, and a WAN?

Who is Gordon Moore and what is Moore's Law?

How should we think about and measure computing performance?

In-class problem solving: comparing performance between two computers

Assignment: Reading 2.

Jan 14: Lecture 2, The World of Hardware, Pt. 1

You should have completed Reading 1.

What are computers, anyway?

Why are we studying computer organization?

What are the major factors that impact program performance?

How can we "talk" to the machine?

What is assembly language?

What is meant by "abstraction?" Why are abstractions important?

Assignment: Problem Set 1.

Jan 12: Lecture 1, Introduction, History

You should have purchased your textbook and be prepared for class.

Introductions & administrivia.

What do we mean by "computer organization?"

What do we mean by "top-down" vs. "bottom-up?"

Who was John von Neumann? What is the Von Neumann architecture? (to be continued)

Who was Alan Turing? What is a Universal Machine? (to be continued)

Assignment: Reading 1.

SYLLABUS | FORUM | CONTACT


Our challenge: What is a von Neumann architecture? What is a Universal Machine? How do our ideas as high-level programs manifest themselves at the hardware layer? Why should we care? Using the MIPS architecture, we will study at a low level how the computer functions. We will develop assembly language programs using a MIPS simulator. These programs will be used to explore how high-level programming concepts can be realized by a simple instruction set.

"We feel that building and programming a microprocessor is a special rite of passage for engineering and computer science students. The inner workings of the processor seem almost magical to the uninitiated, yet prove to be straightforward when carefully explained. Digital design in itself is a powerful and exciting subject. Assembly language programming unveils the inner language spoken by the processor. Microarchitecture is the link that brings it all together." (Harris xvii)