You are on page 1of 3

COE 301

Tentative Lecture/Lab Breakdown

Week Lectures Lab


Part I: Assembly Language Programming
Introduction to computer organization, high-level, assembly, and
1 machine languages. Components of a computer system.
No Lab

Memory Hierarchy, Fetch-Execute Cycle. Technology Lab 1/2: Introduction to MIPS Assembly Language Programming (MARS)
Improvements. Introduction to assembly language programming,
 Information about the lab
instructions, registers, assembly language statements, directives,
2  MARS tutorial: Editor, Assembler, Debugger
text, data, and stack segments. Defining data, arrays, and strings.
 Register and Memory
Memory alignment, byte ordering, and symbol table. System calls,
console input, and output.  Introduction to system calls. Hello world program
Lab 3: Integer Arithmetic
Integer storage sizes, review of binary addition and subtraction,
carry and overflow.  Integer addition & subtraction
MIPS instruction set architecture, instruction formats, R-type  Shift and rotate
3 integer arithmetic, logic, and shift instructions, immediate  Bitwise logic instructions
operands, I-type arithmetic and logic instructions, pseudo-  Convert character to integer
instructions.  Simple loop: e.g. count the number of 1’s in a register.
 Tracing program execution and breakpoints
Lab 4: Flow Control and 1D arrays (Quiz 1)
MIPS Integer multiply and divide instructions.  Defining data, strings, and arrays
Control flow, branch and jump instructions, translating if-else  Viewing variables in memory
4 statements and logical expressions. Compare instructions and  1D-Array traversal
conditional-move instructions.  Searching an array
 Finding min and max
 Generate a sequence of random numbers and save in an array.
Arrays, allocating arrays statically in the data segment and
Lab 5: 2D Arrays and Files
dynamically on the heap, computing the memory addresses of
5 array elements.  Indexing 2D arrays
Load and store instructions.  Pointers versus indexing
Loops and use of pointers to traverse arrays.  Reading a text file
Addressing modes, jump, and branch limits.  Application: reading an image from a file and dealing with images

Defining functions (procedures) in assembly language, function


calls, and return instructions. Passing arguments by value and by Lab 6: Procedure and Stack (Quiz 2)
reference in registers, and the return address register.
The stack segment, allocating and freeing stack frames, leaf versus  Stack pointer and frame pointer
non-leaf functions, and preserving registers across function calls.  Writing procedures
6
Allocating and referencing a local array on the stack. Bubble Sort  Application: Sorting procedure
example and its translation into assembly code. Recursive  Application: recursive function
functions, translating recursive functions into assembly language.
Lab 8: Floating-Point Part 1
Floating point representation, IEEE 754 standard, de-normalized  Coprocessor 1
7
numbers, zero, infinity, NaN.  Floating-point registers
FP comparison, FP addition, FP multiplication. Rounding and  Floating-point instructions
accurate arithmetic.  Example: matrix multiplication

Lab 8: Floating-Point Part 2 (Quiz 3)


MIPS floating-point instructions: load/store, arithmetic, data
8 movement, convert, compare, branch, FP system calls. Floating-  Special functions: exp(x), sin(x) using Taylor Series
point programs. Example on Matrix Multiplication.  Dichotomy, Integrals …
 A brief introduction to Exceptions and I/O with an example (Lab 7)
Part II: CPU Design
Lab 10: Introducing the Logisim Tool
Designing a processor, register transfer level, datapath  Review logic design
9 components, clocking methodology, single-cycle datapath,  Design Adder/Subtractor
implementing a register file, and multifunction ALU.  Design Shifter
 Completing the ALU
 Testing the ALU
Lab 11: Building the Main Datapath Components (Quiz 4)
 Multiported Register File
Control signals and control unit, ALU control, single-cycle delay  Instruction and data memories
10 analysis, and clock cycle.  Building the datapath
 Connecting Register File to ALU
 Testing components
Lab 12: Single Cycle Datapath
CPU performance and metrics, CPI of a multi-cycle processor,
performance equation, performance comparison of a single-cycle  Complete single-cycle datapath
11 versus a multi-cycle processor.  Next PC logic
Amdahl’s law, energy, and power consumption, benchmarks, and  Control logic
performance of recent processors.  Clocking
 Testing the complete datapath
Lab 13: Pipelined CPU Design with Data Forwarding (Quiz 5)
Pipelining versus serial execution, timing diagrams, MIPS 5-stage
 Pipelined datapath
12 pipeline, pipelined datapath, pipelined control, pipeline
 Pipelined control: Hazards, …etc.
performance
 Testing components
Lab 14: Pipelined CPU Design with Stall Capability
Pipeline hazards: structural, data, and control hazards, load delay,
 Pipelined Next PC logic
13 hazard detection, stall and forwarding unit, delayed branching, and
 Clocking
branch prediction.
 Testing the pipelined datapath

Main memory organization, SRAM vs DRAM storage cells, Lab 15: Project Submission
DRAM refresh cycles, latency and bandwidth, trends in DRAMs,
memory hierarchy, cache memory, and locality of reference.  Completing project
14 Cache memory organization: direct-mapped, fully-associative, and  Submitting report + presentation
set-associative caches, handling cache miss, write policy, write  Presenting work + Demo
buffer, and replacement policy.  Questions & answers

Cache performance, memory stall cycles, and average memory Lab 15: Project Submission
15 access time. Introduction to multi-level caches, and multi-level
cache performance.  Final Quiz (Quiz 6)

You might also like