Lecture 1. Course introduction:
The importance of computer organization, background and computer abstraction
Lab 1. Practice on MIPS simulator (QtSpim, Mars), assembly and run a MIPS demo
Lecture 2. Computer System Performance: Performance metric, Power wall, the switch from single processors to multi
processors
Lab 2. Practice on the load and store and arithmetic instruction.
Lecture 3. Instruction Set Architecture 1:
Instruction set architecture, instructions, basic concepts
Lab 3. Practice on the data process in MIPS, including big-endian and small-endian, signed and unsigned data,
practice shift and logic instruction.
Lecture 4. Instruction Set Architecture 2:
Control instructions, procedure call/return, MIPS addressing, translating and starting a program, a C sort
example, other popular ISAs
Lab 4. Practice on the branch and jump instruction, practice on switch and loop procession. Practice on the function
and macro, practice the stack and heap
Lecture 5. Arithmetic for computers (Integers):
Addition and subtraction, multiple and division, dealing with overflow
Lab 5. Learn the exception in arithmetic operation, practice how to write an exception handler.
Lecture 6. Arithmetic for computers (floating point numbers):
Addition and subtraction, multiplication and division
Lab 6. Practice on the instruction on float-point data.
Lecture 7. Processor:
Methods for logical design, single-clock CPU design, datapath
Lab 7. Using vivado and minisys to develop board, practice a verilog module.
Lecture 8. An overview of Pipelineing, resource hazards, data hazards, control hazards, MIPS pipeline, pipeline
performance
Lab 8. Design an ALU by using Verilog, design the control unit by Verilog, design the decoding unit by verilog.
Lecture 9. Midterm exam
Lab 9. Project explanation
Lecture 10. Instruction-Level Parallelism and Its Exploitation
Lab 10. Design of a multi-clock CPU with pipeline