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.
You should have completed Reading 31 and be working on Project 8.
Assignment: Finish Project 8.
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.
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.
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.
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.
You should have finished Reading 28 and be working on Project 7.
In-class pop quiz: understanding the datapath
Assignment: Finish Project 7.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
You should have studied for the midterm.
How might you ace the midterm?
Assignment: No homework, yay!
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).
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.
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.
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.
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.
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.
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.
You should be working on Reading 14.
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.
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.
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).
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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)
